マイクロサービス時代のサービス間通信管理

サービスメッシュ必読ガイド - マイクロサービス時代のサービス間通信管理
サービスメッシュは、(一般的にはマイクロサービスベースの)分散ソフトウェアシステム内における、すべてのサービス間"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クラスタ外で発生したネットワークトラフィック。