Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
1 Deployment Painをなくそう 2023.10.06 開発生産性LT Night in 福岡 @jimpei
Slide 2
Slide 2 text
2 SIer -> Yahoo! JAPAN -> mercari (2021/08) Help Center Team Software Engineer / Tech Lead 濱村 甚平(@jinpeih)
Slide 3
Slide 3 text
3 Deployment Painとは 今日話すこと 自チームの状態 Deploy頻度を計測する意味とは 02 03 01
Slide 4
Slide 4 text
4 Deployment Painをなくそう
Slide 5
Slide 5 text
5 Deployにどれぐらい抵抗がありますか?
Slide 6
Slide 6 text
6 Deployにどれぐらい抵抗があるか 3ヶ月ぶりに20本分の機能改修差分を リリース手順書とチェックリストを作って 手動で2人体制で2時間かけて Deploy Deployが怖い、負担、面倒に感じる 例えば...
Slide 7
Slide 7 text
7 そもそもDeployment Painとは ● コードを本番環境にプッシュする際に感じる恐怖や不安の尺度 ● デプロイが簡単で苦痛を伴わず、むしろ破壊的である度合い これが大きい場合、ソフトウェアの提供パフォーマンス、組織のパフォーマンス、組織 文化が低い可能性 ソフトウェアを迅速かつ安定して提供する能力を向上させる技術的なプラクティスは、 これ(本番Deployのストレスと不安)も軽減する https://dora.dev/devops-capabilities/cultural/wellbeing/ DORAによると
Slide 8
Slide 8 text
8 チームの状態や取り組み
Slide 9
Slide 9 text
9 チームとプロダクト紹介 チーム構成 ● Engineering Manager(EM): 1人 ● Product Manager(PdM): 1人 ● Software Engineer ○ FE: 1人(+1人) ○ BE: 2人 ● Tech Lead、Scrum Masterはメンバーで兼任 ● FE/BEと分けているがクロスファンクショナルにタスクを取ることもある Help Center: お客さまの疑問やお困りごとの解消のための体験を提供する
Slide 10
Slide 10 text
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)
Slide 11
Slide 11 text
11 Deploy数推移(2022/01 ~ 2023/10) ・フェーズごとにHelpに入って もらっていたので結構変動している ・立ち上げによるフェーズに左右され てい る エンジニア推移 2022 2023 | 初期開発 機能拡充のための 設計期 機能拡充開発期 改善期
Slide 12
Slide 12 text
12 Deploy数推移(2022/01 ~ 2023/10) ・D/D/Dが0.1以上あれば健全らしい ・向上してきているというよりは フェー ズによって変動している ・改善期に入って安定してきている ・改善期より前は、大きな要件設計や技術 的な落とし込みにリソースを使っていた Deploy / Day / Developer 2022 2023 | 初期開発 機能拡充のための 設計期 機能拡充開発期 改善期
Slide 13
Slide 13 text
13 チームの状態 ● 技術 ○ 自動テストへの信頼(+ ベースとなるよい設計 ○ 監視への信頼 ○ Deploy容易性(はやい・かんたん) ○ リカバリ容易性(はやい・かんたん) ● プロセス・組織 ○ タスクが単一でリリース可能な粒度になっている ○ チームで意思決定して(都度承認なしで)リリースできる ● メンタル ○ Deployする方が安心、逆にDeployの間が空くと怖い
Slide 14
Slide 14 text
14 Deploy頻度を計測する意味とは
Slide 15
Slide 15 text
15 Deploy頻度は正義か チーム構成 ● Engineering Manager: 1人 ● “Deploy頻度をあげるため” の取り組みはなにもしていない ● ただ”安全で早くDeployし続けることできる環境”を意識している ● チームの健康診断的に使う ○ 数値が変化したときになにか問題が起きていないのかチェックする 計測はしているが、目標にはしていない
Slide 16
Slide 16 text
16 なぜDeployしやすい環境を求めるのか チーム構成 ● Engineering Manager: 1人 ● DARAでは、Deployment PainはWellbeingのページにかかれている ○ これが組織のパフォーマンスを向上させると信じてる Deployしやすい環境が、エンジニアの開発生産性をあげる
Slide 17
Slide 17 text
17 なぜエンジニアの開発生産性をあげるのか チーム構成 ● Engineering Manager: 1人 素早く価値提供し、ビジネス貢献するため
Slide 18
Slide 18 text
18 Deploy頻度の高さは、価値提供の大きさなのか チーム構成 ● Engineering Manager: 1人 ● なにが一番の価値提供になるのかはわからない ● 100回のDeployより、1回のDeployの方がインパクトが大きいこともある ● 継続して価値提供するために、とにかく打席(仮説検証)を創出する 直接結びつくことはない
Slide 19
Slide 19 text
19 まとめ
Slide 20
Slide 20 text
20 まとめ チーム構成 ● Engineering Manager: 1人 ● Deploy頻度の数値が最終目標ではない ● なりたい姿をイメージして、その状態の定量的な指標の一つとして定義 ● Deploy回数を計測する→数値を見て状態に気づく→Painはなにか?を探る なぜ改善する必要があるのか ● 仮説検証をたくさん早く回すために開発生産性をあげたい ○ 開発生産性をあげるために、Deployment Painをなくしたい Deployment Painがない環境を目指そう なりたい姿・状態をイメージして、改善していく
Slide 21
Slide 21 text
21 おわり 採用してます!
Slide 22
Slide 22 text
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もチームメンバーとして参加しているので常に合意が取れている状 態 詳細はチームメンバーのスライドで
Slide 23
Slide 23 text
23 チケットサイズ ● 改修内容をできるだけ細かな価値提供サイズに分解しチケットを細かくする ○ PRはさらに適切で小さな単位で作ってReview&Deployする 例えば... 何かの管理画面を作る場合 ● 管理画面を開くことができる ● 管理画面で情報を取得できる(&閲覧できる) ● 管理画面で情報を更新できる ● など… できるようになること単位で作っていく(ケースバイケースではある
Slide 24
Slide 24 text
24 参考 https://engineering.mercari.com/blog/entry/20221215-devstats/ https://speakerdeck.com/myaake/fu-gang-falsecxptimufalseshao-jie-t okai-fa-falsegong-fu