投稿日: Oct 29, 2020

Application Load Balancer (ALB) が gRPC プロトコルをサポートするようになりました。このリリースにより、ALB を使用して、マイクロサービス間または gRPC 対応のクライアントとサービス間で gRPC トラフィックをルーティングおよび負荷分散できます。これにより、お客様は、クライアントやサービスの基盤となるインフラストラクチャを変更することなく、アーキテクチャに gRPC トラフィック管理をシームレスに導入できます。

gRPC はトランスポートに HTTP/2 を使用し、マイクロサービスベースのアーキテクチャ上に構築されたアプリケーションのサービス間通信に最適なプロトコルになりつつあります。効率的なバイナリシリアル化、多数の言語のサポート、双方向ストリーミングなどの機能に加えて、ネットワークフットプリントの軽量化や圧縮など、HTTP/2 の固有の利点をもたらします。そのパフォーマンス上の利点により、デベロッパーはクライアントが通信を行えるようにするためにも gRPC を使い始めています。

ALB でこの機能を使用するには、リスナープロトコルとして HTTPS を選択し、ターゲットグループのプロトコルバージョンとして gRPC を選択し、設定されたターゲットグループのターゲットとしてインスタンスまたは IP を登録します。ALB は、リッチコンテンツベースのルーティング機能を提供します。これにより、gRPC 呼び出しを検査し、要求されたサービスとメソッドに基づいて適切なターゲットグループにルーティングできます。ターゲットグループ内で、ALB は gRPC 固有のヘルスチェックを使用してターゲットの可用性を判断し、gRPC 固有のアクセスログを提供してトラフィックを監視します。

このリリースでは、HTTP/2 をターゲットグループのプロトコルとして設定する機能も提供されています。そのように設定することで、クライアントからターゲットへのエンドツーエンドの HTTP/2 フローが可能になり、gRPC を使用していない場合でも HTTP/2 最適化のメリットが得られます。必要に応じて、単一の ALB の背後で gRPC、HTTP/2、および HTTP /1.1 アプリケーションの任意の組み合わせをサポートできます。

gRPC とエンドツーエンドの HTTP/2 のサポートは、すべての AWS リージョンで、既存および新規の Application Load Balancer で追加料金なしでご利用いただけます。詳細については、ブログ記事デモ、および ALB のドキュメントを参照してください。