
Envoyは2016年にライドシェア大手のLyft社で開発が始まり、2017年9月にオープンソースとして公開された高性能なL7プロキシです。設計を主導したのはLyftのエンジニアであるマット・クライン氏で、HTTP/2・gRPC・WebSocketといった現代的プロトコルをファーストクラスで扱えるように一から書き直されました。CNCFには2017年に加入し、わずか1年後の2018年11月にGraduatedプロジェクトに昇格するという急成長を見せました。今やIstio・Contour・AWS App Meshなどサービスメッシュ製品の多くがデータプレーンとして採用する、現代の中核ネットワーク部品です.
この記事の目次
- Envoyを支える4つの設計思想
- Lyft発祥からサービスメッシュ標準へ
- Envoyを直接運用する際の勘所
- NginxやHAProxyとの位置取り
- まとめ
Envoyを支える4つの設計思想

EnvoyはNginxやHAProxyと同じL7プロキシの仲間ですが、設計思想に明確な違いがあります。1つ目は動的設定で、xDS(Discovery Service)APIと呼ばれるgRPCインターフェースを通じて、クラスタ・リスナー・ルートをコントロールプレーンから流し込めるよう最初から設計されています。Nginxのreloadのような設定再読込のダウンタイムが発生しないのが大きな利点です。
2つ目はFilter機構で、リスナー・ネットワーク・HTTPの各段にフィルタを差し込む構造になっており、認証・流量制御・トレーシング・ヘッダー書き換えといった処理をモジュール単位で組み合わせられます。3つ目はObservability重視で、リクエスト単位の詳細メトリクス・分散トレース(OpenTelemetry/Jaeger)・アクセスログを最初から手厚く吐ける設計が、デバッグ困難なマイクロサービス環境で評価されました。「内部状態が可視化されていることを前提とした次世代プロキシ」というのがEnvoyの一貫したコンセプトです。
Lyft発祥からサービスメッシュ標準へ

Envoyは2015年頃から、Lyft社内でマイクロサービス化が進む中で生まれたニーズに応えるため開発が始まりました。当時のLyftは数百のサービスがHTTP/1.1とTCPで複雑に絡み合い、共通のプロキシ層が必要になっていたのです。マット・クライン氏が中心となり、C++で書き直された新プロキシは2016年に社内利用が始まり、2017年9月にGitHub公開されました。
公開直後の2017年9月にCNCFへ寄贈され、Kubernetesに次ぐ2番目のGraduatedプロジェクトとして2018年11月に卒業しました。同年、GoogleとIBMが主導するIstioがEnvoyをサイドカープロキシとして採用したことで一気に存在感が増し、AWS App Mesh、HashiCorp Consul Connect、VMware Tanzu Service Meshなど多数のメッシュ製品がEnvoyをデータプレーンとして取り込みました。コミュニティはOSSとして引き続き活発で、2024年にもメジャーアップデートと多数の新フィルタが取り込まれており、サービスメッシュ業界の事実上の標準として進化を続けています。
Envoyを直接運用する際の勘所

Envoyを直接運用する場合、まずxDSベースのコントロールプレーンを用意するのが望ましく、go-control-planeライブラリを使った自作コントロールプレーンか、Istio・Contour・Gloo Edgeのような既製品の利用が現実的です。静的設定YAMLでも動きますが、ホットリロードの強みを活かすには動的構成が前提です。観測性についてはアクセスログとPrometheus形式のメトリクスを最初から有効化し、リクエストごとの応答コードや遅延分布をダッシュボード化しておくのが定石です。
リトライ・タイムアウト・サーキットブレーカーといった信頼性機能を明示的に書くのも重要です。「タイムアウト未設定でぶら下がりが累積する」「リトライストームでバックエンドを倒す」といったマイクロサービスの典型障害をEnvoyレベルで吸収できるかどうかは、これらの設定次第になります。Outlier Detectionで連続エラーを返すホストを自動で切り離す機能や、Admin APIで実行時状態を確認できる機能も便利ですが、Admin APIは外部に晒すと深刻な情報漏えいになりうるので、必ずローカルあるいは閉域ネットワークに限定して公開します。
NginxやHAProxyとの位置取り

EnvoyはNginx・HAProxy・Apache HTTP Serverといった伝統的なプロキシと比較されますが、棲み分けは明確です。Nginxは設定の簡潔さと安定動作で長く愛用され、Webサーバー兼リバースプロキシの定番として今も多くのサイトで動いています。HAProxyはL4・L7のロードバランシング性能で評価され、超高負荷環境のフロントエンド配置が得意です。ApacheはmodベースのHTTPS資産との互換性が高く、レガシー連携で根強い需要があります。
Envoyはこれらに比べて起動コストや設定の複雑さが大きい代わりに、動的設定・高度な観測性・サービスメッシュ統合という現代マイクロサービス前提の機能で先行しています。「単純なWeb前段ならNginx、超高負荷L4ならHAProxy、マイクロサービス間通信ならEnvoy」と整理すると判断軸が見えやすいでしょう。もちろん最近はNginxもgRPC対応を進めており、HAProxyもL7機能を強化しているので、選定時は「3年後にどんな構成にしたいか」を加味して比較するのが現実的です。
まとめ
Envoyは2016年Lyft社内で生まれ、2017年に公開されてから急速にCNCF卒業まで駆け上がったL7プロキシです。xDSによる動的設定、HTTP/2・gRPC・WebSocket対応、観測性の標準装備という設計でサービスメッシュの中核を担います。Nginx・HAProxyと棲み分けつつ、Istio・Consul Connect・App Meshなど主要メッシュのデータプレーンとして君臨しています。
※本記事はIT用語辞典の手書きドラフトです。公開前に最新情報・出典を確認のうえ加筆修正してください。

コメント