Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Deployment Painをなくそう
Search
jimpei
October 06, 2023
Programming
740
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Deployment Painをなくそう
開発生産性LT Night in 福岡
https://findy.connpass.com/event/296381/
jimpei
October 06, 2023
More Decks by jimpei
See All by jimpei
リモートだからこそ 懸念だし1on1
jimpei
3
790
文化が生産性を作る
jimpei
3
970
「コードがむずかしい」からの脱却
jimpei
45
20k
Other Decks in Programming
See All in Programming
Agentic Software Factoryに、すごく賢いIF文を。 / super smart IF statement into the Agentic Software Factory.
rkaga
8
2k
mrbgem 三角測量 開発
ogom
0
210
setup-vp GitLab対応の裏側
naokihaba
0
150
APNsからLive Activityを開始する話
yumnumm
0
150
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
1
490
Unity6 URPによる海底をテーマにしたVJシステムの解説 | Unity Shader 完全に理解した 勉強会
gam0022
0
340
月間100万人のサービス刷新で、 技術選定をHonoに振り切った話
yutobara
2
2.5k
re:Inventに行く前に知っておきたい現地参加のノウハウ
nokomoro3
0
380
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
480
AI時代のコードレビューは人に向けるな、仕組みに向けろ
texmeijin
5
3.5k
R8 の設定見直しでアプリサイズ削減
andpad
0
190
JAWS-UG 東京支部が始める、JAWS-UG支部コラボ / JAWS-UG lunchtime LT Collaboration
y0hgi
0
190
Featured
See All Featured
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
33
5.1k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
460
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
450
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
260
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Product Roadmaps are Hard
iamctodd
55
13k
Claude Code のすすめ
schroneko
67
230k
It's Worth the Effort
3n
188
29k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.9k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.4k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
Transcript
1 Deployment Painをなくそう 2023.10.06 開発生産性LT Night in 福岡 @jimpei
2 SIer -> Yahoo! JAPAN -> mercari (2021/08)
Help Center Team Software Engineer / Tech Lead 濱村 甚平(@jinpeih)
3 Deployment Painとは 今日話すこと 自チームの状態 Deploy頻度を計測する意味とは 02 03 01
4 Deployment Painをなくそう
5 Deployにどれぐらい抵抗がありますか?
6 Deployにどれぐらい抵抗があるか 3ヶ月ぶりに20本分の機能改修差分を リリース手順書とチェックリストを作って 手動で2人体制で2時間かけて Deploy Deployが怖い、負担、面倒に感じる 例えば...
7 そもそもDeployment Painとは • コードを本番環境にプッシュする際に感じる恐怖や不安の尺度 • デプロイが簡単で苦痛を伴わず、むしろ破壊的である度合い これが大きい場合、ソフトウェアの提供パフォーマンス、組織のパフォーマンス、組織 文化が低い可能性 ソフトウェアを迅速かつ安定して提供する能力を向上させる技術的なプラクティスは、
これ(本番Deployのストレスと不安)も軽減する https://dora.dev/devops-capabilities/cultural/wellbeing/ DORAによると
8 チームの状態や取り組み
9 チームとプロダクト紹介 チーム構成 • Engineering Manager(EM): 1人 • Product Manager(PdM):
1人 • Software Engineer ◦ FE: 1人(+1人) ◦ BE: 2人 • Tech Lead、Scrum Masterはメンバーで兼任 • FE/BEと分けているがクロスファンクショナルにタスクを取ることもある Help Center: お客さまの疑問やお困りごとの解消のための体験を提供する
10 Deploy数推移(2022/01 ~ 2023/10) 年間約500回Deploy (42/month, 2/day) ・mainブランチにマージ後リリースタ グを つけることによりDeploy ・立ち上げによるフェーズに左右され てい
る ・Four Key的にはEliteレベル 2022 2023 | 初期開発 機能拡充のための 設計期 機能拡充開発期 改善期 年間約500回Deploy (42/month, 2/day)
11 Deploy数推移(2022/01 ~ 2023/10) ・フェーズごとにHelpに入って もらっていたので結構変動している ・立ち上げによるフェーズに左右され てい る エンジニア推移 2022
2023 | 初期開発 機能拡充のための 設計期 機能拡充開発期 改善期
12 Deploy数推移(2022/01 ~ 2023/10) ・D/D/Dが0.1以上あれば健全らしい ・向上してきているというよりは フェー ズによって変動している ・改善期に入って安定してきている ・改善期より前は、大きな要件設計や技術 的な落とし込みにリソースを使っていた
Deploy / Day / Developer 2022 2023 | 初期開発 機能拡充のための 設計期 機能拡充開発期 改善期
13 チームの状態 • 技術 ◦ 自動テストへの信頼(+ ベースとなるよい設計 ◦ 監視への信頼 ◦
Deploy容易性(はやい・かんたん) ◦ リカバリ容易性(はやい・かんたん) • プロセス・組織 ◦ タスクが単一でリリース可能な粒度になっている ◦ チームで意思決定して(都度承認なしで)リリースできる • メンタル ◦ Deployする方が安心、逆にDeployの間が空くと怖い
14 Deploy頻度を計測する意味とは
15 Deploy頻度は正義か チーム構成 • Engineering Manager: 1人 • “Deploy頻度をあげるため” の取り組みはなにもしていない
• ただ”安全で早くDeployし続けることできる環境”を意識している • チームの健康診断的に使う ◦ 数値が変化したときになにか問題が起きていないのかチェックする 計測はしているが、目標にはしていない
16 なぜDeployしやすい環境を求めるのか チーム構成 • Engineering Manager: 1人 • DARAでは、Deployment PainはWellbeingのページにかかれている
◦ これが組織のパフォーマンスを向上させると信じてる Deployしやすい環境が、エンジニアの開発生産性をあげる
17 なぜエンジニアの開発生産性をあげるのか チーム構成 • Engineering Manager: 1人 素早く価値提供し、ビジネス貢献するため
18 Deploy頻度の高さは、価値提供の大きさなのか チーム構成 • Engineering Manager: 1人 • なにが一番の価値提供になるのかはわからない •
100回のDeployより、1回のDeployの方がインパクトが大きいこともある • 継続して価値提供するために、とにかく打席(仮説検証)を創出する 直接結びつくことはない
19 まとめ
20 まとめ チーム構成 • Engineering Manager: 1人 • Deploy頻度の数値が最終目標ではない •
なりたい姿をイメージして、その状態の定量的な指標の一つとして定義 • Deploy回数を計測する→数値を見て状態に気づく→Painはなにか?を探る なぜ改善する必要があるのか • 仮説検証をたくさん早く回すために開発生産性をあげたい ◦ 開発生産性をあげるために、Deployment Painをなくしたい Deployment Painがない環境を目指そう なりたい姿・状態をイメージして、改善していく
21 おわり 採用してます!
22 開発フロー Development → PR → Review → Merge to
main branch → Deploy to DEV → Release Tag → Deploy to Production • 基本的にmain branchにマージ = 本番Deployする ◦ いくつかのPRがまとめてDeployされることもある ◦ チケットのサイズやPRのサイズを調整して細かく開発&レビュー&リリース する ◦ まだ公開できない機能などはFeatureFlagを使って非公開状態でリリース する(DEV環境でのみ公開される) • 本番Deployしたものは翌日の朝会でデモ(ほぼ毎日 • 朝会にPdMもチームメンバーとして参加しているので常に合意が取れている状 態 詳細はチームメンバーのスライドで
23 チケットサイズ • 改修内容をできるだけ細かな価値提供サイズに分解しチケットを細かくする ◦ PRはさらに適切で小さな単位で作ってReview&Deployする 例えば... 何かの管理画面を作る場合 • 管理画面を開くことができる
• 管理画面で情報を取得できる(&閲覧できる) • 管理画面で情報を更新できる • など… できるようになること単位で作っていく(ケースバイケースではある
24 参考 https://engineering.mercari.com/blog/entry/20221215-devstats/ https://speakerdeck.com/myaake/fu-gang-falsecxptimufalseshao-jie-t okai-fa-falsegong-fu