【さーびすめっしゅ】

サービスメッシュ とは?

最終更新:
💡 サービス間の通信を裏側で取り仕切る「見えない交通整理員」

マイクロサービス間の通信を、アプリのコードの外側にあるプロキシの層で管理する仕組み。暗号化・認証・トラフィック制御・可視化などを、アプリのコードを書き換えずに追加できる。

📌 このページのポイント
コントロールプレーン 設定管理 ・ サービスディスカバリ ・ ポリシー制御 管理 管理 管理 データプレーン サービスA 注文処理 Proxy サービスB 在庫管理 Proxy サービスC 決済処理 Proxy Proxy経由で通信 Proxy経由で通信 サイドカープロキシ(各サービスに付随) コントロールプレーン(一括管理)
サービスメッシュの構造
ひよこ ひよこ
サービスメッシュって何のためにあるの?
ペンギン先生 ペンギン先生
マイクロサービスが増えると「A→B→C→D」と連鎖的に呼び合うようになる。そのとき通信の暗号化・リトライ・タイムアウトをサービスごとに作り込むのは大変だよね。サービスメッシュはその共通処理を、アプリの外側のプロキシでまとめて引き受けてくれるんだ
ひよこ ひよこ
おもしろい!サイドカーって何?
ペンギン先生 ペンギン先生
アプリのコンテナと同じPodで一緒に動く補助のコンテナのことだよ。バイクの横にくっつくサイドカーのイメージだね。通信はこのプロキシを経由するから、アプリ自体は通信の制御を意識しなくてよくなる。IstioのサイドカーはEnvoy、LinkerdはRustで書かれた専用の軽量プロキシを使っているよ
ひよこ ひよこ
サービスメッシュを入れると何が見えるようになるの?
ペンギン先生 ペンギン先生
プロキシがすべての通信を通すから、「サービスAからBへのリクエスト数、エラー率、応答時間」のようなメトリクスやログを自動で集められるよ。ただし、リクエストがどのサービスをどの順に通ったかを1本のトレースにつなぐには、アプリが受け取ったトレース用のヘッダーを次の呼び出しにも引き継ぐ必要があるんだ
ひよこ ひよこ
サービスメッシュのmTLS(相互TLS)って、普通のTLSとどう違うの?
ペンギン先生 ペンギン先生
普通のHTTPSは「クライアントがサーバーの証明書を確かめる」一方向の認証が基本。mTLSは「サーバーもクライアントの証明書を確かめる」双方向の認証なんだ。全サービス分の証明書が必要になるけど、Istioではコントロールプレーンのistiodが認証局として証明書を発行して配ってくれる。とはいえ仕組みが増える分、証明書や設定のトラブルの原因を追う知識は必要になるよ
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「サービスメッシュ」って出てきたら「マイクロサービス間の通信を、アプリの外側のプロキシでまとめて管理する仕組み」と思えればだいたいOK!
📖 おまけ:英語の意味
「Service Mesh」 = サービスをつなぐ「メッシュ(網の目)状の通信層」
💬 複数のサービスが網の目のようにつながり合うイメージ。その通信網全体を管理する、という意味だよ

参考資料

← 用語集にもどる