Lyft 由来 / CNCF Graduated 2018 のクラウドネイティブ HTTP / TCP / gRPC プロキシ。L7 ロードバランサ + サービスメッシュ + API ゲートウェイで Istio / Linkerd 内部 + Anthos / EKS / AKS の中核プロキシ。
Envoy(エンボイ)は、Lyft(米ライドシェア企業、2012 年創業の Uber 競合)社内で 2015 年に Matt Klein(マット・クライン、当時 Lyft プリンシパルエンジニア、現 Lyft Distinguished Engineer + Solo.io Co-Founder)が開発開始、2016 年 9 月にオープンソース公開、2018 年 11 月に CNCF Graduated プロジェクトに昇格したクラウドネイティブ HTTP / TCP / gRPC プロキシです。
開発の背景は、Lyft が 2014-2016 年にモノリシックアプリケーションをマイクロサービスへ分解する大規模リアーキテクチャを実施した際、(1)既存プロキシ(NGINX / HAProxy)は L4-L7 機能 + 動的設定 + 観測性が不足・(2)サービス間通信のレイテンシ + 信頼性 + 観測性が課題に・(3)動的にリロード可能な設定 + サーキットブレーカー + リトライ + 分散トレース統合が必要、という要件から開発されました。
技術仕様は、(1)実装言語: C++14(モダン C++)・(2)アーキテクチャ: イベントドリブン(libevent)+ ノンブロッキング I/O・(3)プロトコル: HTTP/1.1 / HTTP/2 / HTTP/3 / gRPC / WebSocket / TLS / mTLS・(4)動的設定: xDS API(Envoy Discovery Service、CDS / EDS / LDS / RDS / SDS の 5 種類)・(5)機能: L7 ロードバランサ + サーキットブレーカー + リトライ + タイムアウト + 認証 + ログ + メトリクス + 分散トレース・(6)拡張: Lua スクリプト + WebAssembly(WASM)フィルタ + 100+ 公式フィルタ、です。
xDS API(Envoy Discovery Service)は革新的設計で、Envoy 設定をリアルタイムに API 経由で更新できる仕組みです。CDS(Cluster Discovery Service)・EDS(Endpoint Discovery Service)・LDS(Listener Discovery Service)・RDS(Route Discovery Service)・SDS(Secret Discovery Service)の 5 種類のリソースを動的に管理し、Istio / Linkerd / Cilium / AWS App Mesh / Anthos Service Mesh 等のコントロールプレーンが xDS API 経由で Envoy データプレーンを設定する標準アーキテクチャを確立しました。
主な採用は、(1)Istio(Google + IBM + Lyft、2017、Service Mesh の中核データプレーン)・(2)Linkerd 1.x(2017、後年 Rust ベース proxy に置換)・(3)Anthos Service Mesh(Google Cloud)・(4)AWS App Mesh / EKS Service Connect・(5)Microsoft Azure AKS Service Mesh・(6)Tetrate(エンタプライズ Service Mesh ベンダー、2018 創業)・(7)Solo.io Gloo Mesh / Edge(API Gateway + Service Mesh)・(8)Cilium / Cloudflare Service Mesh・(9)Stripe / Square / Pinterest / Spotify(大規模 Web サービスの内部プロキシ)、などです。
派生プロジェクトとして、(1)Envoy Gateway(2024、Kubernetes Gateway API 実装、Ingress Controller の次世代標準)・(2)Envoy Mobile(iOS / Android クライアント側 Envoy、ネットワーク信頼性向上)・(3)Envoy Functions(Serverless 派生)、などが展開され、現代のクラウドネイティブインフラの中核プロキシとして 2018-2026 年に普及拡大中です。
| プロキシ | 提供 | 主な用途 |
|---|---|---|
| Envoy | Lyft / CNCF | クラウドネイティブ + サービスメッシュ |
| NGINX | F5(旧 NGINX Inc.) | Web + LB + Reverse Proxy |
| HAProxy | HAProxy Technologies | エンタプライズ LB |
| Traefik | Traefik Labs | Kubernetes Ingress |
| Caddy | Caddy Technologies | 自動 TLS + シンプル |
| AWS ALB / NLB | AWS | クラウド LB |
Envoy は通常のコンシューマ自作 PC で必要になる技術ではありませんが、ホビーホームラボ + 自宅 Kubernetes 環境 + マイクロサービス開発の上級者には極めて有用です。Docker docker run envoyproxy/envoy:v1.30.0(2024 最新) + 設定ファイル envoy.yaml で簡単起動可能、シングルバイナリ動作で OS 依存性が極小です。
Kubernetes 環境では Istio / Linkerd 経由で間接的に Envoy が動作することが多く、直接 Envoy 設定を扱う機会は少ないですが、Envoy Gateway(2024、Kubernetes Gateway API 実装)が 2025-2026 年に Ingress Controller の標準として広がる見込みで、業務知識習得に重要です。
Q1: Envoy と NGINX どちらを選ぶべきですか? A: クラウドネイティブ + マイクロサービス + 動的設定 → Envoy、伝統的 Web サーバ + 静的設定 + シンプル → NGINX です。Kubernetes 環境では Envoy 系(Istio / Envoy Gateway / Cilium)が主流ですが、レガシー LAMP / Web サイト + シンプル Reverse Proxy では NGINX が依然として優位です。
Q2: xDS API は何が革新的ですか? A: 設定ファイルの再起動なしに、API 経由でリアルタイム更新できる仕組みです。Istio / Linkerd 等のサービスメッシュコントロールプレーンが xDS API 経由で Envoy データプレーンを動的管理することで、デプロイ時の設定変更 + サービス追加削除 + ルーティング変更が瞬時に反映されます。
Q3: 自宅で Envoy を試す方法は?
A: Docker docker run -d -v $(pwd)/envoy.yaml:/etc/envoy/envoy.yaml -p 10000:10000 envoyproxy/envoy:v1.30.0 でシンプル起動可能、設定ファイルで HTTP プロキシ + LB + WASM フィルタ等を学習できます。Kubernetes Helm Chart + Istio Tutorial も豊富で、業務知識習得の優れた選択肢です。