Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ECS組み込みのBlue/Greenデプロイを動かしてELB側の動きを観察してみる

Avatar for 矢儀丈博 矢儀丈博
November 19, 2025

 ECS組み込みのBlue/Greenデプロイを動かしてELB側の動きを観察してみる

Avatar for 矢儀丈博

矢儀丈博

November 19, 2025
Tweet

More Decks by 矢儀丈博

Other Decks in Technology

Transcript

  1. ◆自己紹介 名前:矢儀 丈博(やぎ たけひろ) 年齢:27歳 出身:山口県 業務:カード会社様のAWS基盤保守など 好きなAWSサービス: Amazon VPC

    ECS組み込みのBlue/Greenデプロイを動かしてELB側の動きを観察してみる 2 #nw_jaws でツイート お願いします!
  2. ◆目次 1. イントロダクション – ECS組み込みのBlue/Greenデプロイについて 2. デプロイ時のELB側の挙動を観察してみる - ALBの場合 -

    NLBの場合 3. 触ってみた感想 4. まとめ 3 ECS組み込みのBlue/Greenデプロイを動かしてELB側の動きを観察してみる
  3. ◆イントロダクション – ECS組み込みのBlue/Greenデプロイについて CodeDeploy blue/green deployments for Amazon ECS -

    Amazon Elastic Container Service 5 ECS組み込みのBlue/Greenデプロイを動かしてELB側の動きを観察してみる
  4. ◆デプロイ時のELB側の挙動を観察してみる – ALBの場合 ALB ECS Task (Blue) Listener 本番用 (HTTPS

    443) Target Group プライマリ (Blue) Listener テスト用 (HTTPS 8443) Target Group 代替 (Green) User Developer 100% 0% 0% 100% 8 ECS組み込みのBlue/Greenデプロイを動かしてELB側の動きを観察してみる 本番トラフィック テストトラフィック ALBの場合、リスナールールの重みでターゲットが制御される トラフィックの管理が「リスナー単位」ではなく「リスナールール単位」 テスト用に別ポートを開けることが必須ではなく、ヘッダなどの条件でも切り替えられる 初期状態 任意
  5. ◆デプロイ時のELB側の挙動を観察してみる – ALBの場合 ALB ECS Task (Blue) Listener 本番用 (HTTPS

    443) Target Group プライマリ (Blue) Listener テスト用 (HTTPS 8443) Target Group 代替 (Green) User Developer 100% 0% 0% 100% 10 ECS組み込みのBlue/Greenデプロイを動かしてELB側の動きを観察してみる 本番トラフィック テストトラフィック グリーンサービスリビジョンのデプロイ Task (Green)
  6. ◆デプロイ時のELB側の挙動を観察してみる – ALBの場合 ALB ECS Task (Blue) Listener 本番用 (HTTPS

    443) Target Group プライマリ (Blue) Listener テスト用 (HTTPS 8443) Target Group 代替 (Green) User Developer 100% 0% 100% 0% 11 ECS組み込みのBlue/Greenデプロイを動かしてELB側の動きを観察してみる 本番トラフィック テストトラフィック Task (Green) テストトラフィックの移行
  7. ◆デプロイ時のELB側の挙動を観察してみる – ALBの場合 ALB ECS Task (Blue) Listener 本番用 (HTTPS

    443) Target Group プライマリ (Blue) Listener テスト用 (HTTPS 8443) Target Group 代替 (Green) User Developer 0% 100% 100% 0% 本番トラフィックの移行 12 ECS組み込みのBlue/Greenデプロイを動かしてELB側の動きを観察してみる 本番トラフィック テストトラフィック Task (Green)
  8. ◆デプロイ時のELB側の挙動を観察してみる – ALBの場合 ALB ECS Listener 本番用 (HTTPS 443) Target

    Group プライマリ (Blue) Listener テスト用 (HTTPS 8443) Target Group 代替 (Green) User Developer 0% 100% 100% 0% 完了 13 ECS組み込みのBlue/Greenデプロイを動かしてELB側の動きを観察してみる 本番トラフィック テストトラフィック Task (Green) ベイク時間 (最短0秒・最長24時間) のあと Task (Blue) は削除される
  9. ◆デプロイ時のELB側の挙動を観察してみる – NLBの場合 NLB ECS Task (Blue) Listener 本番用 (TCP

    8080) Target Group プライマリ (Blue) Listener テスト用 (TCP 3128) Target Group 代替 (Green) User Developer 15 ECS組み込みのBlue/Greenデプロイを動かしてELB側の動きを観察してみる 本番トラフィック テストトラフィック 代替ターゲットグループへの紐づけはなし 初期状態
  10. ◆デプロイ時のELB側の挙動を観察してみる – NLBの場合 NLB ECS Task (Blue) Listener 本番用 (TCP

    8080) Target Group プライマリ (Blue) Listener テスト用 (TCP 3128) Target Group 代替 (Green) User Developer 16 ECS組み込みのBlue/Greenデプロイを動かしてELB側の動きを観察してみる 本番トラフィック テストトラフィック グリーンサービスリビジョンのデプロイ Task (Green)
  11. ◆デプロイ時のELB側の挙動を観察してみる – NLBの場合 NLB ECS Task (Blue) Listener 本番用 (TCP

    8080) Target Group プライマリ (Blue) Listener テスト用 (TCP 3128) Target Group 代替 (Green) User Developer 17 ECS組み込みのBlue/Greenデプロイを動かしてELB側の動きを観察してみる 本番トラフィック テストトラフィック Task (Green) テストトラフィックの移行
  12. ◆デプロイ時のELB側の挙動を観察してみる – NLBの場合 NLB ECS Task (Blue) Listener 本番用 (TCP

    8080) Target Group プライマリ (Blue) Listener テスト用 (TCP 3128) Target Group 代替 (Green) User Developer 本番トラフィックの移行 18 ECS組み込みのBlue/Greenデプロイを動かしてELB側の動きを観察してみる 本番トラフィック テストトラフィック Task (Green)
  13. ◆デプロイ時のELB側の挙動を観察してみる – NLBの場合 NLB ECS Listener 本番用 (TCP 8080) Target

    Group プライマリ (Blue) Listener テスト用 (TCP 3128) Target Group 代替 (Green) User Developer 完了 19 ECS組み込みのBlue/Greenデプロイを動かしてELB側の動きを観察してみる 本番トラフィック テストトラフィック Task (Green) ベイク時間 (最短0秒・最長24時間) のあと Task (Blue) は削除される
  14. ◆触ってみた感想 • 「本番トラフィックの移行前に1時間の猶予期間を持たせて、その間にテストしよう!」ができないのが残念 21 ECS組み込みのBlue/Greenデプロイを動かしてELB側の動きを観察してみる NLB ECS Task (Blue) Listener

    本番用 (TCP 8080) Target Group プライマリ (Blue) Listener テスト用 (TCP 3128) Target Group 代替 (Green) User Lambda function 本番トラフィック テストトラフィック Task (Green) テストトラフィックの移行 人ではなく、ライフサイクルフックによって Lambda関数を呼び出す形でテストする必要がある
  15. ◆触ってみた感想 • ECSがELBを操作できるように、IAMロールの設定が必要 22 ECS組み込みのBlue/Greenデプロイを動かしてELB側の動きを観察してみる NLB ECS Task (Blue) Listener

    本番用 (TCP 8080) Target Group プライマリ (Blue) Listener テスト用 (TCP 3128) Target Group 代替 (Green) User Lambda function 本番トラフィック テストトラフィック Task (Green) ECSサービスとELBを紐づける際に 同時にIAMロールの指定も必要 Role 専用のマネージドポリシーも提供されている
  16. ◆触ってみた感想 • ターゲットグループの「Blue」と「Green」は交互に切り替わる! • ネーミングは気を付けてたほうがいいかも 23 ECS組み込みのBlue/Greenデプロイを動かしてELB側の動きを観察してみる NLB ECS Listener

    本番用 (TCP 8080) Target Group プライマリ (Blue) Listener テスト用 (TCP 3128) Target Group 代替 (Green) User Lambda function 本番トラフィック テストトラフィック Task (Green) Role 次のデプロイのタイミングでは こっちが「Blue」に
  17. ◆参考 • ECSのBlue/Greenデプロイメントの挙動を勘違いしていた話 | iret.media • Amazon ECS Blue/Green Deploymentは既存のCodeDeploy方式と何が違うのか?

    - How elegant the tech world is...! • Blue/Greenデプロイメントで利用するターゲットグループに別途リスナーを紐付けても問題ないか調査してみた | DevelopersIO • CodeDeployによるECSのBlue/Greenデプロイの挙動を図解したい #AWS – Qiita • Amazon ECSでBlue/Green Deploymentを使用しTarget group切り替えの挙動を確認する • ECSのネイティブなBlue/Greenデプロイを試してみた | DevelopersIO • ECSのネイティブBlue/Greenが登場したので検証!フック・Dark Canary・コントローラ更新も強力 • ECS built-in Blue/Greenデプロイについて - NIFTY engineering • Amazon ECS Blue/Greenデプロイに必要なリソース - Amazon Elastic Container Service ECS組み込みのBlue/Greenデプロイを動かしてELB側の 動きを観察してみる 26