Lock in $30 Savings on PRO—Offer Ends Soon! ⏳

リリース作業をCI/CDで自動化するまで / What We Did for Automati...

リリース作業をCI/CDで自動化するまで / What We Did for Automating Release Processes

Jun 22, 2023 - CI/CD最前線〜今開発現場が直面している課題とは?Lunch LT
https://findy.connpass.com/event/285883/

Hiroki Koketsu

June 29, 2023
Tweet

Other Decks in Programming

Transcript

  1. © ZOZO, Inc. https://zozo.jp/
 3 • ファッションEC
 • 1,500以上のショップ、8,400以上のブランドの取り扱い
 •

    常時95万点以上の商品アイテム数と毎日平均2,900点以上の新着 商品 を掲載(2023年3月末時点)
 • ブランド古着のファッションゾーン「ZOZOUSED」や
 コスメ専門モール「ZOZOCOSME」、靴の専門モール
 「ZOZOSHOES」、ラグジュアリー&デザイナーズゾーン
 「ZOZOVILLA」を展開
 • 即日配送サービス
 • ギフトラッピングサービス
 • ツケ払い など

  2. © ZOZO, Inc. 5 https://zozo.jp/zozoglass/
 • 自宅で簡単・高精度にご自身の顔の肌の色を計測できる フェイスカラー計測ツール
 • ECにおけるコスメ購入時の課題であった「色選び」に関する

    不安や悩みを解消
 • 肌の色を構成する成分、ヘモグロビン量とメラニン量を画像 から推定
 • コスメ専門モール「ZOZOCOSME」で取り扱うベースメイクの 一部に対応
 • 計測者数128万人を突破(2022年12月末時点)

  3. © ZOZO, Inc. CI/CD改善前の課題
 • プロダクトごとにリリース方法が統一されていない
 ◦ → 手順書のメンテやオンボーディングも大変
 •

    手作業があるので、ヒューマンエラーが起きる可能性あり
 • リリース頻度が低く、障害が起きても原因の切り分けが難しい
 10
  4. © ZOZO, Inc. 改善効果
 13 改善前 改善後 作業時間 2~3h x

    2人/週 0h 頻度 2~3週間に1回 PRごと 安全性 • 他チームに実機での動作確認を依頼 • リリース担当者がメトリクスを目視で確認 • 自動動作確認 • 自動負荷試験 • 自動メトリクスチェック • 段階的リリース • 自動ロールバック
  5. © ZOZO, Inc. CI/CDの改善がもたらすメリット
 14 • 人間がリリース作業に費やす時間を減らせる
 ◦ → 開発に集中できる


    • 開発サイクルを早められる
 ◦ → 利益に直結する機能追加などを促進できる
 • リリースによる障害を減らせる
 ◦ → ユーザー体験の悪化や損失を防ぐことができる

  6. © ZOZO, Inc. 16 リリース自動化までの取り組み紹介
 • 自動動作確認
 • GitOps化
 •

    カナリアリリース
 • 自動負荷試験
 • PRの自動マージ
 16
  7. © ZOZO, Inc. 17 Warmup
 • JIT(Just In Time)コンパイラーの暖機運転
 ◦

    擬似的なリクエストを送り、動的コンパイルを事前に完了させる
 ◦ 起動直後のパフォーマンスを上げることができる
 • これを使って、動作確認で使っていたAPIを一通り実行す る
 • 暖機運転終了後に、PodへのアクセスをReadiness Probeで許可
 17
  8. © ZOZO, Inc. 18 Argo CD
 • 開発環境
 ◦ Image

    Updaterを使い、常に最新のイメージタグをPullしている
 ◦ GitHub Actionsでブランチを指定して、ECRにイメージをPushすると、開発環 境の検証ができる
 18
  9. © ZOZO, Inc. 20 Argo CD
 • ステージング&本番環境
 ◦ Image

    Updaterで最新のイメージの変更を検知した後、K8sリポジトリにイメー ジタグの変更を通知
 → GitHub Actionsでイメージタグ変更のPRを作成
 → main/releaseブランチにマージすると、stg/prdにリリース
 20
  10. © ZOZO, Inc. 21 Argo Rollouts
 21 • カナリアリリースを導入
 ◦

    Datadogメトリクスを参照の上、自動ロールバックが可能
 ◦ 徐々にリリース比率を上げられるので、ユーザー影響を減らせる

  11. © ZOZO, Inc. 24 Auto Merge
 • 保守メインのプロダクトのライブラリ更新はPRのマージまで自動化したい
 ◦ ステージング環境


    ▪ UnitテストやインテグレーションテストのCIが通れば、OK
 ▪ → GitHubのAuto MergeをGitHub Actionsから有効化
 ◦ 本番環境
 ▪ ステージング環境の負荷試験が通れば、OK
 ▪ → Gatling完了時にスクリプトを実行して、PRを承認&マージ
 24