Slide 1

Slide 1 text

リリース作業をCI/CDで自動化するま で
 株式会社ZOZO
 計測プラットフォーム開発本部 SRE
 纐纈 宏樹 Copyright © ZOZO, Inc. 1

Slide 2

Slide 2 text

© ZOZO, Inc. 株式会社ZOZO
 計測プラットフォーム開発本部 計測システム部 SRE 纐纈 宏樹
 2022年ZOZOに入社。計測に関わるサービス開発や既存シ ステムの運用に関わっています。
 2

Slide 3

Slide 3 text

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


Slide 4

Slide 4 text

© ZOZO, Inc. 4 https://zozo.jp/zozomat/
 
 ● 自宅にいながら簡単に高精度な足の3D計測ができる計測マット
 ● 計測したデータをもとに、自分の足型と靴の“相性度” を表示
 ● NIKEやCONVERSEなど5,587型以上のアイテムに対応
 (2022年12月末時点)
 


Slide 5

Slide 5 text

© ZOZO, Inc. 5 https://zozo.jp/zozoglass/
 ● 自宅で簡単・高精度にご自身の顔の肌の色を計測できる フェイスカラー計測ツール
 ● ECにおけるコスメ購入時の課題であった「色選び」に関する 不安や悩みを解消
 ● 肌の色を構成する成分、ヘモグロビン量とメラニン量を画像 から推定
 ● コスメ専門モール「ZOZOCOSME」で取り扱うベースメイクの 一部に対応
 ● 計測者数128万人を突破(2022年12月末時点)


Slide 6

Slide 6 text

© ZOZO, Inc. 今日の内容
 6 ● リリース作業を自動化するまでの取り組みをまとめて紹介
 ● 詳細はテックブログを読んでいただけると幸いです!


Slide 7

Slide 7 text

© ZOZO, Inc. 目次
 ● 弊部署が担当しているシステムの特徴
 ● CI/CD改善前と改善後の比較
 ● リリース自動化までの取り組み紹介
 ○ Warmup
 ○ Argo CD, Argo Rollouts
 ○ Gatling
 ○ Auto Merge
 7

Slide 8

Slide 8 text

© ZOZO, Inc. 部署の特徴
 ● 異なる開発フェーズのプロダクトを複数担当している
 ○ 保守運用 x 2
 ○ 新機能追加 x 1
 ○ 新規構築 x 1
 ● AWS、K8s (EKS)、Scala
 8

Slide 9

Slide 9 text

© ZOZO, Inc. リリースフロー改善前
 9

Slide 10

Slide 10 text

© ZOZO, Inc. CI/CD改善前の課題
 ● プロダクトごとにリリース方法が統一されていない
 ○ → 手順書のメンテやオンボーディングも大変
 ● 手作業があるので、ヒューマンエラーが起きる可能性あり
 ● リリース頻度が低く、障害が起きても原因の切り分けが難しい
 10

Slide 11

Slide 11 text

© ZOZO, Inc. リリースフロー改善後の現在
 11

Slide 12

Slide 12 text

© ZOZO, Inc. リリースフロー改善後の現在
 12

Slide 13

Slide 13 text

© ZOZO, Inc. 改善効果
 13 改善前 改善後 作業時間 2~3h x 2人/週 0h 頻度 2~3週間に1回 PRごと 安全性 ● 他チームに実機での動作確認を依頼 ● リリース担当者がメトリクスを目視で確認 ● 自動動作確認 ● 自動負荷試験 ● 自動メトリクスチェック ● 段階的リリース ● 自動ロールバック

Slide 14

Slide 14 text

© ZOZO, Inc. CI/CDの改善がもたらすメリット
 14 ● 人間がリリース作業に費やす時間を減らせる
 ○ → 開発に集中できる
 ● 開発サイクルを早められる
 ○ → 利益に直結する機能追加などを促進できる
 ● リリースによる障害を減らせる
 ○ → ユーザー体験の悪化や損失を防ぐことができる


Slide 15

Slide 15 text

© ZOZO, Inc. CI/CDの改善がもたらすデメリット
 15 ● インフラコストは増加してしまう
 ○ リリースに必要なリソースがどうしても増えるので、仕方がない
 ○ もたらされるメリットは非常に大きいので、コストを比較して判断


Slide 16

Slide 16 text

© ZOZO, Inc. 16 リリース自動化までの取り組み紹介
 ● 自動動作確認
 ● GitOps化
 ● カナリアリリース
 ● 自動負荷試験
 ● PRの自動マージ
 16

Slide 17

Slide 17 text

© ZOZO, Inc. 17 Warmup
 ● JIT(Just In Time)コンパイラーの暖機運転
 ○ 擬似的なリクエストを送り、動的コンパイルを事前に完了させる
 ○ 起動直後のパフォーマンスを上げることができる
 ● これを使って、動作確認で使っていたAPIを一通り実行す る
 ● 暖機運転終了後に、PodへのアクセスをReadiness Probeで許可
 17

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

© ZOZO, Inc. 19 Argo CD
 19

Slide 20

Slide 20 text

© ZOZO, Inc. 20 Argo CD
 ● ステージング&本番環境
 ○ Image Updaterで最新のイメージの変更を検知した後、K8sリポジトリにイメー ジタグの変更を通知
 → GitHub Actionsでイメージタグ変更のPRを作成
 → main/releaseブランチにマージすると、stg/prdにリリース
 20

Slide 21

Slide 21 text

© ZOZO, Inc. 21 Argo Rollouts
 21 ● カナリアリリースを導入
 ○ Datadogメトリクスを参照の上、自動ロールバックが可能
 ○ 徐々にリリース比率を上げられるので、ユーザー影響を減らせる


Slide 22

Slide 22 text

© ZOZO, Inc. 22 Gatling
 ● Argo CDのリソースフックを使って、ステージング環境のPodが入れ替わる際に、 自動で負荷試験を行なっている
 ● 負荷試験結果は、S3にアップロードしてSlackに通知
 22

Slide 23

Slide 23 text

© ZOZO, Inc. 23 Gatling
 23

Slide 24

Slide 24 text

© ZOZO, Inc. 24 Auto Merge
 ● 保守メインのプロダクトのライブラリ更新はPRのマージまで自動化したい
 ○ ステージング環境
 ■ UnitテストやインテグレーションテストのCIが通れば、OK
 ■ → GitHubのAuto MergeをGitHub Actionsから有効化
 ○ 本番環境
 ■ ステージング環境の負荷試験が通れば、OK
 ■ → Gatling完了時にスクリプトを実行して、PRを承認&マージ
 24

Slide 25

Slide 25 text

© ZOZO, Inc. 25 25

Slide 26

Slide 26 text

No content