【さーびすめっしゅ】

サービスメッシュ とは?

💡 サービス間の通信を透明に管理する「見えない交通整理員」
📌 このページのポイント
コントロールプレーン 設定管理 ・ サービスディスカバリ ・ ポリシー制御 管理 管理 管理 データプレーン サービスA 注文処理 Proxy サービスB 在庫管理 Proxy サービスC 決済処理 Proxy Proxy経由で通信 Proxy経由で通信 サイドカープロキシ(各サービスに付随) コントロールプレーン(一括管理)
サービスメッシュの構造
ひよこ ひよこ

サービスメッシュって何のためにあるの?

ペンギン先生 ペンギン先生

マイクロサービスが増えると「A→B→C→D」と連鎖的に呼び合うようになる。そのとき通信の暗号化・リトライ・タイムアウトをサービスごとに実装するのは大変。サービスメッシュはその共通処理をまとめて、アプリの外側でやってくれるんだよ。

ひよこ ひよこ

おもしろい!サイドカーって何?

ペンギン先生 ペンギン先生

サービスのコンテナと一緒に動く補助コンテナのこと。バイクのサイドカーみたいに「本体の横にくっついている」から名前がついた。通信はすべてこのサイドカー(Envoyというプロキシが多い)を経由するから、アプリ自体は通信制御を意識しなくてよくなるんだよ。

ひよこ ひよこ

サービスメッシュを入れると何が見えるようになるの?

ペンギン先生 ペンギン先生

「サービスAからBへのリクエストが1秒あたり何件で、エラー率が何%で、平均レイテンシが何ミリ秒か」という通信の全体像が可視化できるよ。Jaegerなどのトレーシングツールと連携すれば、どのサービスでどこが遅いかも追跡できるんだ。

ひよこ ひよこ

サービスメッシュのmTLS(相互TLS)って、普通のTLSとどう違うの?

ペンギン先生 ペンギン先生

普通のHTTPSは「クライアントがサーバーの証明書を検証する」一方向の認証。mTLS(mutual TLS)は「サーバーもクライアントの証明書を検証する」双方向の認証なんだ。これによって「正規のサービスからの通信か」をインフラ層で確認できる。ただし証明書の発行・更新・管理がすべてのサービス分必要になるから、運用コストが増える。IstioはこれをコントロールプレーンのCitadelが自動化してくれるんだけど、証明書の期限切れやローテーションの問題が本番で起きると原因特定が難しくなることがあるんだよ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「サービスメッシュ」って出てきたら「マイクロサービス間の通信をインフラ層で管理する仕組みのことだな」と思えればだいたいOK!
📖 おまけ:英語の意味
「Service Mesh」 = サービスをつなぐ「メッシュ(網の目)状の通信層」
💬 複数のサービスが網の目のようにつながり合うイメージ。その通信網全体を管理する、という意味だよ
← 用語集にもどる