はじめに
こんにちは!クラウドアーキテクトの皆さん、そしてコンテナの運用に日々取り組んでいるエンジニアの皆さん。Amazon ECS(Elastic Container Service)に、非常に強力なアップデートが登場しました!
なんと、Amazon ECSがAmazon VPC Latticeを利用したデプロイにおいて、Blue/Green(ブルー/グリーン)、Linear(線形)、Canary(カナリア)デプロイメント戦略をネイティブにサポートしました。これにより、マルチアカウントやマルチVPCにまたがるマイクロサービス間通信において、より安全かつ高度なリリース管理が、極めてシンプルに実現できるようになります。
この機能の概要とメリット
Amazon VPC Latticeは、VPC間やAWSアカウント間のサービス間通信をシンプルに接続・保護・監視するためのフルマネージドサービスです。今回のアップデートにより、ECSサービスがVPC Latticeのトラフィックルーティングと直接連携し、以下の制御がECS側から直接可能になりました。
1. 3つのデプロイ戦略をネイティブサポート
システムの信頼性やリリース計画に応じて、以下の移行トラフィック制御を選択できます。
- Blue/Green(一括移行): 新バージョンを検証後、一瞬で100%のトラフィックを新しい環境へ切り替えます。
- Linear(線形移行): 「10分ごとに10%ずつ」といったように、等間隔で段階的にトラフィックを新しいバージョンへ移行します。
- Canary(カナリア移行): 最初に「5%だけ」などの少量のトラフィックを流して様子を見、問題がなければ残りのトラフィックを一気に、または段階的に移行します。
2. ライフサイクルフックによる柔軟なテスト・検証
本番トラフィックを移行する前に、テストトラフィックを用いた動作検証が可能です。AWS Lambdaやポーズ(Pause)フックといったデプロイメントライフサイクルフックを設定することで、自動テストの実行や管理者の手動承認をデプロイプロセスに直接組み込めます。
3. 強力な自動ロールバック機能
Amazon CloudWatchアラームや「ECSデプロイメントサーキットブレーカー(deployment circuit breaker)」と連動します。デプロイ中や、デプロイ完了後の「ベイク時間(Bake Time)」の間にエラーレートの上昇などを検知すると、自動的に以前の正常なバージョンへと瞬時にロールバックします。これにより、障害時のエンドユーザーへの影響を最小限に抑えられます。
想定されるユースケース
この機能は、特に以下のような環境や課題を持つ組織で絶大な効果を発揮します。
- 大規模なマイクロサービス構成: サービスごとにAWSアカウントやVPCが分かれている複雑なネットワーク環境において、サービス間のAPIアップデートを無停止かつ安全に行いたい場合。
- 自動化されたCI/CDパイプラインの構築: デプロイ後の結合テストをLambdaで自動実行し、テスト成功時のみ本番トラフィックを段階的に開放する仕組みを作りたい場合。
- 高トラフィックな本番環境の運用: わずかなシステムエラーも許されないクリティカルなサービスで、カナリアリリースによって本番への影響度を最小に抑えたい場合。
注意点や従来の機能との違い
従来、ECSでBlue/Greenデプロイやカナリアデプロイを行うには、Application Load Balancer (ALB) と AWS CodeDeploy を組み合わせるのが一般的でした。しかし、この構成にはいくつか運用の難しさがありました。
- CodeDeployの設定や権限、リソース管理が複雑になりがちだった。
- VPCを跨ぐマルチアカウントのサービス間通信に対してALBを配置すると、ネットワークトポロジーが複雑化し、PrivateLinkなどの管理コストが増大していた。
今回のアップデートにより、VPC LatticeのターゲットグループとECSサービスを紐付けるだけで、CodeDeployを介さずにECS単体で高度なトラフィックシフトをネイティブに管理できるようになりました。余計なリソースや設定を排除し、シンプルなインフラ構成を維持できます。
設定例(JSONイメージ)
AWS CLIやTerraform、AWS CloudFormationなどのIaCツールを利用して、ECSサービス作成・更新時にVPC Latticeの設定とデプロイ戦略を以下のように定義できるようになります。
{
"serviceName": "my-ecs-service",
"deploymentConfiguration": {
"deploymentController": {
"type": "ECS"
}
},
"vpcLatticeConfigurations": [
{
"targetGroupArn": "arn:aws:vpc-lattice:ap-northeast-1:123456789012:targetgroup/tg-xxxxxx",
"port": 80
}
],
"deploymentStrategy": {
"type": "CANARY",
"canaryConfig": {
"percent": 10,
"bakeTimeInMinutes": 5
}
}
}
※上記は設定のイメージです。実際の実装時には最新のAWS公式ドキュメントやスキーマを参照してください。
まとめ
今回の「Amazon ECSのVPC Lattice連携によるBlue/Green・カナリアデプロイのサポート」は、マルチVPC/マルチアカウントでのモダンアプリケーション構築におけるネットワークとデプロイの複雑さを一気に解消する素晴らしいアップデートです。
VPC Latticeによるサービスメッシュの利便性はそのままに、コンテナのデプロイをより安全かつ迅速に行うことができるようになります。VPC Latticをすでに本番環境で利用している方はもちろん、これからマイクロサービスアーキテクチャを設計・拡張する予定のエンジニアの皆さんも、ぜひこの新機能を試してみてください!