サービスメッシュ必読ガイド - マイクロサービス時代のサービス間通信管理
サービスメッシュは、(一般的にはマイクロサービスベースの)分散ソフトウェアシステム内における、すべてのサービス間"east-west"トラフィックを管理するテクノロジです。ルーティングのようなビジネス指向の機能運用に加えて、セキュリティポリシの適用やQOS(Quality of Service)、レート制限のような非機能サポートも提供します。一般的には(すべてではありませんが)サイドカープロキシを使用して実装され、すべてのサービスがそれを通じて通信するようになります。
サービスメッシュはデータプレーンとコントロールプレーンという、2つの高レベルなコンポーネントで構成されます。
データプレーンは"仕事をする(does the work)"もので、"[ネットワークエンドポイントを]出入りするすべてのネットワークパケットの条件付き変換、転送、監視"を役割としています。最近のシステムでは、データプレーンは(Envoy、HAProxy、MOSNなどのように)プロキシとして実装されるのが一般的で、サイドカーとして各サービスとともにプロセス外部で動作します。
コントロールプレーンは"仕事を監督する(supervises the work)"主体として、データプレーンの個々のインスタンスすべて -- 独立したステートレスなサイドカープロキシ群 -- を分散システムとして構成する役割を担います。
ユースケース
トラフィックシェーピング(traffic shaping): レート制限やロードシェディング(load shedding)などのように、ネットワーク全体のトラフィックのフローを変更すること。
トラフィックシフティング(traffic shifting): トラフィックをあるロケーションから別のロケーションに移行すること。
East-Westトラフィック: データセンタ、ネットワーク、あるいはKubernetesクラスタ内のネットワークトラフィック。従来のネットワーク図では、サービス間(データセンタ内)のトラフィックフローが左から右(東から西)に描かれていたことから発した用語。
North-Southトラフィック: データセンタ、ネットワーク、あるいはKubernetesクラスタに入力(あるいは進入)するネットワークトラフィック。従来のネットワーク図では、データセンタに入力するトラフィックをページの最上部から下(北から南)への流れとして描いていたことから発した用語。
Ingressトラフィック: データセンタやネットワーク、Kubernetesクラスタ外で発生したネットワークトラフィック。
Comments