AWS App Mesh

AWS App Meshは、AWSのサービスとして開発されているフルマネージドサービスメッシュプラットフォームです。サポート環境はFargate/ECS/EKS/Kubernetes on EC2などあります。サイドカープロキシにはEnvoyを採用し、コントロールプレーンをマネージドとして提供しています。他のAWSサービスとの連携も強力です。

OCI Service Mesh

OCI Service Meshは、Oracle社がOCI(Oracle Cloud Infrastructure)上で提供しているフルマネージドサービスメッシュプラットフォームです。サポートする環境はOKE(Oracle Container Engine for Kubernetes)のみで、将来的にはVMもサポートする予定です。サイドカープロキシはEnvoyベースとなっており、コントロールプレーンをOracle社が管理します。

OSOK(OCI Service Operator for Kubernetes)と呼ばれるOKE用のOperatorが必要であり、ユーザがインストールを行う必要があります。また、他のOCIサービスとの高い親和性があります。

ここまでがオープンソースプロダクト、ベンダーサービスを含めたService Meshプロダクトの紹介です。ここまでのプロダクトを以下にまとめます。

【オープンソースプロダクト】
IstioLINKERDConsul ConnectKumaOpen Service Mesh
データプレーンEnvoyConduit組み込みプロキシ
Envoy
EnvoyEnvoy
VMサポート可不可可可不可
有償サポート無
(ベンダーサービスあり)
有有有無
GitHub Star数
(2023年5月現在)
32.9k9.6k26.4k3.1k2.6k
【ベンダーサービス】
Anthos Service MeshAWS App MeshOCI Service Mesh
提供ベンダーGoogleAmazonOracle
データプレーンEnvoyEnvoyEnvoy
コントロールプレーン実装Istioベース独自独自
VMサポート(2023年5月現在)可可不可(ロードマップあり)

ここで押さえておきたいポイントは、LINKRED以外のデータプレーンにEnvoyが利用されているという点です。Service Meshプロダクトに、なぜここまでEnvoyが利用されるのかを含めて、ここからはIstioをベースに詳細なアーキテクチャを掘り下げます。

Istio Deep Dive

前段でIstioのアーキテクチャについて少し触れ、コントロールプレーンとデータプレーンの2つのコンポーネントから構成されているという話をしました。この2つのコンポーネントについてもう少し掘り下げていきます。

Istioのコントロールプレーン

Istioのコントロールプレーンは、v1.4以前とv1.5以降で大きく異なります。v1.4以前では、以下のコンポーネントから構成されていました。

  • Pilotサービス:データプレーン(Envoy)へのconfig反映
  • Citadelサービス:サービス対サービスとエンドユーザ認証/認可を提供。SPIFFE(後述)の実装コンポーネント
  • Mixerサービス:Observability(Telemetry)関連機能やアクセス制御機能を提供
  • Galleyサービス:ユーザがカスタマイズしたconfig設定の提供

v1.5以降ではMixerサービスがEnvoyに統合され、他の3つのコンポーネントはistiodという1つのバイナリになりました。

Istioのデータプレーン

Istioのデータプレーンは、Envoyというプロキシから構成されています。

Envoyは2015年5月にLyft社が開発し、2016年9月にオープンソースとして公開されました。EnvoyはL4/L7両機能を持つプロキシソフトウェアであり、C++で実装されています。また、プラグイン開発としてWebAssembly/Luaをサポートしています。

Envoyは“xDS Protocol”という動的に制御できる仕組みを持っており、このxDS Protocolを制御するAPI(“xDS API”)を実装できます。このxDS APIを実装したものが前述したコントロールプレーンです。これらのAPIには、具体的に以下のようなものがあります。

  • EDS(Endpoint Discovery Service)
  • CDS(Cluster Discovery Service)
  • RDS(Route Discovery Service)

また、以下のようにAPIのリファレンス実装にはJavaとGoの2つの実装があります。

【Java】
【Go】

このEnvoyの拡張性の高さが、多くのService Meshプロダクトのデータプレーンに採用されている理由の1つであると言えます。

この記事のキーワード :

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30