shiichan

ECS のローリングデプロイ、「ここまで来たら OK」を自分で決められるように!

こんにちは、しぃちゃんだよ!ECS のデプロイまわりで地味に効きそうな新機能を見つけたよ!

AWS What's New aws.amazon.com

なにが発表されたの?

AWS What's New によると、Amazon ECS のローリングサービスデプロイに「Early Success Criteria」という機能が追加されたよ。デプロイが「成功した」と判断する基準を、ワークロードの特性や自分の安心できるラインに合わせて自分で決められるようになったの。

今までどうだったの?

これまでのローリングデプロイは、目標数のタスクがすべて正常に起動して初めて「成功」と見なされていたよ。GPU など特定のハードウェアが必要なワークロードだと、タスクの起動に時間がかかることがあって、その間デプロイ全体が完了せず、後続の CI/CD パイプラインや別のデプロイがブロックされたままになりがちだったの。

これで何が変わるの?

Early Success Criteria を使うと、「健全なタスクの割合(healthy percent)」を指定するだけで、その割合に達した時点でデプロイを成功扱いにできるようになるよ。例えば目標タスク数が 100 で healthy percent を 90% に設定した場合、90 個のタスクが健全になった時点でデプロイは成功と判定され、残り 10 個の起動は通常のサービススケーリングの枠組みで続けられるの。GPU 推論のようにハードウェア確保に時間がかかるワークロードでも、デプロイを早めに完了させて後続処理をブロックしないようにできるのが嬉しいポイントだね。

深く潜ってみよう

ソースリビジョン(デプロイ前の旧タスク)の後片付け方法も、2 通りから選べるようになっているよ。

  • BLOCKING:旧リビジョンのクリーンアップが完了してから、デプロイ成功を宣言する
  • DEFERRED:成功条件を満たした時点ですぐに成功を宣言し、旧タスクの終了は非同期で継続する

Early Success Criteria は、デプロイのロールバック監視をいつまで有効にするかにも関わっていて、設定した成功条件を満たすまではロールバック監視で保護しつつ、それ以降のスケールアウトは通常のサービススケーリングに任せる形になるよ。

この機能は、全ての AWS 商用リージョンと AWS GovCloud で、マネジメントコンソール・CLI・SDK・IaC ツールから設定できるよ。

まとめ

  • ECS のローリングデプロイに「Early Success Criteria」が追加
  • healthy percent を指定して、目標より早い段階でデプロイを成功扱いにできる
  • 旧リビジョンの後片付けは BLOCKING / DEFERRED から選択可能
  • 全商用リージョンと GovCloud で、コンソール・CLI・SDK・IaC から設定できる

GPU 推論など起動に時間がかかるワークロードを ECS で運用していて、デプロイの完了待ちに時間を取られていた人には、すぐ試したくなるアップデートだよ!