サービスメッシュ【service mesh】

サービスメッシュとは?

マイクロサービス型のシステムを稼働させる際に用いられる、サービス間の通信を一元的に管理・制御する仕組み。アプリケーションとは独立した通信制御用のプログラムを配置し、挙動や設定を一元的に管理する。
サービスメッシュのイメージ画像

大規模なアプリケーションを開発する際、「マイクロサービス」と呼ばれる小さな機能単位に分割して構築する手法が用いられることがある。この構造では、数十から数百のサービスが互いに通信しながら協調して動く。サービスの数が増えるほど、通信の信頼性確保、障害の検知、セキュリティの維持といった課題が積み重なる。

従来は各サービスの内部にこれらの処理を個別に実装していたが、システムが大規模になると設定のばらつきや開発者の負担増が避けられなくなった。この課題に対し、サービスメッシュはサービス間の通信に関する機能をアプリケーション本体から切り離し、インフラ層に独立して持たせる。

具体的には、各サービスの隣に「サイドカープロキシ」と呼ばれる小さなプログラムを配置し、すべての通信をそのプロキシ経由で行う。これにより、通信の暗号化負荷分散タイムアウトやリトライの制御、トラフィックの分割といった処理を、個々のサービスを改修することなく統一的に適用できる。

プロキシの動作は、「コントロールプレーン」と呼ばれる中央の管理機構から配布される設定によって制御される。運用者はアプリケーションに手を加えることなく、通信の振る舞いを動的に調整できる。また、各プロキシが通信の遅延やエラー率などの指標を収集するため、分散したサービスの状態をリアルタイムで把握し、障害箇所を迅速に特定することも可能になる。

代表的な実装としては「Istio」や「Linkerd」があり、コンテナ管理基盤である「Kubernetes」と組み合わせて使われることが多い。クラウドネイティブな環境でサービス数が増大するほど、通信管理の複雑さも増すため、サービスメッシュの導入による運用負担の軽減と可観測性オブザーバビリティ)の向上は大きな意味を持つ。

この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。