サービスメッシュ

マイクロサービス間の通信を透過的に管理するインフラ層で、トラフィック制御・認証・監視を提供する

マイクロサービスインフラ

サービスメッシュとは

サービスメッシュは、マイクロサービス間の通信を透過的に管理するインフラ層である。各サービスにサイドカープロキシを配置し、トラフィック制御、mTLS 認証、オブザーバビリティをアプリケーションコードの変更なしで実現する。Istio、Linkerd、AWS App Mesh が代表例。

なぜ必要か

❌ サービスメッシュなし:
  各サービスにリトライ、サーキットブレーカー、
  mTLS、メトリクス収集のコードを実装

✅ サービスメッシュあり:
  サイドカープロキシが透過的に処理
  アプリケーションはビジネスロジックに集中

アーキテクチャ

サービス A[Envoy Proxy][Envoy Proxy] → サービス B
              (サイドカー)     (サイドカー)
                    ↑               ↑
              コントロールプレーン (Istio / App Mesh)
コンポーネント 役割
データプレーン サイドカープロキシ (Envoy) がトラフィックを処理
コントロールプレーン ルーティングルール、ポリシーを管理

サービスメッシュの機能

サービスメッシュはカナリアデプロイや A/B テストのトラフィック制御、mTLS によるサービス間の暗号化・認証、自動リトライやサーキットブレーカーによる耐障害性、メトリクス・トレース・ログの自動収集によるオブザーバビリティ、サービスごとのレート制限を提供する。

サーバーレスでのサービスメッシュ

Lambda ベースのアーキテクチャでは、従来のサイドカー型サービスメッシュは不要。代わりに:

機能 サーバーレスでの代替
トラフィック制御 API Gateway のステージ、Lambda エイリアス
認証 IAM、Cognito
リトライ Step Functions、SQS
オブザーバビリティ X-Ray、CloudWatch

いつサービスメッシュを使うか

ケース 推奨
ECS/EKS で多数のマイクロサービス ✅ App Mesh
Lambda ベースのサーバーレス ❌ 不要
サービス間の mTLS が必須
サービス数が 5 未満 ❌ 過剰

実務での活用方法は関連書籍にも詳しい。

関連用語