Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ECSネイティブのBlue/Green デプロイを攻略しよう ~CodeDeployとの違いか...
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
井手亮太
February 14, 2026
Technology
470
4
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ECSネイティブのBlue/Green デプロイを攻略しよう ~CodeDeployとの違いから、デプロイフロー実装まで~
井手亮太
February 14, 2026
More Decks by 井手亮太
See All by 井手亮太
マンスリーアップデート4月分
ideaws
0
62
マンスリーアップデート2月分
ideaws
0
64
re:Invent のとあるアップデートについて~UFO隊は来させません~
ideaws
0
70
12月マンスリーアップデート
ideaws
0
70
Strands Agents & Amazon Bedrock AgentCoreで広がるAIエージェントの可能性
ideaws
0
46
Japan AWS Jr. Champions を目指して、そしてその先へ
ideaws
0
160
描くのはAI、創るのはあなた Amazon Nova Canvas の世界
ideaws
0
29
手動からの解放!!Strands Agents で実現する総合テスト自動化
ideaws
5
1.1k
Other Decks in Technology
See All in Technology
【セミナー資料】Claude Code をセキュアに使うための考え方と設定の勘どころ / Claude Code Webinar 20260616
masahirokawahara
1
120
SONiC Scale-Up Working Group から探る Scale-UpやUltraEthernet機能の実装方法
ebiken
PRO
2
240
【Cyber-sec+】経営層を"動かす"ための考え方
hssh2_bin
0
170
"何を作るか"を任される エンジニアは、どう育つのか
yutaokafuji
1
660
現地で盛り上がった WWDC26 Keynote
zozotech
PRO
1
230
2026TECHFRESH畢業分享會 - 葬送的通靈師:化系統與用戶雜訊成行動訊號
line_developers_tw
PRO
0
940
あなたの知らないPDFのアクセシビリティ
lycorptech_jp
PRO
0
160
AIネイティブな開発のサプライチェーンリスク対策 〜激動の開発現場でリスクに立ち向かう〜【ZennFes】
cscengineer
PRO
2
110
Bucharest Tech Week 2026 - Reinventing testing practices in the AI era
edeandrea
PRO
1
150
How Timee Delivers Day 1 Production Ready LLM Features
tomoyks
0
190
Snowflakeと仲良くなる第一歩
coco_se
4
440
Socrates × Looker 〜セマンティックレイヤーで進化するデータ分析エージェント〜
hanon52_
3
2.3k
Featured
See All Featured
Code Review Best Practice
trishagee
74
20k
Code Reviewing Like a Champion
maltzj
528
40k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
360
The Art of Programming - Codeland 2020
erikaheidi
57
14k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.5k
Git: the NoSQL Database
bkeepers
PRO
432
67k
Between Models and Reality
mayunak
4
330
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
380
Optimising Largest Contentful Paint
csswizardry
37
3.7k
AI: The stuff that nobody shows you
jnunemaker
PRO
8
710
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
370
Transcript
ECS ネイティブの Blue/Green デプロイを攻略しよう ~CodeDeployとの違いからデプロイフロー実装まで~ 2026年2月13日 NRIネットコム株式会社 NTシステム事業二部 井手 亮太
JAWS-UG 朝会
1 Copyright(C) NRI Netcom, Ltd. All rights reserved. 話すこと・話さないこと
話すこと 話さないこと 本日の発表内容 ECSネイティブの Blue/Green デプロイとは Blue/Green デプロイとは デプロイフローを組むうえで使用したツール・機能の説明 CodeDeploy⇒ECSネイティブ方式への移行 CodeDeploy 方式との違い 持ち帰っていただきたいこと ECSネイティブ方式の Blue/Green デプロイ が推奨されている理由 デプロイフローを組むためのツールや機能
2 Copyright(C) NRI Netcom, Ltd. All rights reserved. 話すこと・話さないこと
話すこと 話さないこと 本日の発表内容 ECSネイティブの Blue/Green デプロイとは デプロイフローを組むうえで使用したツール・機能の説明 CodeDeployを使用したBlue/Green デプロイは↑を参照 CodeDeployからの移行は↑を参照 https://aws.amazon.com/jp/blogs/news/migrating-from-aws-codedeploy-to- amazon-ecs-for-blue-green-deployments/ https://tech.nri-net.com/entry/aws_ecs_deploy CodeDeploy 方式との違い Blue/Green デプロイとは CodeDeploy⇒ECSネイティブ方式への移行
3 Copyright(C) NRI Netcom, Ltd. All rights reserved. 自己紹介 自己紹介
基本情報 井手 亮太(いで りょうた) 大学時代は宇宙物理学を専攻 AWSを中心としたシステム運用・構築 サッカー観戦が生きがいのエンジニア 執筆ブログ 保有資格 好きなAWS サービス Amazon Bedrock Amazon ECS
4 Copyright(C) NRI Netcom, Ltd. All rights reserved. ECS ネイティブの
Blue/Green デプロイとは
5 Copyright(C) NRI Netcom, Ltd. All rights reserved. ECS ネイティブの
Blue/Green デプロイとは ECS ネイティブの Blue/Green デプロイとは Amazon ECS 内で完結してBlue/Green デプロイを可能とする機能 これまで、ECS上で動作するアプリケーションのBlue/Green デプロイを実施するには CodeDeployを介する必要があった Amazon ECS AWS CodeDeploy
6 Copyright(C) NRI Netcom, Ltd. All rights reserved. CodeDeploy 方式との比較
7 Copyright(C) NRI Netcom, Ltd. All rights reserved. CodeDeploy 方式の
Blue/Green デプロイ CodeDeploy 方式との比較 CodeDeploy で Blue/Green デプロイするために必要な設定 アプリケーション、デプロイグループ、appspec.yml 等を用意する必要があった ECS ネイティブ方式ではこれらのリソースが不要 AppSpec ファイルの例 - AWS CodeDeploy
8 Copyright(C) NRI Netcom, Ltd. All rights reserved. ECS ネイティブの
Blue/Green デプロイを使用するべき理由 CodeDeploy 方式との比較 サーキットブレイカー機能 が使える CodeDeploy を介す必要がなくなった以外にも様々なメリットがある Service Connect に対応 Blue・Green の紐づけが リスナールール単位に
9 Copyright(C) NRI Netcom, Ltd. All rights reserved. Service Connect
に対応 CodeDeploy 方式との比較 これまでは、ローリングアップデート のみの対応 Service Connect に対応 マイクロサービス化を実現する場合、機能ごとにECSサービスを分割することが考えられる ECSネイティブ方式では Blue/Green デプロイが可能に サービス間通信の一つとして、 Service Connect があった。 改めてECSサービス間通信を整理する - NRIネットコムBlog より引用
10 Copyright(C) NRI Netcom, Ltd. All rights reserved. サーキットブレイカー機能が使える CodeDeploy
方式との比較 v2 サーキットブレイカーとは デプロイ異常(コンテナ起動しない、ヘルスチェック失敗する等)あれば、自動ロールバックしてくれる機能 • CodeDeployによる Blue/Green デプロイ では、 サーキットブレイカーが使用不可 • 異常発生⇒即ロールバックを実現するには別途 CloudWatch アラーム、もしくはhook関数の実装が必要だった v1 v1 v1
11 Copyright(C) NRI Netcom, Ltd. All rights reserved. リスナー単位からリスナールール単位に CodeDeploy
方式との比較 ポートだけではなく、パスやヘッダーで本番・テストトラフィックが切り替えられるようになった。
12 Copyright(C) NRI Netcom, Ltd. All rights reserved. ECS ネイティブのBlue/Green
デプロイの流れ
13 Copyright(C) NRI Netcom, Ltd. All rights reserved. デプロイ前 ECS
ネイティブの Blue/Green デプロイの流れ Blue Target Group Green Target Group テストリスナールール 本番リスナールール / でアクセス /test でアクセス 100 100 0 0 ALB Amazon ECS 本番・テスト用リスナールール それぞれに Blue・Green両方の ターゲットグループが紐づいている トラフィックの向き先は、ターゲット グループの「重みづけ」に基づく
14 Copyright(C) NRI Netcom, Ltd. All rights reserved. テストトラフィック移行 ECS
ネイティブの Blue/Green デプロイの流れ Blue Target Group Green Target Group テストリスナールール 本番リスナールール / でアクセス /test でアクセス 100 0 100 0 ALB Amazon ECS Green用ターゲットグループで タスクが起動 テスト用リスナールールの ターゲットグループの重みが変化
15 Copyright(C) NRI Netcom, Ltd. All rights reserved. 本番トラフィック移行 ECS
ネイティブの Blue/Green デプロイの流れ Blue Target Group Green Target Group テストリスナールール 本番リスナールール / でアクセス /test でアクセス 0 0 100 100 ALB Amazon ECS 本番用リスナールールの重みが変化 トラフィックがGreen環境に向く
16 Copyright(C) NRI Netcom, Ltd. All rights reserved. Blue 環境のタスク削除
ECS ネイティブの Blue/Green デプロイの流れ Blue Target Group Green Target Group テストリスナールール 本番リスナールール / でアクセス /test でアクセス 0 0 100 100 ALB Amazon ECS ベイク時間経過後、Blue環境の タスクが削除される
17 Copyright(C) NRI Netcom, Ltd. All rights reserved. デプロイフローを組んでみる
18 Copyright(C) NRI Netcom, Ltd. All rights reserved. 全体構成図 デプロイフローを組んでみる
ecspresso ALB Service Task tfstate tfstateを参照 …etc デプロイ ECS Cluster push Lambda • ECS サービス・タスクは ecspresso で管理 • それ以外のリソースは HCP Terraform で管理 • GitHub Actionsでデプロイ ECR
19 Copyright(C) NRI Netcom, Ltd. All rights reserved. 全体構成図 デプロイフローを組んでみる
1. ecspresso とは 2. ecspresso とHCP Terraformの連携方法 3. Blue/Green デプロイ中のライフサイクル用 Lambda ecspresso ALB Service Task tfstate tfstateを参照 …etc デプロイ ECS Cluster push Lambda ECR ① ② ③
20 Copyright(C) NRI Netcom, Ltd. All rights reserved. ecspresso とは
デプロイフローを組んでみる ECS サービス・タスクのデプロイに特化したツール CI/CD ツールとの親和性 アプリ・インフラの責任範囲分離 AWS CloudFormation ecspresso アプリとインフラリソースでは更新サイクルが異なる ecspresso は IaC との連携が可能 CLI ベースで差分検出・デプロイ・ロールバックができるため、 自動化パイプラインとの統合が容易。 Github アイコン: Logo - Brand Toolkit Jenkins : Artwork Terraform : HashiCorp Brand Guidelines - Product Logos
21 Copyright(C) NRI Netcom, Ltd. All rights reserved. ecspresso とは
デプロイフローを組んでみる ecspresso の設定ファイルは 3つ ecspresso.yml:どのECSサービス・タスクを管理するのかを記した設定ファイル ecs-service.json ECSサービスの設定値を定義するファイル ecs-task-def.json タスク定義を記すファイル デプロイ手法の設定 ネットワーク設定(どのVPC?どのサブネット?どのALB?) CPU、メモリなどのスペック設定 コンテナイメージ・IAMロールの設定
22 Copyright(C) NRI Netcom, Ltd. All rights reserved. ecspresso での
Blue/Green デプロイ ECS Blue/Green デプロイフローを組んでみる ecs-service.json 内の deploymentConfiguration で設定 Blue Target Group Green Target Group テストリスナールール 本番リスナールール / でアクセス /test でアクセス 100 100 0 0 ALB Amazon ECS
23 Copyright(C) NRI Netcom, Ltd. All rights reserved. ecspresso と
HCP Terraform の連携 デプロイフローを組んでみる ecspresso と HCP Terraform の連携方法 2. ecspresso.yml 内で tfstate プラグインを使用する 1. HCP Terraform で API Tokenを発行し、環境変数に登録 Manage API tokens for HCP Terraform | Terraform | HashiCorp Developer Add support Terraform Cloud / Terraform Enterprise by cohalz · Pull Request #30 · fujiwara/tfstate-lookup · GitHub HCP Terraform 上の tfstate を参照できるようになる urlには、HCP Terraform の Organizations、ワークスペース を入力する
24 Copyright(C) NRI Netcom, Ltd. All rights reserved. Blue/Green デプロイあるある
デプロイフローを組んでみる 本番トラフィックの向き先を変更する前に、十分な動作確認をしたい!! 本番リスナールールのトラフィックが Green環境に向く前に動作確認をしたい
25 Copyright(C) NRI Netcom, Ltd. All rights reserved. Blue/Green デプロイあるある
デプロイフローを組んでみる 本番トラフィックの向き先を変更する前に、十分な動作確認をしたい!! トラフィックの切り替わりは、自動的に実施される。 ⇒ デプロイを一時停止する仕組みが必要
26 Copyright(C) NRI Netcom, Ltd. All rights reserved. 全体構成図(再掲) デプロイフローを組んでみる
そこで登場するのが。。。ライフサイクルフックのLambda ecspresso ALB Service Task tfstate tfstateを参照 …etc デプロイ ECS Cluster push Lambda ECR
27 Copyright(C) NRI Netcom, Ltd. All rights reserved. ライフサイクルフックとは デプロイフローを組んでみる
デプロイのプロセスを制御できる仕組みのこと デプロイ中の各ライフサイクルステージでLambdaを実行 レスポンス値によってデプロイのロールバック・一時停止・進行を制御
28 Copyright(C) NRI Netcom, Ltd. All rights reserved. ライフサイクルフックとは デプロイフローを組んでみる
デプロイのプロセスを制御できる仕組みのこと デプロイ中の各ライフサイクルステージでLambdaを実行 レスポンス値によってデプロイのロールバック・一時停止・進行を制御 概要 hookstatus 30秒後にLambdaが再試行(秒数は変更可能) IN_POGRESS デプロイが次のライフサイクルステージに向かう SUCCEEDED ロールバックされる FAILED
29 Copyright(C) NRI Netcom, Ltd. All rights reserved. ECS ネイティブの
Blue/Green デプロイの流れ(ライフサイクルフック有)
30 Copyright(C) NRI Netcom, Ltd. All rights reserved. デプロイ前 ECS
ネイティブの Blue/Green デプロイの流れ(ライフサイクルフック有) 本番・テスト用リスナールール それぞれに Blue・Green両方の ターゲットグループが紐づいている トラフィックの向き先は、ターゲット グループの「重みづけ」に基づく
31 Copyright(C) NRI Netcom, Ltd. All rights reserved. ライフサイクルフック用のLambdaが起動し、 動作確認フェーズに入る
Green用ターゲットグループで タスクが起動 テスト用リスナールールの ターゲットグループの重みが変化 テストトラフィック移行 ECS ネイティブの Blue/Green デプロイの流れ(ライフサイクルフック有)
32 Copyright(C) NRI Netcom, Ltd. All rights reserved. ライフサイクルフック用Lambdaは •
ターゲットグループのステータス確認 • 承認ファイルの有無 を確認 デプロイワークフロー内で承認ステージになる 承認ステージ ECS ネイティブの Blue/Green デプロイの流れ(ライフサイクルフック有)
33 Copyright(C) NRI Netcom, Ltd. All rights reserved. Hookstatus は以下の条件に基づき決定されるように実装
概要 条件 hookstatus 30秒後にLambdaが再試行 ターゲットグループのステータス が200~300 IN_POGRESS デプロイが次のライフサイクルステー ジに向かう S3に承認ファイルがある& ターゲットグループのステータス が200~300 SUCCEEDED ロールバックされる それ以外 FAILED 承認ステージ ECS ネイティブの Blue/Green デプロイの流れ(ライフサイクルフック有)
34 Copyright(C) NRI Netcom, Ltd. All rights reserved. S3バケットに承認ファイルが存在しない Lambda
は IN_PROGRESSを返し、 30秒後に Lambda が再試行 デプロイプロセスが一時中断され、 テストリスナールール経由の動作確認が可能 動作確認 ECS ネイティブの Blue/Green デプロイの流れ(ライフサイクルフック有)
35 Copyright(C) NRI Netcom, Ltd. All rights reserved. 動作確認が終了次第、承認。 S3
バケットに承認ファイルアップロード Lambda が 承認ファイルを検知し、 SUCCEDED を返す デプロイプロセスが次のステージに移行 動作確認終了後 ECS ネイティブの Blue/Green デプロイの流れ(ライフサイクルフック有)
36 Copyright(C) NRI Netcom, Ltd. All rights reserved. 本番用リスナールールの重みが変化 トラフィックがGreen環境に向く
本番トラフィック移行 ECS ネイティブの Blue/Green デプロイの流れ(ライフサイクルフック有)
37 Copyright(C) NRI Netcom, Ltd. All rights reserved. ベイク時間経過後、Blue環境の タスクが削除される
Blue 環境のタスク削除 ECS ネイティブの Blue/Green デプロイの流れ(ライフサイクルフック有)
38 Copyright(C) NRI Netcom, Ltd. All rights reserved. GitHub Actions
でどう実装するの?
39 Copyright(C) NRI Netcom, Ltd. All rights reserved. 必要な実装 GitHub
Actions でどう実装するの? 非同期でデプロイ開始 デプロイの状態がどうなっているか 承認機能 デプロイ開始!! 後は任せた!! 承認機能 そういえば デプロイ状況どう? 承認機能 他処理 echo “Hello ECS” echo “Hello Ryota” . . . とある ecspresso コマンド+GitHub の設定で実現可能 必要な実装を整理する
40 Copyright(C) NRI Netcom, Ltd. All rights reserved. ecspresso のとあるコマンド
GitHub Actions でどう実装するの? 1. ecspreeso deploy --no-wait 2. ecspreeso wait –wait-until=“stable” 非同期でデプロイ開始 デプロイ開始!! 後は任せた!! 承認機能 デプロイの状態がどうなっているか そういえば デプロイ状況どう? 承認機能 他処理 echo “Hello ECS” echo “Hello Ryota” . . . --no-wait を指定することで 非同期でデプロイ可能 以下二つの状態を指定可能 stable:ECSサービスがstable状態になる deployed:デプロイが完了するまで
41 Copyright(C) NRI Netcom, Ltd. All rights reserved. GitHub の設定
GitHub Actions でどう実装するの? GitHub Environments を設定する デプロイに環境の使用 - GitHub ドキュメント を参照 「環境」を作り、その「環境」に対して諸々ルールを適用することができる機能 例 「production」という環境を作り、その環境には「1人以上のレビューが必須」というルールを紐づける 環境は environment で設定する 承認が下りるまでジョブは実行されない
42 Copyright(C) NRI Netcom, Ltd. All rights reserved. まとめ
43 Copyright(C) NRI Netcom, Ltd. All rights reserved. 発表内容のまとめ まとめ
CodeDeploy 方式との比較 • Service Connect 、サーキットブレイカーの使用、Blue/Greenの紐づけがリスナールール単位になったため、柔軟性が高い • ただし、本番トラフィックの切り替えに関しては、CodeDeploy の方が容易 デプロイワークフロー構築 • アプリ・インフラの更新ライフサイクルの違い・責任範囲の明確化のためには ecspresso を使用するべき • ecspresso は HCP Terraform をはじめとした IaC との連携が可能 • ライフサイクルフックを使用することで、本番トラフィック切り替え前に、動作確認が可能 • ecspresso の非同期デプロイと GitHub の Enviroment で承認フロー構築可能
44 Copyright(C) NRI Netcom, Ltd. All rights reserved. 発表内容のまとめ まとめ
ブログも書いています!! ECS Blue/Greenデプロイ攻略:ライフサイクルフックで本番切り替えを制御する (https://tech.nri-net.com/entry/ecsblue_green_deployment_strategy)
None