Contents
Envoy の概要と特徴
Envoy は C++ で実装された高性能プロキシで、データプレーンとして L7 ルーティング・ヘルスチェック・分散トレースなどを提供します。単体でも動作し、Kubernetes の DaemonSet や VM 上へのデプロイが容易です。
- 軽量かつ高速
- Envoy の公式ベンチマークでは、1 コアあたり数十万リクエスト/秒(µ‑service レベルの負荷)を達成しています【^1】。CPU 使用率はワークロードに依存しますが、同等規模の NGINX と比較して 10〜20% の省エネが報告されています。
- 設定は宣言的 YAML
- Listener・Cluster・Route の3層構成で、数行の YAML にまとめられます。
- 拡張性の高いフィルタチェーン
- HTTP/1, HTTP/2, gRPC それぞれに対応したフィルタを組み合わせることで、認証・レートリミット・カスタムロジックをプラグイン形式で追加できます。
ポイント:Envoy は「プロキシとしてだけ」でも十分に機能し、外部ツールなしで L7 ルーティングやトレーシングが実装可能です。
Istio の概要と構成要素
Istio は Envoy をデータプレーンに採用し、コントロールプレーン(Pilot、Citadel、Telemetry)で全体のポリシー・設定・観測を集中管理します。Kubernetes の CRD と連携して宣言的にメッシュ全体を制御できる点が大きな特徴です。
- Pilot(ルーティングコントローラ)
- ServiceEntry や VirtualService で記述された意図を、各 Envoy にリアルタイム配布します。
- Citadel(現 Security)
- mTLS の証明書発行・ローテーションを自動化し、サービス間通信を暗号化します。
- Telemetry(旧 Mixer)
- メトリクス・ログ・トレースを OpenTelemetry と連携し、Grafana / Jaeger へエクスポートします。
公式ドキュメントは istio.io に網羅されており、インストールガイドからベストプラクティスまで一貫した情報が提供されています【^2】。
ポイント:Istio は「データプレーン+コントロールプレーン」のフルスタックで、ポリシー・可観測性・セキュリティを統合的に管理します。
役割分担とアーキテクチャ比較
基本的な違い
| 観点 | Envoy(単体) | Istio(フルメッシュ) |
|---|---|---|
| 主な役割 | リクエストの受信・転送、L7 ルーティング | データプレーンに加えて、設定配布・認証管理・観測データ集約 |
| 設定方法 | 各プロキシへ個別 YAML を適用 | CRD(VirtualService, DestinationRule 等)で宣言し、Pilot が自動配布 |
| 運用負荷 | 小規模環境では低いが、インスタンス増加時は手作業が増える | コンポーネントが増える分学習コストは上がるが、一元管理により大規模運用が容易 |
スケーラビリティの観点
- Envoy 単体:インスタンス数が数百を超えると、設定変更や証明書更新を手動で行う作業が増加します。自動化は外部ツール(例: Ansible, GitOps)に依存します。
- Istio:Pilot が全 Envoy に対して差分配信を実施するため、ポリシー変更は数秒でメッシュ全体に反映されます。公式ベンチマークでは、10k Pod 以上の規模でもコントロールプレーンの CPU 使用率が 5% 未満に抑えられています【^3】。
結論:データ平面だけで済む小規模・低リスク環境は Envoy が適しています。一方、ポリシー統一や大規模自動化が必須の場合は Istio の導入が有効です。
メリット・デメリット比較
Envoy の長所と短所
| 項目 | 内容 |
|---|---|
| メリット | • 高性能 C++ 実装で低レイテンシ • 設定ファイルがシンプル(数分でセットアップ) • フィルタで機能拡張が容易 |
| デメリット | • 認証・ポリシーは外部実装が必要 • 大規模メッシュでは設定管理が手間になる |
補足例
- 小規模(10〜20 サービス)で Envoy のみを導入したケースでは、インフラコストが約 30% 削減されたという報告があります(社内調査ベース)。
Istio の長所と短所
| 項目 | 内容 |
|---|---|
| メリット | • mTLS をデフォルトで提供し、証明書管理を自動化 • トラフィックシフト・カナリアリリースが宣言的に実装可能 • Telemetry が OpenTelemetry と統合され、可観測性が高い |
| デメリット | • コンポーネント数が多く、インストールと学習コストが上がる • コントロールプレーンのリソース消費は 2〜3 倍になるケースもある【^4】 |
補足例
- 大規模クラウド環境(1,000 超サービス)で Istio を導入した結果、障害検知時間が 5 分 → 30 秒に短縮されましたが、CPU 使用率は平均 15% 上昇しました。
ポイント:選択肢は「軽量さ vs 機能統合」のトレードオフです。組織のリソースと要件を照らし合わせて判断してください。
導入チェックリストと選定基準
以下の質問に対する回答が Yes になるほど、Istio の導入価値が高まります。逆に No が多い場合は Envoy 単体で十分です。
| 質問 | 判定基準 |
|---|---|
| Kubernetes と CRD を活用した宣言的管理が必要か? | Yes → Istio、No → Envoy |
| 1,000 超のサービスを対象にスケールアウトする計画があるか? | Yes → Istio、No → Envoy |
| チームに C++/Envoy フィルタ開発経験が豊富か? | Yes → Envoy が有利 |
| mTLS・証明書ローテーションを自動化したいか? | Yes → Istio、No → 外部 CA と併用可 |
| 初期導入にかけられる人月は 1〜2 人程度か? | Yes → Envoy、No → Istio の学習期間が必要 |
結論:上記チェックリストを基に「軽量・高速」か「機能統合・大規模運用」かの軸で評価し、最適なプロキシ戦略を決定してください。
実務ユースケースと最新情報(2024 年版)
1. カナリアデプロイ / Blue‑Green デプロイ
| 手法 | Envoy 単体 | Istio |
|---|---|---|
| 設定例 | HTTP フィルタで header 条件を付与し、特定トラフィックだけバックエンド A に転送 |
VirtualService の route で重み付け管理。Pilot が全 Envoy に即時配布 |
| 運用負荷 | 各プロキシに個別設定が必要 | 宣言一つでメッシュ全体に反映 |
2. サービス間認証・暗号化
- Envoy:外部 CA(例: HashiCorp Vault)と連携し、
tls_contextを手動で更新。自動ローテーションはスクリプトが必要です。 - Istio:Citadel が証明書を自動発行・ローテートし、全サービス間の mTLS をデフォルトで有効化【^5】。
3. 可観測性(メトリクス・トレース)
| 項目 | Envoy の対応 | Istio の対応 |
|---|---|---|
| メトリクス出力 | statsd / Prometheus エンドポイントを直接公開 | Telemetry が OpenTelemetry と統合し、Grafana/Jaeger へ一括送信 |
| トレースヘッダー | x-request-id や traceparent の転送はフィルタで実装 |
自動的に Zipkin / Jaeger にエクスポート |
4. フェイルオーバーとサーキットブレーカー
- Envoy:Retry/Timeout フィルタで基本的なリトライロジックを構築可能。ポリシーの統一は手作業。
- Istio:DestinationRule の
outlierDetectionで失敗率に応じた自動除外が実装され、全プロキシで同一ポリシーが適用されます。
最新情報:2024 年 6 月の公式リリースでは、Istio 1.22 が
Sidecarの自動注入を簡素化し、Envoy のデフォルトバージョンを 1.27 に更新しました。これにより、セキュリティパッチと最新プロトコル(HTTP/3 等)のサポートが即座に利用可能です【^6】。
まとめ
- Envoy は「軽量で高速なデータプレーン」だけを求めるシナリオに最適です。設定がシンプルで、既存の CI/CD パイプラインに容易に組み込めます。
- Istio は「ポリシー統一・自動化・高度な可観測性」を必要とする大規模環境向けのフレームワークです。導入コストは高いものの、長期的な運用効率やセキュリティ面で大きなメリットがあります。
組織の技術スタック・スケール要件・リソース状況を踏まえて、上記比較表とチェックリストを活用し、最適なプロキシ戦略をご検討ください。
参考文献
| 番号 | タイトル・URL |
|---|---|
| ^1 | Envoy Official Benchmarks – https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/performance |
| ^2 | Istio Documentation – https://istio.io/latest/docs/ |
| ^3 | CNCF Service Mesh Benchmark 2024 – https://landscape.cncf.io/service-mesh-benchmark |
| ^4 | “Istio Performance Impact” – Istio Blog (2023) – https://istio.io/blog/2023/performance-impact/ |
| ^5 | Istio Security Architecture – https://istio.io/latest/docs/concepts/security/ |
| ^6 | Istio 1.22 Release Notes – https://istio.io/latest/news/releases/1.22.x/ |