勉強前イメージ
プロキシ的なイメージ持ってたけど、中身はよくわからない
調査
Envoy とは
エンヴォイ と読み、Webサービスのために開発されたロードバランサーで
L4、L7のプロキシのソフトウェア・ツールになります。
マイクロサービスの分散システムの構築や運用を安定させるために開発され、
サービス間のネットワークの制御をライブラリではなくネットワークプロキシとして提供し、
これによってサービスはEnvoyを経由してそれぞれのサービスへ接続します。
また、EnvoyはL7に焦点を当てているので、RedisやMongodb,DynamoDBなどサポートしています。
Envoyの主な特徴
- 高度な負荷分散
Envoyは自己完結型のプロキシなので、1箇所に実装すればいろんなアプリケーションからアクセスをさせることができます。
- 豊富な構成API
下位互換性のあるAPIを使用して、データとコントロールプレーンを完全に分離します。
- ハイパフォーマンス
スループットとレイテンシーの画面に関して高パフォーマンスを発揮できます。
Envoyの主な機能
- L3/L4フィルターアーキティクチャ
TCPプロキシ、HTTPプロキシ、TLSクライアント証明書認証などをサポートします。
- HTTP L7フィルターアーキティクチャ
HTTP L7フィルターレイヤーをサポートしており、
バッファリング・レート制御・ルーティング/フォワーディングをサポートします
- HTTP L7ルーティング
httpモードで動作していたら、パスに基づくリダイレクトリクエストや認証・コンテンツタイプなどをサポートします。
Envoyの構築イメージ・用語
Envoyはサービス間のネットワーク制御をネットワークプロキシとして開発したので、
それぞれEnvoyを通じて別のサービスに接続します。
アプリケーションと同じホスト上にEnvoyを構築して、各サービスは別のサービスを直接参照するのではなく、
ローカルのEnvoyを参照します。
Envoyの構築パターン
- Edge Proxy
サービス群の中と外の境界のプロキシ
- Egress Proxy
外部へ接続する際のトラフィックの通信先などを書き換える
- サービスメッシュ
サービス間の通信をEnvoyを経由して行う
勉強後イメージ
ちゃんとプロキシサーバ作ったことないから、
正直ちょっとむずかしい・・・・
何でもいいから一個つくってみないとわからないのかな