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
トランクベース開発のすすめ
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Taiga Sakaguchi
January 30, 2023
Programming
140
0
Share
トランクベース開発のすすめ
Taiga Sakaguchi
January 30, 2023
More Decks by Taiga Sakaguchi
See All by Taiga Sakaguchi
gRPC入門
taigaskg
0
280
クリーンアーキテクチャのすすめ
taigaskg
0
350
Other Decks in Programming
See All in Programming
リセットCSSを1行消したらアクセシビリティが向上した話
pvcresin
4
520
AgentCore Optimizationを始めよう!
licux
3
250
Firefoxにコントリビューションして得られた学び
ken7253
2
170
ふにゃっとしない名前の付け方 〜哲学で茹で上げる、コシのあるソフトウェア設計〜
shimomura
0
120
My daily life on Ruby
a_matsuda
3
410
PHPでローカル環境用のSSL/TLS証明書を発行することはできるのか? #phpconkagawa
akase244
0
370
Back to the roots of date
jinroq
0
880
tsserverとは何だったのか_これからどうなるのか
nowaki28
0
170
TypeScriptだけでAIエージェントを作る フロント・エージェント・インフラのフルスタック実践
har1101
3
640
KMP × Kotlin 2.3 - How Android Got Slower While iOS Builds Improved by 47%
rio432
0
200
PHPer、Cloudflare に引っ越す
suguruooki
2
230
過去のレビュー知見をSkillsで資産化した話
pkshadeck
PRO
1
2k
Featured
See All Featured
Testing 201, or: Great Expectations
jmmastey
46
8.1k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
510
The Art of Programming - Codeland 2020
erikaheidi
57
14k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.2k
Statistics for Hackers
jakevdp
799
230k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
190
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
1
59
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
9.9k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
122
21k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
360
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
550
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.1k
Transcript
トランクベース開発のすすめ Taiga Sakaguchi 1
Taiga 教員→Web エンジニア 歴3 年 バックエンドエンジニア 都内メガベンチャーに勤務 2
みなさん爆速開発できていますか? 3
テーマ : 『変更点を小さくする』 4
こんな辛みありませんか? PR の差分が大きくコンフリクトしてしまう 変更点が多くレビューアーの負担が大きい main ブランチへのマージの変更が大きくリリースが怖い ブランチのパターンが複雑で運用が辛い バグが起きた際の原因特定に時間がかかってしまう レビュー待ちが長い 5
そう、「トランクベース開発」ならね 6
トランクベース開発とは、変更点を小 さくすることで生産性を高める手法 7
機能ブランチを使った手法 機能ごとにブランチを作成し実装完了後トランク (*1) にマージする手 法 例えば、 git-flow github-flow 実装完了しマージできるまでに数日から数週間かかる *(1)
トランクとは、いわゆるmain ブランチのことです 8
機能ブランチの例 出典: https://trunkbaseddevelopment.com 9
トランクベース開発 小さな単位に分割して実装し、1 日に1 回以上トランクにマージする 手法 実装は数時間から数日以内で完了し個々の変更を頻繁にトランクに マージする。 1 日に複数回のリリース 10
トランクベース開発のブランチ 11
Four Keys ソフトウェア開発チームのパフォーマンスを示す4 つの指標 デプロイの頻度 組織による正常な本番環境へのリリースの頻度 変更のリードタイム commit から本番環境稼働までの所要時間 変更障害率
デプロイが原因で本番環境で障害が発生する割合(% ) サービス復元時間 組織が本番環境での障害から回復するのにかかる時間 12
出典: https://cloud.google.com/blog/ja/products/gcp/using-the-four-keys-to-measure-your-devops-performance 13
実現するためのポイント コードレビュー プロセスを簡略化 同期的なレビュー コーディングルール テスト&ビルド 自動テストの実行 ビルドを迅速に行う 14
トランクベース開発の Pros & Cons Pros 新機能をいち早く提供できる レビュアーの負担が軽くなる コンフリクトを抑えられる コードフリーズのような統合期 間が不要
バグの原因を特定しやすい Cons デプロイ可能な単位に作業を分 割する必要がある CI/CD 環境の整備が必要(自動 テスト・ビルド) 15
生産性 vs. 信頼性 16
生産性 with 信頼性 17
とは言っても本番に出したくないときもある 18
フィーチャーフラグ コードを書き換えることなく、動的に機能のON/OFF を切り替えシス テムの振る舞いを変更することができる手法 if featureFlg { // Do something
} else { // Do something else } 19
トランクベース開発が向いていないケ ース 明確にバージョンごとにリリースしたい場合 20
おまけ 21
Progressive Delivery Canary Release に加えて、SLO などのメトリクスを閾値として分析 しデプロイする手法 分析に通らなければ自動でロールバック 22
出典: https://static.sched.com/hosted_files/kccncna19/f2/Progressive Delivery %26 Argo Rollouts.pdf 23
出典: https://static.sched.com/hosted_files/kccncna19/f2/Progressive Delivery %26 Argo Rollouts.pdf 24
Four Keys デプロイの頻度 組織による正常な本番環境へのリリースの頻度 変更のリードタイム commit から本番環境稼働までの所要時間 変更障害率 デプロイが原因で本番環境で障害が発生する割合(% )
サービス復元時間 組織が本番環境での障害から回復するのにかかる時間 25
出典: https://cloud.google.com/blog/ja/products/gcp/using-the-four-keys-to-measure-your-devops-performance 26
参考 https://cloud.google.com/architecture/devops/devops-tech-trunk- based-development?hl=ja https://cloud.google.com/blog/ja/products/gcp/using-the-four- keys-to-measure-your-devops-performance https://ca-base-next.cyberagent.co.jp/2022/sessions/developer- productivity/ https://rheb.hatenablog.com/entry/2021/08/24/ トランクベース開 発について
27