このトピックでは、Envoy と Sidecar の主な機能と違いについて説明します。
用語
Envoy と Sidecar は、マイクロサービスアーキテクチャとクラウドネイティブ環境でよく使用されます。ただし、機能と使用方法が異なります。具体的には、Envoy はネットワークトラフィックを管理するためのプロキシとして使用できるソフトウェアプロダクトであり、Sidecar はマイクロサービスアーキテクチャでプロキシまたは他の補助コンテナーをデプロイおよび管理する方法を記述するアーキテクチャです。
Service Mesh (ASM) インスタンスでは、Envoy は多くの場合、サイドカープロキシとして機能します。ただし、Envoy だけが選択肢ではありません。ログコレクターや監視エージェントなど、他の種類のプロキシまたは補助コンテナーも Sidecar としてデプロイできます。
Envoy
Envoy は、最新のサービス指向アーキテクチャ向けに設計された、オープンソースの高性能エッジおよびサービスプロキシです。Lyft によって開発され、Cloud Native Computing Foundation (CNCF) に参加しています。Envoy は、マイクロサービスアーキテクチャのエッジおよびサービスプロキシです。Envoy は次の機能を提供します。
高度なトラフィック管理: ルーティング、負荷分散、リトライ、エラー注入、トラフィックミラーリングなど、きめ細かいトラフィック制御を提供します。
サービスディスカバリ: Envoy をサービスディスカバリシステムと統合することにより、マルチサービスルーティングを提供します。
ヘルスチェック: バックエンドサービスでヘルスチェックを実行することにより、トラフィックが正常なインスタンスのみにルーティングされるようにします。
分散トレーシング: OpenTelemetry や Zipkin などの分散トレーシングシステムを使用して、リクエストトレーシングを有効にします。
セキュリティ: 相互トランスポート層セキュリティ (mTLS) を構成することにより、サービス間の暗号化通信を確立します。
Sidecar
Sidecar は、補助機能がメインアプリケーションコンテナーの隣のコンテナーにデプロイされるアーキテクチャです。Sidecar コンテナーは、メインアプリケーションコンテナーと同じポッドを共有します。Sidecar は次の機能を提供します。
機能拡張: メインアプリケーションコンテナーが存在するポッドにコンテナーをデプロイすることにより、ロギング、監視、プロキシ、ミドルウェアなどの追加機能を提供します。
シンプルなアーキテクチャ: 構成管理、セキュリティ、監視などのコア以外の機能を Sidecar コンテナーに転送することにより、アプリケーションのシンプルさを確保します。
プロキシと通信: マイクロサービスアーキテクチャで Envoy プロキシとして機能することにより、サービス間の接続を保証します。
違い
項目 | Envoy | Sidecar |
種類 | プロキシソフトウェア (プロキシ、ロードバランサー)。 | アーキテクチャ (メインサービスのアーキテクチャを簡素化)。 |
機能 | ファイルベースのサービスディスカバリ、負荷分散、TLS ターミネーション、HTTP/2 および gRPC プロキシ、サービスレベルのサーキットブレーカー、ヘルスチェック、パーセンテージベースのトラフィック管理、および監視やトレーシングなどのテレメトリデータ。 | ロギング、監視、通信プロキシなどの追加機能を提供します。 |
デプロイ方法 | Envoy を個別にデプロイすることも、Envoy を Sidecar プロキシとして実行することもできます。 | Sidecar コンテナーは、メインアプリケーション用に作成されたのと同じポッドにデプロイする必要があります。 |
可観測性 | トラフィックのトレーシング、統計、ヘルスチェックをサポートします。 | クラウドモニターと Simple Log Service (SLS) と統合します。 |
シナリオ | マイクロサービスアーキテクチャにおけるサービス間のトラフィック管理と分散のプロキシ。 | マイクロサービスアーキテクチャにサイドカープロキシを挿入して、機能を強化し、管理性を向上させます。 |