Skip to content
Latchkey

サービスメッシュとは? ネットワークのロジックをコードから切り離す

サービスメッシュとは、service-to-service の通信、retry、暗号化、observability をアプリケーションコードの外側で処理するインフラ層です。

マイクロサービス群が拡大するにつれ、各サービスは同じネットワーク上の関心事、retry、timeout、mutual TLS、トラフィックのルーティング、メトリクスを再実装することになります。サービスメッシュはそのロジックをコードから取り出し、各サービスの隣に1つずつ配置され中央で制御される sidecar proxy のネットワークに移します。コードは単純な呼び出しを行い、残りはメッシュが処理します。

sidecar がネットワークの仕事をする

各サービスインスタンスの隣で proxy が動き、その inbound と outbound のトラフィックを傍受します。これらの sidecar は control plane によって調整され、サービスに気づかせることなく retry、timeout、暗号化、ルーティングルールを適用します。

コードから何をオフロードするか

  • retry、timeout、circuit breaking。
  • サービス間の mutual TLS。
  • canary と blue-green のロールアウトのためのトラフィックシェーピング。
  • すべての呼び出しに対する統一されたメトリクス、ログ、trace。

なぜ大規模で魅力的なのか

メッシュがなければ、各チームが各言語で回復性とセキュリティを異なる形で実装します。メッシュはこれらの関心事を1か所に標準化するため、挙動が一貫し、ポリシー変更のために何十ものコードベースに触れる必要がなくなります。

CI/CD 上の利点

メッシュはトラフィックを段階的にシフトできるため、canary と progressive deploy をアプリケーションコードではなく設定変更にできます。パイプラインがそれらのロールアウトルールを駆動し、新しいバージョンへトラフィックを増やしていき、メトリクスが悪化すれば自動で rollback します。

それが増やす複雑さ

メッシュは運用・デバッグ・最新維持すべきインフラが増えることを意味します。sidecar はレイテンシとリソース使用を増やし、設定を誤ったメッシュは全トラフィックを壊しかねません。大規模ではその価値を発揮しますが、少数のサービスにはオーバーヘッドです。

sidecar が存在する状態でのテスト

メッシュの挙動、mTLS、retry、ルーティングは、sidecar が動いて初めて現れます。現実的な CI テストはメッシュを立ち上げてポリシーとルーティングを実行するため、素のサービスをテストするより重く、ウォームな runner の恩恵を受けます。

重要なポイント

  • サービスメッシュは、ネットワーク・回復性・セキュリティを sidecar proxy に移す。
  • 多数のサービスにまたがって retry、mTLS、トラフィックのルーティングを標準化する。
  • config 駆動の canary deploy を可能にするが、実運用上の複雑さを確実に増やす。

関連ガイド