Slide 1

Slide 1 text

Blue/Green Deploymentで ロールバック時間を半減した話 2024/06/20 株式会社ワンキャリア 渡邉 美希パウラ

Slide 2

Slide 2 text

Copyright © ONE CAREER Inc. All Rights Reserved. 目次 2 ● はじめに ● デプロイのロールバックにおける課題 ● 解決策 ● 効果 ● ダウンタイムなしで切り替える方法 ● Blue/Green Deployment導入時の注意点

Slide 3

Slide 3 text

ONE CAREER Inc . Copyright © ONE CAREER Inc. All Rights Reserved. 自己紹介 Career 趣味 ひとこと 3 渡邉 美希パウラ SRE 2023/06 カナダの大学を卒業 2023/10~ ワンキャリアにSREとして新卒入社 ゲーム、音楽、スポーツ ブラジル生まれブラジル育ちのトリリンガルです

Slide 4

Slide 4 text

人の数だけ、 キャリアをつくる。 MISSION

Slide 5

Slide 5 text

Copyright © ONE CAREER Inc. 事業内容 5 1. キャリアデータとは、求職者の活動データ、企業の採用データの総称。 2. 日本の人事部「HRアワード2020」にてプロフェッショナル部門(人材採用・雇用部門)で最優秀賞を受賞。 3. NewsPicks発表「【図解】20サービスを徹底比較。本当に役立つ「就活サイト」一覧より。 4. ProFuture株式会社/HR総研「HR総研×楽天みん就:2024年卒学生の就職活動動向調査 結果報告【就職活動編】」(https://www.hrpro.c o.jp/research_detail.php?r_no=360)より。 5. 2023年12月時点の実測値。 これまで可視化されていなかった「キャリアデータ1 」を活用し、就職・採用の意思決定をサポート。 サービス一覧 5 5

Slide 6

Slide 6 text

Copyright © ONE CAREER Inc. All Rights Reserved. 目次 6 ● はじめに ● デプロイのロールバックにおける課題 ● 解決策 ● 効果 ● ダウンタイムなしで切り替える方法 ● Blue/Green Deployment導入時の注意点

Slide 7

Slide 7 text

Copyright © ONE CAREER Inc. All Rights Reserved. 7 デプロイをロールバックする時 どれくらい時間かかりますか?

Slide 8

Slide 8 text

Copyright © ONE CAREER Inc. All Rights Reserved. 前提: AWS ECS Fargate, ALB, Rolling Updateを使ってアプリケーションコンテナを運用 はじめに 8 デプロイ方式はRolling Update

Slide 9

Slide 9 text

Copyright © ONE CAREER Inc. All Rights Reserved. 目次 9 ● はじめに ● デプロイのロールバックにおける課題 ● 解決策 ● 効果 ● ダウンタイムなしで切り替える方法 ● Blue/Green Deployment導入時の注意点

Slide 10

Slide 10 text

Copyright © ONE CAREER Inc. All Rights Reserved. リリース起因のインシデントにて、ロールバックに10分以上かかっており インシデント発生から復旧までに遅れが生じていた。 インシデント復旧における課題 10 ここだけで10分以上かかっていた ● AWSコンソールにログイン ● 旧バージョンタスクの立ち上げ・切り替え ロールバック開始 復旧 インシデント発生 ● 報告 ● アプリケーションの状態確認

Slide 11

Slide 11 text

Copyright © ONE CAREER Inc. All Rights Reserved. 目次 11 ● はじめに ● デプロイのロールバックにおける課題 ● 解決策 ● 効果 ● ダウンタイムなしで切り替える方法 ● Blue/Green Deployment導入時の注意点

Slide 12

Slide 12 text

Copyright © ONE CAREER Inc. All Rights Reserved. Rolling UpdateからBlue/Green Deployに移行し インシデントが発生したら即座にロールバックできるようにした。 解決策 12 Blue/Green Deploymentとは? → 一時的に新・旧バージョンを共存させ、トラフィックの切り替えでデプロイする方式 Blue 旧バージョン Green 新バージョン Application Load Balancer AWS CodeDeploy 本番環境の切り替え

Slide 13

Slide 13 text

Copyright © ONE CAREER Inc. All Rights Reserved. Rolling UpdateからBlue/Green Deployに移行し インシデントが発生したら即座にロールバックできるようにした。 解決策 13 BEFORE:旧バージョンを再デプロイして切り替える 新バージョン(不具合あり) ロールバック開始 旧バージョン(不具合なし) 旧バージョンに少しずつ切り替え ロールバック完了

Slide 14

Slide 14 text

Copyright © ONE CAREER Inc. All Rights Reserved. Rolling UpdateからBlue/Green Deployに移行し インシデントが発生したら即座にロールバックできるようにした。 解決策 14 AFTER:旧バージョンも稼働している状態なのでトラフィックを切り替えるだけ ロールバック開始 トラフィックを切り替える ロールバック完了

Slide 15

Slide 15 text

Copyright © ONE CAREER Inc. All Rights Reserved. 目次 15 ● はじめに ● リリースのロールバックにおける課題 ● 解決策 ● 効果 ● ダウンタイムなしで切り替える方法 ● Blue/Green Deployment導入時の注意点

Slide 16

Slide 16 text

Copyright © ONE CAREER Inc. All Rights Reserved. ロールバック時間半減 インシデント発生から 復旧までの時間が短縮 インシデントによる ユーザー影響を低減! ロールバック時間を10分から5分に半減することに成功! 効果 16

Slide 17

Slide 17 text

Copyright © ONE CAREER Inc. All Rights Reserved. 目次 17 ● はじめに ● リリースのロールバックにおける課題 ● 解決策 ● 効果 ● ダウンタイムなしで切り替える方法 ● Blue/Green Deployment導入時の注意点

Slide 18

Slide 18 text

Copyright © ONE CAREER Inc. All Rights Reserved. ダウンタイムなしでBlue/Green Deploymentに切り替える方法 18 新規リソースの作成 Blue/Green DeployのECSサービスの動作確認 Blue/Green DeployのECSサービスをデプロイ 1 2 3 ALBのリスナールールのTGをBlue/GreenのTGに切り替え 4

Slide 19

Slide 19 text

Copyright © ONE CAREER Inc. All Rights Reserved. STEP1:新規リソースの作成 ダウンタイムなしでBlue/Green Deploymentに切り替える方法 19 作っておくリソース ● Blue/Green Deployment方式のECSサービス ● CodedeployのDeployment Group ● Blue/Green Deployment用のターゲットグループ(以後TGと表記) ○ Blue環境とGreen環境の2つ 注意点⚠:既存のRolling Update方式のサービスはそのまま稼働させておく

Slide 20

Slide 20 text

Copyright © ONE CAREER Inc. All Rights Reserved. STEP2:Blue/Green DeployのECSサービスをデプロイ ダウンタイムなしでBlue/Green Deploymentに切り替える方法 20 注意点⚠:初回デプロイする時はALBのデフォルトルールにBlue/Green用のターゲッ トグループ(TG)を追加しないと失敗する! Weightは0!

Slide 21

Slide 21 text

Copyright © ONE CAREER Inc. All Rights Reserved. STEP3:Blue/Green DeployのECSサービスの動作確認 ダウンタイムなしでBlue/Green Deploymentに切り替える方法 21 自分だけBlue/Greenでデプロイした サービスにアクセス可能 自身のPCのIPアドレス限定で、Blue/GreenのECSサービスに疎通できるように リスナールールを追加すると低リスクで動作確認が可能になる

Slide 22

Slide 22 text

Copyright © ONE CAREER Inc. All Rights Reserved. STEP4:ALBのリスナールールのTGをBlue/GreenのTGに切り替える ダウンタイムなしでBlue/Green Deploymentに切り替える方法 22 Rolling Update weight: 1 Green Weight: 0 Rolling Update weight: 1 Green Weight: 1 Rolling Update weight: 0 Green Weight: 1 Weightを徐々にBlue/Greenサービスが疎通しているTGに移す GreenのWeightを1に Rolling UpdateのWeightを0に

Slide 23

Slide 23 text

Copyright © ONE CAREER Inc. All Rights Reserved. STEP4:ALBのリスナールールのTGをBlue/GreenのTGに切り替える ダウンタイムなしでBlue/Green Deploymentに切り替える方法 23 リスナールールが複数ある場合:ルール1つずつ、一気にTGのweightを逆転させる 動作確認 次のルール Rolling Update weight: 1 Green Weight: 0 Rolling Update weight: 0 Green Weight: 1

Slide 24

Slide 24 text

Copyright © ONE CAREER Inc. All Rights Reserved. 目次 24 ● はじめに ● リリースのロールバックにおける課題 ● 解決策 ● 効果 ● ダウンタイムなしで切り替える方法 ● Blue/Green Deployment導入時の注意点

Slide 25

Slide 25 text

Copyright © ONE CAREER Inc. All Rights Reserved. インフラコストとのトレードオフになる Blue/Green Deployment導入時の注意点 25 新・旧バージョンを一時的に共存させるということは、タスク数が一時的に倍に なるということ ● インフラコスト面で考慮すべきこと ○ 新・旧バージョンを共存させる時間 ○ デプロイ回数 ● Blue/Green Deploymentの恩恵を受けやすいケース ○ インフラコストに余裕がある場合 ○ 障害によるユーザー影響が比較的大きい場合

Slide 26

Slide 26 text

Copyright © ONE CAREER Inc. All Rights Reserved. 26 Thank you!