こんにちは、クラウド事業部の山路です。
今回は先日のアップデートで実装されたAmazon ECSネイティブなBlue/Green Deploymentを簡単に紹介します。
背景
コンテナイメージにおけるデプロイ戦略には、 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サービス定義に統合されるため、より一貫性のある管理が可能です。
※参考:
またこのほかにも、デプロイライフサイクルのステージごとにLambda関数で定義したロジックを用いて成否を判定したり(Deployment lifecycle hook)、テスト用Listener / Listener Ruleにより切り替え前に新環境を評価するDark Canaryの実現、といった機能も利用可能です。
なおAWSドキュメントではECSネイティブなBlue/Green Deploymentを推奨するほか、CodeDeployからECSネイティブへの移行方法も案内されています。そのため今後該当機能を利用する場合はECSネイティブの方を念頭に置くべきでしょう。
ECSネイティブなBlue/Green Deploymentの利用方法
本機能を利用するには、いくつかの前提条件やリソースが必要です。
- 更新対象のECSサービスがELBまたはService Connectを利用していること
- ELBの場合
- Target group (やListener) を2つ用意すること
- ECSからALBを操作するIAMロールを用意すること
今回はAmazon ECSとALBおよび周辺リソースを用意したうえでAWSマネジメントコンソールから操作してみました。操作はECSサービスの 更新
画面から行います。
更新画面を開くと デプロイオプション
の中にBlue/Green Deploymentの選択肢が確認できます。
ブルー/グリーン
を選択すると設定項目が表示されます。
ELBを使用する場合は ロードバランサー
の項目も設定が必要です。今回はLBやListener、Target Groupのほか、オプションで 代替ターゲットグループを作成
を選択しました。こちらを選択すると切り替え時に新規Target groupを作成し、作成したものへと切り替えます。
設定後に更新を開始すると、デプロイのステータスのほか、サービスリビジョン間の設定比較、ロールバック時は原因となるエラーメッセージなどが表示されます。
無事に成功したときの例はこちら。
最後に
APCはAWS Advanced Tier Services(アドバンストティアサービスパートナー)認定を受けております。
その中で私達クラウド事業部はAWSなどのクラウド技術を活用したSI/SESのご支援をしております。
また、一緒に働いていただける仲間も募集中です!
今年もまだまだ組織規模拡大中なので、ご興味持っていただけましたらぜひお声がけください。