APC 技術ブログ

株式会社エーピーコミュニケーションズの技術ブログです。

株式会社 エーピーコミュニケーションズの技術ブログです。

【AWS】Amazon ECSがBlue/Green Deploymentをネイティブサポートしたので簡単に調査してみる

こんにちは、クラウド事業部の山路です。

今回は先日のアップデートで実装されたAmazon ECSネイティブなBlue/Green Deploymentを簡単に紹介します。

aws.amazon.com

背景

コンテナイメージにおけるデプロイ戦略には、 Rolling update Blue/Green Deployment Canary Deployment という主要な3つの手法が知られています。

Amazon ECSは Rolling update をネイティブにサポートしております。また他の2つの手法も、AWS CodeDeployやAWS ALB / Route53などの別サービスと組み合わせることで実現可能です。

これまでAWSでは、Blue/Green Deploymentを実現するために、CodeDeployを使った方法が案内されていました。今回のリリースによりECSがネイティブにBlue/Green Deploymentをサポートしたことで、以下のような改善点があります。

  • ECSおよび周辺リソースのみで完結できる: CodeDeployによるBlue/Green Deploymentを行うには、CodeDeploy Application/Deployment、ECSを操作するためのIAMロール、 AppSpec などといったリソースが必要です。これらが一気に不要となり、運用コストが削減されます。
  • デプロイ戦略の切り替えが容易に可能: CodeDeploy利用時はRolling updateとBlue/Green Deploymentの手法を切り替える際、ECSサービスの再作成が必要な場合がありました。ネイティブではサービス作成後も切り替えが可能となり、運用コストの削減が見込めます。
  • Service Connectに対応: ECSはService Connectという機能でECSサービス間の通信を実現できます。CodeDeployはService ConnectによるBlue/Green Deploymentは非対応でしたので、本リリースでより高度なデプロイも実現可能となりました。
  • 設定情報の集約: CodeDeployではELB/Target groupに関連する設定変更は AppSpec を介して行う必要がありました。ネイティブではこれらがECSサービス定義に統合されるため、より一貫性のある管理が可能です。

※参考:

dev.to

またこのほかにも、デプロイライフサイクルのステージごとにLambda関数で定義したロジックを用いて成否を判定したり(Deployment lifecycle hook)、テスト用Listener / Listener Ruleにより切り替え前に新環境を評価するDark Canaryの実現、といった機能も利用可能です。

なおAWSドキュメントではECSネイティブなBlue/Green Deploymentを推奨するほか、CodeDeployからECSネイティブへの移行方法も案内されています。そのため今後該当機能を利用する場合はECSネイティブの方を念頭に置くべきでしょう。

docs.aws.amazon.com

ECSネイティブなBlue/Green Deploymentの利用方法

本機能を利用するには、いくつかの前提条件やリソースが必要です。

  • 更新対象のECSサービスがELBまたはService Connectを利用していること
  • ELBの場合
    • Target group (やListener) を2つ用意すること
    • ECSからALBを操作するIAMロールを用意すること

docs.aws.amazon.com

今回はAmazon ECSとALBおよび周辺リソースを用意したうえでAWSマネジメントコンソールから操作してみました。操作はECSサービスの 更新 画面から行います。

更新画面を開くと デプロイオプション の中にBlue/Green Deploymentの選択肢が確認できます。

ブルー/グリーン を選択すると設定項目が表示されます。

ELBを使用する場合は ロードバランサー の項目も設定が必要です。今回はLBやListener、Target Groupのほか、オプションで 代替ターゲットグループを作成 を選択しました。こちらを選択すると切り替え時に新規Target groupを作成し、作成したものへと切り替えます。

設定後に更新を開始すると、デプロイのステータスのほか、サービスリビジョン間の設定比較、ロールバック時は原因となるエラーメッセージなどが表示されます。

無事に成功したときの例はこちら。

最後に

APCはAWS Advanced Tier Services(アドバンストティアサービスパートナー)認定を受けております。


その中で私達クラウド事業部はAWSなどのクラウド技術を活用したSI/SESのご支援をしております。

www.ap-com.co.jp

また、一緒に働いていただける仲間も募集中です!
今年もまだまだ組織規模拡大中なので、ご興味持っていただけましたらぜひお声がけください。

www.ap-com.co.jp