分散トレーシング
このドキュメントの目的
分散トレーシングの基本概念を理解し、マイクロサービス環境でのリクエスト追跡がなぜ必要なのかを把握することが目標です。トレース・スパン・コンテキスト伝播の仕組みを学び、サンプリング戦略の選択基準を理解します。
IDサービスを題材にした具体例を使用しますが、設計原則自体はあらゆるSaaSに共通して適用できます。
なぜ分散トレーシングが必要か
モノリスとマイクロサービスの違い
モノリスでのデバッグ:
┌────────────────────────────────────┐
│ モノリスアプリケーション │
│ │
│ リクエスト → 認証 → DB → レスポンス │
│ │
│ → スタックトレースで全処理が見える │
│ → ログも1つのプロセス内で完結 │
└────────────────────────────────────┘
マイクロサービスでのデバッグ:
クライアント
│
▼
┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐
│API │───▶│認証 │───▶│ユーザー │───▶│通知 │
│Gateway │ │サービス │ │サービス │ │サービス │
└────────┘ └────────┘ └────────┘ └────────┘
│ │ │ │
▼ ▼ ▼ ▼
ログA ログB ログC ログD
→ 「どのログが同じリクエストに属するか」が分からない
→ 「どのサービスで遅延が発生しているか」が見えない
→ 「エラーの原因がどのサービスにあるか」が特定困難