サービスメッシュを利用すると、サービス開発者はネットワーク通信に関する処理を切り離し、ビジネスロジックにより集中できます。

サービスメッシュとは

サービスメッシュは、マイクロサービスアプリケーション向けの構成可能なインフラストラクチャレイヤーです。サービスインスタンス間の通信を柔軟かつ信頼性の高い高速なものにします。また、サービスディスカバリ、負荷分散、暗号化、認証と認可、サーキットブレーカーパターンのサポートなどの機能を提供します。

サービスメッシュは通常、各サービスインスタンスにサイドカーと呼ばれるプロキシインスタンスを配置することで実装されます。サイドカーは、サービス間通信、監視、セキュリティ関連の事項など、個々のサービスから切り離して抽象化できる処理を担います。これにより、開発者はサービス内のアプリケーションコードの開発、サポート、保守を担当し、運用チームはサービスメッシュの保守とアプリケーションの運用を担当できます。

Google、IBM、Lyftが支援するIstioは、現在最も広く知られているサービスメッシュアーキテクチャです。Googleが当初設計したKubernetesは、現在Istioがサポートする唯一のコンテナオーケストレーションフレームワークです。

サービスメッシュに関する動画

マイクロサービスアーキテクチャにおけるサービスメッシュとは

サービスメッシュは、マイクロサービスアーキテクチャの実現に伴う主要な課題の一部に対処します。サービス間のネットワーク機能に多くの時間を費やす代わりに、ビジネスロジックに注力しながら、多様なマイクロサービス実装技術をより柔軟に選択できるようにします。

サービスメッシュとサービスディスカバリ

サービスメッシュは、サービスディスカバリプロトコルと連携し、サービスの起動時にそのサービスを検出します。サービスが停止すると、メッシュはその情報を適切に失効させます。サービスディスカバリは、リクエストを受信できる状態、つまり他のサービスから検出可能な状態にあるインスタンスのリストを維持するコンテナ管理フレームワークです。両者を組み合わせることで、サービス間通信のレジリエンスが向上します。

参考資料