サービスメッシュ
マイクロサービス間の通信を管理するインフラ層。サービスディスカバリ・負荷分散・認証・暗号化・可観測性をアプリコードを変更せずにサイドカーパターンで実現する。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件を見るBlue-Green Deployment
ゼロダウンタイムデプロイ戦略の一つ。本番環境(Blue)と新バージョン(Green)を並行して稼働させ、トラフィックを切り替えてデプロイする。問題発生時に即座に切り戻せる。
DAST
Dynamic Application Security Testing(動的アプリケーションセキュリティテスト)の略。実際にアプリを実行しながら外部から攻撃を模倣して脆弱性を検出する手法。OWASP ZAPやBurp Suiteが代表的。
kubectl
Kubernetesクラスタを操作するCLIツール。kubectl get pods・apply・delete等のコマンドでK8sリソースを管理する。クラスター管理者の日常ツールとして欠かせない。
Jenkins
オープンソースのCI/CDサーバー。Groovyベースのパイプライン定義でビルド・テスト・デプロイを自動化できる。プラグインが豊富で高い拡張性を持つ。
GitHub Actions
GitHubに組み込まれたCI/CDプラットフォーム。リポジトリへのプッシュやプルリクエストをトリガーに、ワークフロー(.yml)を自動実行できる。テスト・ビルド・デプロイを一元管理できる。
SLO
Service Level Objective(サービスレベル目標)の略。システムの可用性・応答時間などの目標値を定量的に設定したもの。SRE文化における運用品質の指標。例:月間稼働率99.9%。