マイクロサービスの課題:
- Service Discovery(サービスの発見)
- Fault Isolation(障害の分離)
- Observability(分散トレーシング)
- Security(認証・認可)
サービスメッシュの概念:
すべてのサービスに対して「サイドカープロキシ」を用意し、サービス間のコミュニケーションをすべてサイドカープロキシ経由とすることにより、マイクロサービス固有の課題の解決を行っています。
また、サイドカープロキシを経由し、すべてのサービスがメッシュ状に接続されることから、「サービスメッシュ」と呼ばれています。
Istio:
stioのアーキテクチャは、大きく「Data Plane(データプレーン)」と「Control Plane(コントロールプレーン)」の2つに分けることができます。
Data Plane(データプレーン)では、プロキシによるマイクロサービス間の通信を管理しており、Istio用に拡張された「Envoy」をサイドカープロキシとして、KubernetesのPod内にデプロイしています。
Control Plane(コントロールプレーン)には、以下の3つのコンポーネントが含まれています。
- Mixer
- Pilot
- Citadel
それぞれのコンポーネントの役割は以下の通りです。
- Mixer:サイドカープロキシ(Envoy)から各サービスのデータを収集し、その情報を元にアクセスコントロールを行うコンポーネントです。プラグインモデルを取っており、カスタマイズすることが可能です。
- Pilot:サイドカープロキシ(Envoy)のサービスディスカバリやトラフィック管理を担当するコンポーネントです。例えば、A/Bテスト・カナリーリリースの実現や、タイムアウト・リトライ・サーキットブレーカーなどの手法を用いてFault Isolation(障害の分離)の問題を解決することができます。
- Citadal:サービス間認証とエンドユーザ認証を実現するコンポーネントです。以前は「Istio-Auth」という名称でしたが、バージョン0.8より「Citadel」に名称変更されています。