サービスメッシュ
マイクロサービス間の通信を管理するインフラ層。サービスディスカバリ・負荷分散・認証・暗号化・可観測性をアプリコードを変更せずにサイドカーパターンで実現する。Istioが代表的。
サービスメッシュとは?
サービスメッシュは、マイクロサービスアーキテクチャにおけるサービス間通信を管理するインフラストラクチャ層です。サービスコードを変更せずに、通信の暗号化・認証・負荷分散・可観測性を実現します。
なぜサービスメッシュが必要か?
マイクロサービスが数十〜数百に増えると、サービス間の通信管理が複雑になります:
- サービスAがサービスBに通信するとき、どこにいるか?
- 通信は暗号化されているか?
- 失敗したらリトライするか?
- どのサービスがボトルネックか?
これらをアプリコードに書くと、全サービスに散乱します。サービスメッシュはこれをインフラ層で一元管理します。
サイドカーパターン
各サービスのPodにEnvoyなどのプロキシ(サイドカー)を自動注入し、全通信をサイドカー経由にします。
[サービスA] ←→ [Envoy Proxy] ←ネットワーク→ [Envoy Proxy] ←→ [サービスB]
代表的なサービスメッシュ
| 製品 | 特徴 |
|---|---|
| Istio | 最もメジャー・機能が豊富・複雑 |
| Linkerd | 軽量・シンプル・Rustで実装 |
| Consul Connect | HashiCorp製・VM環境も対応 |
| AWS App Mesh | AWSネイティブ |
まとめ
サービスメッシュはKubernetes環境でマイクロサービスが10サービスを超えてきた頃から導入を検討する価値があります。ただし複雑性が増すため、必要性を十分に評価してから導入することを推奨します。
関連する用語 (DevOps)
全58件を見るArgoCD
Kubernetesのための宣言的GitOps継続デリバリーツール。Gitリポジトリ上のマニフェストと実際のK8sクラスタの状態を常に同期させる。変更を検知して自動でデプロイする。
APM
Application Performance Monitoring(アプリケーションパフォーマンス監視)の略。アプリの応答時間・エラー率・トランザクションを追跡し、パフォーマンスのボトルネックを特定する監視手法。DatadogやNew R
ConfigMap
Kubernetesで設定値(接続先URLや設定パラメーター等)をコンテナから分離して管理するリソース。環境ごとに異なる設定を外出しにすることで、同一イメージを複数環境で使い回せる。
Chaos Engineering
本番システムに意図的に障害を注入し、システムの回復力(レジリエンシー)を検証する実践手法。Netflixが提唱しChaos Monkeyで有名。「障害は必ず起きる」という前提のもと、弱点を事前に発見する。
ECS
Amazon Elastic Container Serviceの略。AWSが提供するフルマネージドのコンテナオーケストレーションサービス。FargateとEC2の2つの起動タイプがあり、EC2を管理せずにコンテナを実行できる。
Helm
KubernetesのパッケージマネージャーAptやyumのK8s版。Helmチャートと呼ばれるテンプレートで複雑なK8sリソースを一括管理・デプロイできる。バージョン管理やロールバックも容易。