サービスメッシュ
マイクロサービス間の通信を管理するインフラ層。サービスディスカバリ・負荷分散・認証・暗号化・可観測性をアプリコードを変更せずにサイドカーパターンで実現する。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件を見るAnsible
構成管理・プロビジョニング自動化ツール。YAMLで記述したPlaybookをエージェントレスで実行し、サーバーの設定を一元管理できる。インフラの自動化とべき等性の確保が特徴。
DAST
Dynamic Application Security Testing(動的アプリケーションセキュリティテスト)の略。実際にアプリを実行しながら外部から攻撃を模倣して脆弱性を検出する手法。OWASP ZAPやBurp Suiteが代表的。
Docker Compose
複数のDockerコンテナを一括定義・実行するツール。docker-compose.ymlに各サービスの設定を記述し、docker compose upコマンドで全コンテナを起動できる。ローカル開発環境の構築に特に有用。
IT用語: GitOpsとは|Gitをインフラ・デプロイの唯一の真実として使う手法
Gitリポジトリの状態をインフラの望ましい状態として、差分を自動的に本番環境に反映するGitOpsの仕組みを解説。
Helm
KubernetesのパッケージマネージャーAptやyumのK8s版。Helmチャートと呼ばれるテンプレートで複雑なK8sリソースを一括管理・デプロイできる。バージョン管理やロールバックも容易。
ELK Stack
Elasticsearch・Logstash・Kibanaの3ツールの組み合わせ。ログの収集(Logstash)・保存・検索(Elasticsearch)・可視化(Kibana)をセットで提供する定番ログ分析基盤。