ある企業がAmazon ECSのFargateクラスターにマイクロサービスをデプロイしている。新しいタスク定義をデプロイする際にBlue/Greenデプロイを実現したいが、デプロイ中のロールバック時間を5分以内に抑えたいという要件がある。また、コスト最適化のため新旧タスクを同時に長時間稼働させることを避けたい。最も要件を満たすデプロイ戦略の設定はどれか。
- A. ECSサービスのローリングアップデートを使い、デプロイメント設定のMinimumHealthyPercent:50とMaximumPercent:200を設定する
- B. CodeDeployのECSデプロイグループでCanary10Percent5Minutesを使い、テスト完了後に残り90%を移行する
- C. CodeDeployのECSデプロイグループでLinear10PercentEvery1Minuteを使い、デプロイ中にCloudWatchアラームで自動ロールバックを設定する
- D. CodeDeployのECSデプロイグループでAllAtOnceを使い、ヘルスチェック失敗時の自動ロールバックを有効にする
解答と解説を見る
正解: D
CodeDeployのAllAtOnceはすべてのトラフィックを即座に新バージョンに切り替える。自動ロールバックが有効な場合、ヘルスチェック失敗時にもすぐにトラフィックを旧バージョン(Blue環境)に戻せるため5分以内のロールバックが可能である。さらにAllAtOnceは移行が一瞬で完了するため、新旧タスクを長時間並行稼働させるコストが発生しない。BのCanary10Percent5Minutesは最初の5分間は10%のみ新バージョンに送るため、完全移行まで時間がかかり、その間は新旧両方のタスクが稼働してコストが増加する。CのLinear10PercentEvery1Minuteは10分かけて移行するため、新旧タスクの並行稼働が長くコスト面で不利である。AのECSローリングアップデートはCodeDeployのBlue/Greenではなく、詳細なデプロイ制御ができずロールバックも遅い。
📚 関連サービスの解説: AWS CodeDeploy ・ Amazon ECS