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
7.1k
リリース作業を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.6k
Other Decks in Programming
See All in Programming
Rancher と Terraform
fufuhu
2
170
LLMOpsのパフォーマンスを支える技術と現場で実践した改善
po3rin
8
1k
為你自己學 Python - 冷知識篇
eddie
1
310
私の後悔をAWS DMSで解決した話
hiramax
4
180
rage against annotate_predecessor
junk0612
0
150
オープンセミナー2025@広島LT技術ブログを続けるには
satoshi256kbyte
0
150
SOCI Index Manifest v2が出たので調べてみた / Introduction to SOCI Index Manifest v2
tkikuc
1
120
Zendeskのチケットを Amazon Bedrockで 解析した
ryokosuge
3
230
個人軟體時代
ethanhuang13
0
280
2025 年のコーディングエージェントの現在地とエンジニアの仕事の変化について
azukiazusa1
1
180
RDoc meets YARD
okuramasafumi
4
160
Protocol Buffersの型を超えて拡張性を得る / Beyond Protocol Buffers Types Achieving Extensibility
linyows
0
100
Featured
See All Featured
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
139
34k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
31
2.2k
How GitHub (no longer) Works
holman
315
140k
VelocityConf: Rendering Performance Case Studies
addyosmani
332
24k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
7
830
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
51
5.6k
What's in a price? How to price your products and services
michaelherold
246
12k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
18
1.1k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
34
6k
Navigating Team Friction
lara
189
15k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
161
15k
Become a Pro
speakerdeck
PRO
29
5.5k
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