サービスメッシュ
マイクロサービス間の通信を管理するインフラ層。サービスディスカバリ・負荷分散・認証・暗号化・可観測性をアプリコードを変更せずにサイドカーパターンで実現する。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件を見るIT用語: Ansibleとは|サーバー設定を自動化するIaCツール
エージェント不要でSSHを通じてサーバー設定を自動化するAnsibleのPlaybook構文と活用場面を解説。
Secret
Kubernetesでパスワード・APIキー・TLS証明書などの機密情報を管理するリソース。Base64エンコードで保存され、Podへのマウントや環境変数での参照が可能。本番ではVault等の外部シークレット管理との連携が推奨される。
IT用語: Terraformとは|インフラをコードで管理するIaCツール
AWSやGCPなどのクラウドリソースをコードで定義・管理するTerraformの仕組みとHCL構文を解説。
可観測性(Observability)
システムの内部状態を外部から観察できる能力。メトリクス・ログ・トレースの3本柱で構成され、複雑な分散システムの問題を効率的に特定・解決するための基盤となる。
DevSecOps
DevOpsのプロセスにセキュリティ(Sec)を統合した開発文化。開発・テスト・デプロイの各フェーズにセキュリティチェックを組み込み、安全なシステムを継続的に提供する。SAST・DAST等のツールが活用される。
Chaos Engineering
本番システムに意図的に障害を注入し、システムの回復力(レジリエンシー)を検証する実践手法。Netflixが提唱しChaos Monkeyで有名。「障害は必ず起きる」という前提のもと、弱点を事前に発見する。