信頼できるサービスメッシュベンチマークの実験と分析

サービスメッシュは、マイクロサービスアーキテクチャにおける通信管理、監視、セキュリティを提供する重要な技術です。CNCF(Cloud Native Computing Foundation)が推進するこの技術は、クラウドネイティブアプリケーションの信頼性とスケーラビリティを向上させるために不可欠です。本記事では、サービスメッシュの性能評価に焦點を當て、実験環境、テスト結果、およびその分析を通じて、サービスメッシュの選定と運用における重要な洞察を提供します。

サービスメッシュの基本概念と特性

サービスメッシュは、アプリケーションのロジックとネットワーク通信を分離し、サービス間の通信を管理するためのレイヤーです。主な機能には、mTLSによる暗號化、トラフィックマネジメント、サービス監視、ポリシーコントロールが含まれます。CNCFが認定する主要なサービスメッシュ実裝には、Istio、Linkerd、Consul Connectなどがあり、それぞれ異なるアプローチと特性を持っています。

サービスメッシュの選定において重要な要素は、パフォーマンスリソース効率操作性拡張性です。特に、レイヤー4(TCP)とレイヤー7(HTTP)の機能の組み合わせによるパフォーマンスの違いは、アプリケーションの要件に応じて慎重に検討する必要があります。

実験環境とテスト設計

本実験では、以下の環境とツールを用いてベンチマークを実施しました:

  • ハードウェア:5年前のAMD CPUを搭載した非トップグレードサーバーを使用し、仮想マシンやクラウドサービスのネットワーク制限を迴避
  • テストツール
    • Ksix:圧力テスト用クライアントツール
    • Forio:高速レスポンスを提供するバックエンドサービス
    • Grafana:結果の可視化
    • Metrics Server:CPU使用率の追跡
    • Kali:ネットワークトラフィックと通信マトリクスの監視
    • Prometheus:原生Histogram指標のサポート

テストは以下のステップで実施されました:

  1. ベースラインテスト(2分):サービスメッシュを無効にし、固定到達率(1000リクエスト/秒)で測定。P99レイテンシーは約170マイクロ秒。
  2. Sidecarテスト(2分):Sidecarを有効化し、サービスに注入。結果:P99レイテンシーは750マイクロ秒(Sidecarコスト約580マイクロ秒)。
  3. Layer7テスト(2分):SidecarにHTTPヘッダー操作を追加。P99レイテンシーは1900マイクロ秒(主にメトリクス収集の影響)。
  4. Ambient Layer4テスト(2分):Ambientモードを有効化し、Layer4(mTLS)のみを使用。P99レイテンシーは169マイクロ秒(ベースラインに近い)。
  5. Ambient Layer4+Layer7テスト(2分):Layer4とLayer7を併用。P99レイテンシーは338マイクロ秒(Layer4の169マイクロ秒増加)。

パフォーマンス影響の分析

  • Sidecarコスト:約580マイクロ秒。多くのアプリケーションでは許容範囲內。
  • Layer7処理:単純な操作ではレイテンシーへの影響は限定的だが、メトリクス収集が主な要因。
  • Ambientモードの利點:Layer4のみでベースラインに近い遅延を実現し、リソース使用量はSidecarモードに比べて約70%削減。
  • ネットワーク経路:異なるノード間通信では、ソースノード→ターゲットノード→mTLS中間層の2層のZ Tunnel経路が確認された。

テスト方法論と結果の信頼性

  • 環境制御:すべてのテストはデフォルト設定で実施し、特殊な最適化は行わない。
  • データの可比性:ハードウェア構成(CPUモデルなど)の影響を明示。
  • 結果の検証:Grafanaの注釈でテストフェーズをタイムスタンプし、正確な時間対応を確保。
  • ツール選択:コミュニティツールのバイアスを避けるため、獨立したKsixを採用。

レイヤー4とレイヤー7の比較

  • レイヤー4(TCP):AmbientモードでmTLSとTCP監視を有効化。レイテンシーは150マイクロ秒(338-169マイクロ秒範囲)。リソース使用量は低く、70%のリソース削減を実現。
  • レイヤー7(HTTP):Waypointを用いてHTTPルーティングやヘッダー変更を実裝。レイテンシーは700マイクロ秒(Sidecarモードよりやや高い)。2つのPodをデプロイし、高可用性を確保。

リソースと運用コストの分析

  • リソース効率:AmbientモードはSidecarモードに比べてリソースを節約。特にレイヤー4では顕著。
  • 運用柔軟性:Ambientモードでは、アプリケーションチームとの協業なしにコントロールプレーン(Z Tunnel)やWaypointのアップグレードが可能。
  • コスト効果:70%のシナリオ(mTLSや基本監視)ではレイヤー4のみで十分。レイヤー7は特定のアプリケーションニーズに応じて選択的に有効化。

吞吐量と拡張性

高並発環境では、**吞吐量(Throughput)**の重要性が際立つ。Johnのブログによると、Fastly(STO)は吞吐量とコントロールプレーンの拡張性において優れた性能を示す。ベンチマーク結果では、レイヤー4のレイテンシーは多くのアプリケーションにおいて感知されず、負荷に応じてレイヤーの有効化戦略を調整することが推奨される。

結論

  • レイヤー4(TCP):ほとんどのシナリオで十分なパフォーマンスを提供し、極めて低いレイテンシーとリソース消費。
  • レイヤー7機能:アプリケーションのニーズに応じて選択的に有効化し、不要なオーバーヘッドを迴避。
  • サービスメッシュの選定:パフォーマンス、リソースコスト、運用複雑度をバランスよく考慮し、Ambientモードはリソースと運用柔軟性において優位性を有する。

本実験は、サービスメッシュの実裝における重要な設計選択肢を明確にし、実際の運用におけるパフォーマンスとコストのトレードオフを理解するための參考となるべきです。