はじめに
AWSコンテナ運用のデファクトスタンダードであるAmazon Elastic Container Service(Amazon ECS)。その強力なサービスメッシュ機能である「ECS Service Connect」において、非常に嬉しいアップデートが発表されました!
なんと、ECS Service Connectが「Zone-Aware(ゾーン認識)ルーティング」をサポートしました。これにより、マルチAZ環境でのサービス間通信において、パフォーマンスの向上と通信コストの削減を、追加料金なし&ほぼ自動で享受できるようになります。
本記事では、この注目の新機能の概要、メリット、実務におけるユースケースや移行時の注意点について、アーキテクトの視点から分かりやすく解説します。
この機能の概要とメリット
ECS Service Connectは、ECSタスク間でのサービス発見(Service Discovery)と通信を簡単にする機能です。これまでは、宛先となるタスクがどのアベイラビリティゾーン(AZ)に存在するかを意識せず、ラウンドロビンなどで均等にトラフィックを分散していました。
今回のアップデートにより導入された「Zone-Awareルーティング」は、リクエストの送信元タスクと同じAZにある宛先エンドポイント(タスク)を自動的に検出し、優先的にトラフィックをルーティングする機能です。
主なメリット
- データ転送コスト(Cross-AZコスト)の大幅な削減: AWSでは、異なるAZ間での通信(クロスAZ通信)に対してデータ転送課金が発生します。Zone-Awareルーティングにより通信が同一AZ内で完結しやすくなるため、転送コストを劇的に抑えられます。
- ネットワークレイテンシーの低減: 物理的に距離の近い同一AZ内で通信が処理されるため、マイクロサービス間のレスポンスタイムが向上します。
- 自動的な負荷分散と高可用性: 同一AZ内の宛先タスクがスケールアウト・インするのに伴い、トラフィックの重みを動的に調整します。また、同一AZ内のタスクが不健全(Unhealthy)になったり、キャパシティが不足したりした場合は、他の健全なAZへと自動的にトラフィックを再配分(フェイルオーバー)するため、システムの可用性を損なうことはありません。
想定されるユースケース
この機能は、特に以下のような環境で大きな威力を発揮します。
- マルチAZ構成を採用している大規模マイクロサービス: サービスA → サービスB → サービスC のように何段もサービス間通信が発生するアーキテクチャでは、これまでAZをまたぐたびにレイテンシーとコストが蓄積されていました。Zone-Awareルーティングを適用することで、これらを劇的に改善できます。
- 高スループット・低遅延が求められるAPIサーバ: 決済処理やリアルタイム配信など、1ミリ秒の遅延がビジネスに影響するシステムにおいて、同一AZ内通信の最適化は極めて有効です。
- クラウドコストの最適化(FinOps)を推進中のプロジェクト: インフラ構成を変更することなく、有効化するだけでデータ転送コストを削減できるため、コスト削減の「ローハンギングフルーツ(すぐに実行できる施策)」として最適です。
注意点や従来の機能との違い
本機能は非常に強力ですが、実務で導入する際には以下のポイントを押さえておきましょう。
1. 基本的に「設定不要(デフォルト有効)」
新規に作成されるECS Service Connect対応サービス、および既存のサービスにおいて、Zone-Awareルーティングはデフォルトで有効になります。特別なパラメータ設定や、アプリケーションコードの変更は一切不要です。
ECS Service Connectを有効化する際の標準的なサービス定義(JSON)の例を以下に示します。特別な追加記述は必要ありません。
{
"serviceConnectConfiguration": {
"enabled": true,
"namespace": "my-service-mesh",
"services": [
{
"portName": "http-port",
"discoveryName": "backend-service"
}
]
}
}
2. 既存サービスには「再デプロイ」が必要
既に稼働している既存のECSサービスに対してこの新しいルーティング動作を適用するには、1回限りの再デプロイ(サービスの更新)が必要になります。自動で即座に適用されるわけではないため、計画的なデプロイをスケジュールしてください。
3. 効果の測定方法
Zone-Awareルーティングが実際に効いているかどうか、どれくらいクロスAZ通信が削減されたかを検証するには、Amazon VPC Flow Logsを活用します。VPC Flow LogsにAZメタデータを追加することで、同一AZ内通信とクロスAZ通信の比率をモニタリングすることが可能です。
まとめ
Amazon ECS Service ConnectのZone-Awareルーティングは、これまでトレードオフの関係になりがちだった「マルチAZによる可用性の担保」と「コスト・レイテンシーの削減」を両立させる素晴らしいアップデートです。
追加のインフラコストも不要なため、ECS Service Connectを利用中の開発者は、ぜひ既存のサービスを再デプロイしてこの恩恵を受けましょう。これから新規にECSでマイクロサービスを立ち上げる場合も、Service Connectの採用を強く後押しする強力な動機となるでしょう。