エコシステムとツール

Goa を拡張するコンパニオンライブラリ: アーキテクチャ図、分散イベント、観測可能性。

概要

Goa のエコシステムには、マイクロサービス開発で頻出するニーズを満たす コンパニオンライブラリ が含まれます。これらのツールは Goa と自然に連携するように設計されていますが、単体でも利用できます。

コンパニオンライブラリ

ライブラリ用途主な機能
Modelアーキテクチャ図C4 図をコードとして記述、バージョン管理、インタラクティブエディタ
Pulse分散イベントイベントストリーミング、ワーカープール、レプリケートマップ
Clue観測可能性トレーシング、ロギング、メトリクス、ヘルスチェック

Model — コードとしてのアーキテクチャ図

Model は、C4 model を用いてソフトウェアアーキテクチャを記述するための Go DSL を提供します。GUI ツールで図を描く代わりに、アーキテクチャをコードで定義します:

var _ = Design("My System", "System description", func() {
    var System = SoftwareSystem("My System", "Does something useful")
    
    Person("User", "A user of the system", func() {
        Uses(System, "Uses")
    })
    
    Views(func() {
        SystemContextView(System, "Context", "System context diagram", func() {
            AddAll()
            AutoLayout(RankLeftRight)
        })
    })
})

メリット:

  • バージョン管理できるアーキテクチャドキュメント
  • 図の自動生成(SVG, JSON)
  • 位置調整のためのインタラクティブなグラフィカルエディタ
  • API 設計とアーキテクチャ設計を統合する Goa プラグイン

詳しくは: Model Documentation

Pulse — 分散イベント基盤

Pulse は、イベント駆動の分散システムを構築するためのプリミティブを提供します。トランスポートに依存せず、Goa サービスの有無にかかわらず利用できます:

  • ストリーミング: マイクロサービス間の pub/sub ルーティング
  • ワーカープール: ジョブディスパッチのためのコンシステントハッシュ付き専用ワーカー
  • レプリケートマップ: ノード間での最終的整合性を持つ共有状態
// Publish events to a stream
stream.Add(ctx, "user.created", userEvent)

// Subscribe to events
reader.Subscribe(ctx, func(event *Event) error {
    return processEvent(event)
})

ユースケース:

  • 非同期イベント処理
  • バックグラウンドジョブキュー
  • 分散キャッシュ
  • リアルタイム通知

詳しくは: Pulse Documentation

Clue — マイクロサービスの観測可能性

Clue は、OpenTelemetry を基盤にした Goa サービス向けの計測(インストルメンテーション)を提供します。観測可能性の 3 本柱をカバーします:

// Configure OpenTelemetry
cfg := clue.NewConfig(ctx, "myservice", "1.0.0", metricExporter, spanExporter)
clue.ConfigureOpenTelemetry(ctx, cfg)

// Context-based logging
log.Info(ctx, "processing request", log.KV{"user_id", userID})

// Health checks
checker := health.NewChecker(health.NewPinger("db", dbAddr))

機能:

  • 自動スパン伝播を伴う分散トレーシング
  • インテリジェントなバッファリングを備えた構造化ロギング
  • メトリクス収集とエクスポート
  • ヘルスチェックエンドポイント
  • 実行時トラブルシューティング用のデバッグエンドポイント

詳しくは: Clue Documentation

ドキュメントガイド

ガイド説明~トークン
ModelC4 図、DSL リファレンス、mdl CLI~2,500
Pulseストリーミング、ワーカープール、レプリケートマップ~2,200
Clueロギング、トレーシング、メトリクス、ヘルスチェック~2,800

セクション合計: ~7,500 tokens

はじめに

目的に合うライブラリを選んでください:

  • アーキテクチャをドキュメント化したい?Model
  • イベント駆動システムを構築している?Pulse
  • Goa サービスに観測可能性を追加したい?Clue

いずれも go get で取得できます:

go get goa.design/model
go get goa.design/pulse
go get goa.design/clue