Slide 1

Slide 1 text

ECS ネイティブ Blue/Greenデプロイに ついて調べてみた 枡川健太郎 クラスメソッド株式会社

Slide 2

Slide 2 text

2 ECS ネイティブBlue/Greenとは? Amazon ECS blue/green service deployments workflow ● CodeDeploy不要 ● ECS Service Connectで利⽤可

Slide 3

Slide 3 text

テスト⽤アーキテクチャー 3

Slide 4

Slide 4 text

4 CDKで作成すると? ● ECSサービスでdeploymentStrategyとして BLUE_GREENを指定 ● ターゲットグループ側で本番リスナーとテストリス ナーを指定 ● ECS Blue/Green専⽤のインフラストラクチャー ロールが必要

Slide 5

Slide 5 text

5 マネジメントコンソールを⾒てみる 「すべて⼀度に」しか選べない トラフィック切り替え後に 既存タスクを残す時間

Slide 6

Slide 6 text

6 デプロイしてみる(スケールアップ前)

Slide 7

Slide 7 text

7 デプロイしてみる (スケールアップ) Green側のECSタスクを起動中

Slide 8

Slide 8 text

8 デプロイしてみる (テストトラフィック移⾏) テストリスナーの重み付けを変更中

Slide 9

Slide 9 text

9 デプロイしてみる (テストトラフィック移⾏後) テストリスナーの重み付けを変更後

Slide 10

Slide 10 text

10 デプロイしてみる (本番トラフィック移⾏) 本番リスナーの重み付けを変更中

Slide 11

Slide 11 text

11 デプロイしてみる (ベイク時間) 既存タスクを残して待機中

Slide 12

Slide 12 text

12 デプロイしてみる (クリーンアップ) 既存タスクを削除中

Slide 13

Slide 13 text

トラフィックの切り替え 13 ● Modify Rule APIを利⽤して、ECSが転送時に重み付けを変更 ● テストトラフィック移⾏後、本番トラフィック移⾏までの時間を制御するこ とは不可 ○ 4回試した所、42秒、42秒、41秒、42秒 ● テストリスナーを利⽤して何かしらのテストを⾏う場合はライフサイクルルー ルの設定が必須

Slide 14

Slide 14 text

ライフサイクルフック 14 ● スケールアップ前 (Pre scale up) ● スケールアップ後 (After scale up) ● テストトラフィック移⾏ (Test traffic shift) ● テストトラフィック移⾏後 (After test traffic shift) ● 本番トラフィック移⾏ (Production traffic shift) ● 本番トラフィック移⾏後 (After production traffic shift)

Slide 15

Slide 15 text

ロールバック 15 ● Modify Rule APIを利⽤して、ECSが転送時の重み付けを戻す ● テストトラフィック移⾏後までにロールバックできるなら、本番には影響を 出さずにロールバック可能 ○ ここでライフサイクルフックを利⽤したテストを⾏うべき ● ベイク時間(本番トラフィック後に切り替えた際)は、まず本番リスナーの重み 付けを変更、次にテストリスナーも戻す ○ 検証してみた所 ■ 「ロールバック」実⾏後 → (17秒) → 本番側重み付け変更 → (36秒) → テストリスナー側重み付け変更

Slide 16

Slide 16 text

No content