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

Blue/Green Deploymentで ロールバック時間を半減した話/A story a...

ワンキャリアTech
August 02, 2024
23

Blue/Green Deploymentで ロールバック時間を半減した話/A story about how blue/green deployment cut rollback time in half

SREの渡邉が「第3木曜LT会」でLTをした際の資料となります。

イベントURL:
https://metaps.connpass.com/event/318503/

ワンキャリアTech

August 02, 2024
Tweet

More Decks by ワンキャリアTech

Transcript

  1. Copyright © ONE CAREER Inc. All Rights Reserved. 目次 2

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

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

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

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

    • はじめに • デプロイのロールバックにおける課題 • 解決策 • 効果 • ダウンタイムなしで切り替える方法 • Blue/Green Deployment導入時の注意点
  7. Copyright © ONE CAREER Inc. All Rights Reserved. リリース起因のインシデントにて、ロールバックに10分以上かかっており インシデント発生から復旧までに遅れが生じていた。

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

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

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

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

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

    • はじめに • リリースのロールバックにおける課題 • 解決策 • 効果 • ダウンタイムなしで切り替える方法 • Blue/Green Deployment導入時の注意点
  13. Copyright © ONE CAREER Inc. All Rights Reserved. ロールバック時間半減 インシデント発生から

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

    • はじめに • リリースのロールバックにおける課題 • 解決策 • 効果 • ダウンタイムなしで切り替える方法 • Blue/Green Deployment導入時の注意点
  15. 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
  16. 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方式のサービスはそのまま稼働させておく
  17. Copyright © ONE CAREER Inc. All Rights Reserved. STEP2:Blue/Green DeployのECSサービスをデプロイ

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

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

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

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