Amazon VPC Lattice によるサービスネットワーキング - マイクロサービス間通信の簡素化
Envoy プロキシ不要の L7 サービスネットワーキングで、クロス VPC・クロスアカウントのマイクロサービス間通信を簡素化する。IAM 認証と App Mesh との使い分けを紹介します。
サービスネットワークの構成
VPC Lattice はアプリケーションレイヤー (L7) のサービスネットワーキングを提供し、複数の VPC やアカウントにまたがるサービス間通信を簡素化します。サービスネットワークは論理的な境界で、関連するサービスをグループ化します。VPC をサービスネットワークに関連付けると、その VPC 内のリソースからサービスネットワーク内の全サービスにアクセスできます。各サービスには自動生成された DNS 名が割り当てられ、VPC ピアリングや Transit Gateway の設定なしにクロス VPC 通信が可能です。RAM (Resource Access Manager) でサービスネットワークやサービスを他のアカウントと共有できます。
ルーティングと認証
サービスにはリスナー (HTTP または HTTPS) を設定し、リスナールールでリクエストのパス、ヘッダー、メソッドに基づくルーティングを定義します。ターゲットグループには EC2 インスタンス、IP アドレス、ECS タスク、Lambda 関数、ALB を登録でき、異なるコンピュートタイプを統一的に扱えます。加重ルーティングで複数のターゲットグループにトラフィックを分割し、カナリアリリースや Blue/Green デプロイを実現します。IAM 認証ポリシーをサービスネットワークまたはサービスに適用し、呼び出し元の IAM ロールに基づくアクセス制御を行います。SigV4 署名でリクエストを認証し、ポリシーで許可されたサービスのみが通信できます。
App Mesh との使い分け
VPC Lattice と App Mesh はどちらもサービス間通信を管理しますが、対象レイヤーと運用モデルが異なります。 VPC Lattice は L7 のサービスネットワーキングを AWS マネージドで提供し、 Envoy プロキシのデプロイや管理が不要です。 App Mesh は Envoy ベースのサービスメッシュで、サーキットブレーカーやリトライポリシーの細かい制御が可能ですが、サイドカープロキシの運用負荷があります。 VPC Lattice はクロス VPC ・クロスアカウントのサービス間通信に強みがあり、マイクロサービスが複数の VPC やアカウントに分散している環境に適しています。 App Mesh は単一 VPC 内のきめ細かいトラフィック制御 (カナリアデプロイ、トラフィックシフト) に適しています。両者を併用し、 VPC 間通信は Lattice 、 VPC 内通信は App Mesh で管理する構成も可能です。 サービスメッシュの基礎から応用まで、書籍 (Amazon)で体系的に学べます。
VPC Lattice の料金
VPC Lattice の料金はサービスの時間課金、リクエスト数、データ処理量の 3 要素で構成されます。サービスは 1 つあたり約 0.025 ドル/時で、リクエストは 100 万リクエストあたり約 0.10 ドル、データ処理は 1 GB あたり約 0.025 ドルです。ALB と比較すると、リクエスト単価は低いものの、サービス数が多い環境ではサービスの時間課金が積み上がります。サービスネットワークへの VPC アソシエーションは無料で、複数の VPC からサービスにアクセスしても追加のネットワーク料金は発生しません。アクセスログを S3 に出力してトラフィックパターンを分析し、利用頻度の低いサービスの統合を検討することでコストを最適化します。
まとめ
VPC Lattice はマイクロサービス間通信のネットワーク設定を簡素化し、IAM ベースの認証でサービス間のアクセス制御を実現します。サービスネットワークによるクロス VPC・クロスアカウント通信を Envoy プロキシなしで提供し、App Mesh と比較して運用負荷を大幅に削減します。L7 のルーティングルールでパスやヘッダーに基づくトラフィック制御を行い、アクセスログでトラフィックパターンを分析します。