Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
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.3k
リリース作業を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.9k
Other Decks in Programming
See All in Programming
Rubyで鍛える仕組み化プロヂュース力
muryoimpl
0
140
20251212 AI 時代的 Legacy Code 營救術 2025 WebConf
mouson
0
180
從冷知識到漏洞,你不懂的 Web,駭客懂 - Huli @ WebConf Taiwan 2025
aszx87410
2
2.7k
まだ間に合う!Claude Code元年をふりかえる
nogu66
5
850
関数実行の裏側では何が起きているのか?
minop1205
1
710
LLMで複雑な検索条件アセットから脱却する!! 生成的検索インタフェースの設計論
po3rin
3
830
手が足りない!兼業データエンジニアに必要だったアーキテクチャと立ち回り
zinkosuke
0
740
ViewファーストなRailsアプリ開発のたのしさ
sugiwe
0
490
AIの誤りが許されない業務システムにおいて“信頼されるAI” を目指す / building-trusted-ai-systems
yuya4
6
3.7k
ハイパーメディア駆動アプリケーションとIslandアーキテクチャ: htmxによるWebアプリケーション開発と動的UIの局所的適用
nowaki28
0
430
SwiftUIで本格音ゲー実装してみた
hypebeans
0
420
生成AIを利用するだけでなく、投資できる組織へ
pospome
2
350
Featured
See All Featured
A Modern Web Designer's Workflow
chriscoyier
698
190k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.8k
Learning to Love Humans: Emotional Interface Design
aarron
274
41k
Automating Front-end Workflow
addyosmani
1371
200k
The Power of CSS Pseudo Elements
geoffreycrofte
80
6.1k
Designing for Performance
lara
610
69k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
Side Projects
sachag
455
43k
The Cost Of JavaScript in 2023
addyosmani
55
9.4k
Product Roadmaps are Hard
iamctodd
PRO
55
12k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
34k
Raft: Consensus for Rubyists
vanstee
141
7.2k
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