サービスメッシュ(Service mesh)は、マイクロサービスアーキテクチャの中で複数のマイクロサービス間の通信をインフラストラクチャ側で制御するための技術です。
マイクロサービスアーキテクチャは、各機能を独立した小さなサービスに分割し、それらを相互に連携することで大型のアプリケーションを構築します。
しかし、多数のマイクロサービスが相互に通信している場合、その通信制御や追跡が困難になってきます。
このため、サービスメッシュはマイクロサービス間通信制御の透明性を高めるために導入されます。 サービスメッシュは、「sidecar proxy」と呼ばれるコンテナをデプロイし、各マイクロサービスから送信されるすべてのトラフィックをキャプチャして集約する役割を担います。そしてそれらを分析し整理して可視化し、問題を検出したりトラブルシューティングに役立ちます。
また、サービスメッシュは他の多くの機能も提供します。例えば、トラフィック制御やアクセス制限などのセキュリティ機能、負荷分散や冗長性確保などの信頼性向上の機能、監視やログ収集などの運用管理支援の機能などがあります。
そのため、サービスメッシュはマイクロサービスアーキテクチャにおいて不可欠であり、Kubernetesなどのコンテナオーケストレーションツールと一緒に利用されることが多くなっています。そして、クラウドネイティブ技術を取り巻く環境が変容する中で重要度を増しつつあります。