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
5.8k
リリース作業を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
17
Other Decks in Programming
See All in Programming
RWC 2024 DICOM & ISO/IEC 2022
m_seki
0
210
Zoneless Testing
rainerhahnekamp
0
120
42 best practices for Symfony, a decade later
tucksaun
1
180
「Chatwork」Android版アプリを 支える単体テストの現在
okuzawats
0
180
これが俺の”自分戦略” プロセスを楽しんでいこう! - Developers CAREER Boost 2024
niftycorp
PRO
0
190
useSyncExternalStoreを使いまくる
ssssota
6
1.1k
ある日突然あなたが管理しているサーバーにDDoSが来たらどうなるでしょう?知ってるようで何も知らなかったDDoS攻撃と対策 #phpcon.2024
akase244
0
100
これでLambdaが不要に?!Step FunctionsのJSONata対応について
iwatatomoya
2
3.7k
CQRS+ES の力を使って効果を感じる / Feel the effects of using the power of CQRS+ES
seike460
PRO
0
130
PSR-15 はあなたのための ものではない? - phpcon2024
myamagishi
0
130
なまけものオバケたち -PHP 8.4 に入った新機能の紹介-
tanakahisateru
1
120
テストコードのガイドライン 〜作成から運用まで〜
riku929hr
5
610
Featured
See All Featured
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
Facilitating Awesome Meetings
lara
50
6.1k
Site-Speed That Sticks
csswizardry
2
190
No one is an island. Learnings from fostering a developers community.
thoeni
19
3k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
365
25k
Practical Orchestrator
shlominoach
186
10k
A designer walks into a library…
pauljervisheath
204
24k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
111
49k
It's Worth the Effort
3n
183
28k
How STYLIGHT went responsive
nonsquared
95
5.2k
We Have a Design System, Now What?
morganepeng
51
7.3k
Fantastic passwords and where to find them - at NoRuKo
philnash
50
2.9k
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