Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
リリース作業をCI/CDで自動化するまで / What We Did for Automati...
Search
Hiroki Koketsu
June 29, 2023
Programming
2
6.7k
リリース作業を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
Share
More Decks by Hiroki Koketsu
See All by Hiroki Koketsu
AWS re:Invent 2024 recap
hkoketsu
0
2.5k
Other Decks in Programming
See All in Programming
RubyKaigiで手に入れた HHKB Studioのための HIDRawドライバ
iberianpig
0
1.1k
AI時代のプログラミング教育 / programming education in ai era
kishida
23
21k
CRE Meetup!ユーザー信頼性を支えるエンジニアリング実践例の発表資料です
tmnb
0
540
Productivity is Messing Around and Having Fun
hollycummins
0
170
複数ドメインに散らばってしまった画像…! 運用中のPHPアプリに後からCDNを導入する…!
suguruooki
0
450
安全に倒し切るリリースをするために:15年来レガシーシステムのフルリプレイス挑戦記
sakuraikotone
5
2.6k
WordPress Playground for Developers
iambherulal
0
120
Signal-Based Data FetchingWith the New httpResource
manfredsteyer
PRO
0
120
趣味全開のAITuber開発
kokushin
0
150
地域ITコミュニティの活性化とAWSに移行してみた話
yuukis
0
180
Go1.24で testing.B.Loopが爆誕
kuro_kurorrr
0
170
爆速スッキリ! Rspack 移行の成果と道のり - Muddy Web #11
dora1998
1
170
Featured
See All Featured
Art, The Web, and Tiny UX
lynnandtonic
298
20k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
49k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
233
17k
Intergalactic Javascript Robots from Outer Space
tanoku
270
27k
Why You Should Never Use an ORM
jnunemaker
PRO
55
9.3k
It's Worth the Effort
3n
184
28k
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3.1k
How to Think Like a Performance Engineer
csswizardry
22
1.5k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Visualization
eitanlees
146
16k
GraphQLの誤解/rethinking-graphql
sonatard
70
10k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
31
4.8k
Transcript
リリース作業をCI/CDで自動化するま で 株式会社ZOZO 計測プラットフォーム開発本部 SRE 纐纈 宏樹 Copyright © ZOZO,
Inc. 1
© ZOZO, Inc. 株式会社ZOZO 計測プラットフォーム開発本部 計測システム部 SRE 纐纈 宏樹 2022年ZOZOに入社。計測に関わるサービス開発や既存シ
ステムの運用に関わっています。 2
© ZOZO, Inc. https://zozo.jp/ 3 • ファッションEC • 1,500以上のショップ、8,400以上のブランドの取り扱い •
常時95万点以上の商品アイテム数と毎日平均2,900点以上の新着 商品 を掲載(2023年3月末時点) • ブランド古着のファッションゾーン「ZOZOUSED」や コスメ専門モール「ZOZOCOSME」、靴の専門モール 「ZOZOSHOES」、ラグジュアリー&デザイナーズゾーン 「ZOZOVILLA」を展開 • 即日配送サービス • ギフトラッピングサービス • ツケ払い など
© ZOZO, Inc. 4 https://zozo.jp/zozomat/ • 自宅にいながら簡単に高精度な足の3D計測ができる計測マット • 計測したデータをもとに、自分の足型と靴の“相性度”
を表示 • NIKEやCONVERSEなど5,587型以上のアイテムに対応 (2022年12月末時点)
© ZOZO, Inc. 5 https://zozo.jp/zozoglass/ • 自宅で簡単・高精度にご自身の顔の肌の色を計測できる フェイスカラー計測ツール • ECにおけるコスメ購入時の課題であった「色選び」に関する
不安や悩みを解消 • 肌の色を構成する成分、ヘモグロビン量とメラニン量を画像 から推定 • コスメ専門モール「ZOZOCOSME」で取り扱うベースメイクの 一部に対応 • 計測者数128万人を突破(2022年12月末時点)
© ZOZO, Inc. 今日の内容 6 • リリース作業を自動化するまでの取り組みをまとめて紹介 • 詳細はテックブログを読んでいただけると幸いです!
© ZOZO, Inc. 目次 • 弊部署が担当しているシステムの特徴 • CI/CD改善前と改善後の比較 • リリース自動化までの取り組み紹介
◦ Warmup ◦ Argo CD, Argo Rollouts ◦ Gatling ◦ Auto Merge 7
© ZOZO, Inc. 部署の特徴 • 異なる開発フェーズのプロダクトを複数担当している ◦ 保守運用 x 2
◦ 新機能追加 x 1 ◦ 新規構築 x 1 • AWS、K8s (EKS)、Scala 8
© ZOZO, Inc. リリースフロー改善前 9
© ZOZO, Inc. CI/CD改善前の課題 • プロダクトごとにリリース方法が統一されていない ◦ → 手順書のメンテやオンボーディングも大変 •
手作業があるので、ヒューマンエラーが起きる可能性あり • リリース頻度が低く、障害が起きても原因の切り分けが難しい 10
© ZOZO, Inc. リリースフロー改善後の現在 11
© ZOZO, Inc. リリースフロー改善後の現在 12
© ZOZO, Inc. 改善効果 13 改善前 改善後 作業時間 2~3h x
2人/週 0h 頻度 2~3週間に1回 PRごと 安全性 • 他チームに実機での動作確認を依頼 • リリース担当者がメトリクスを目視で確認 • 自動動作確認 • 自動負荷試験 • 自動メトリクスチェック • 段階的リリース • 自動ロールバック
© ZOZO, Inc. CI/CDの改善がもたらすメリット 14 • 人間がリリース作業に費やす時間を減らせる ◦ → 開発に集中できる
• 開発サイクルを早められる ◦ → 利益に直結する機能追加などを促進できる • リリースによる障害を減らせる ◦ → ユーザー体験の悪化や損失を防ぐことができる
© ZOZO, Inc. CI/CDの改善がもたらすデメリット 15 • インフラコストは増加してしまう ◦ リリースに必要なリソースがどうしても増えるので、仕方がない ◦
もたらされるメリットは非常に大きいので、コストを比較して判断
© ZOZO, Inc. 16 リリース自動化までの取り組み紹介 • 自動動作確認 • GitOps化 •
カナリアリリース • 自動負荷試験 • PRの自動マージ 16
© ZOZO, Inc. 17 Warmup • JIT(Just In Time)コンパイラーの暖機運転 ◦
擬似的なリクエストを送り、動的コンパイルを事前に完了させる ◦ 起動直後のパフォーマンスを上げることができる • これを使って、動作確認で使っていたAPIを一通り実行す る • 暖機運転終了後に、PodへのアクセスをReadiness Probeで許可 17
© ZOZO, Inc. 18 Argo CD • 開発環境 ◦ Image
Updaterを使い、常に最新のイメージタグをPullしている ◦ GitHub Actionsでブランチを指定して、ECRにイメージをPushすると、開発環 境の検証ができる 18
© ZOZO, Inc. 19 Argo CD 19
© ZOZO, Inc. 20 Argo CD • ステージング&本番環境 ◦ Image
Updaterで最新のイメージの変更を検知した後、K8sリポジトリにイメー ジタグの変更を通知 → GitHub Actionsでイメージタグ変更のPRを作成 → main/releaseブランチにマージすると、stg/prdにリリース 20
© ZOZO, Inc. 21 Argo Rollouts 21 • カナリアリリースを導入 ◦
Datadogメトリクスを参照の上、自動ロールバックが可能 ◦ 徐々にリリース比率を上げられるので、ユーザー影響を減らせる
© ZOZO, Inc. 22 Gatling • Argo CDのリソースフックを使って、ステージング環境のPodが入れ替わる際に、 自動で負荷試験を行なっている •
負荷試験結果は、S3にアップロードしてSlackに通知 22
© ZOZO, Inc. 23 Gatling 23
© ZOZO, Inc. 24 Auto Merge • 保守メインのプロダクトのライブラリ更新はPRのマージまで自動化したい ◦ ステージング環境
▪ UnitテストやインテグレーションテストのCIが通れば、OK ▪ → GitHubのAuto MergeをGitHub Actionsから有効化 ◦ 本番環境 ▪ ステージング環境の負荷試験が通れば、OK ▪ → Gatling完了時にスクリプトを実行して、PRを承認&マージ 24
© ZOZO, Inc. 25 25
None