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
Taiga Sakaguchi
January 30, 2023
Programming
0
140
トランクベース開発のすすめ
Taiga Sakaguchi
January 30, 2023
Tweet
Share
More Decks by Taiga Sakaguchi
See All by Taiga Sakaguchi
gRPC入門
taigaskg
0
270
クリーンアーキテクチャのすすめ
taigaskg
0
340
Other Decks in Programming
See All in Programming
クライアントワークでSREをするということ。あるいは事業会社におけるSREと同じこと・違うこと
nnaka2992
1
340
RubyとGoでゼロから作る証券システム: 高信頼性が求められるシステムのコードの外側にある設計と運用のリアル
free_world21
0
270
TipKitTips
ktcryomm
0
160
20260313 - Grafana & Friends Taipei #1 - Kubernetes v1.36 的開發雜記:那些困在 Alpha 加護病房太久的 Metrics
tico88612
0
180
オブザーバビリティ駆動開発って実際どうなの?
yohfee
3
830
Ruby and LLM Ecosystem 2nd
koic
1
680
Vuetify 3 → 4 何が変わった?差分と移行ポイント10分まとめ
koukimiura
0
130
What Spring Developers Should Know About Jakarta EE
ivargrimstad
0
250
Angular-Apps smarter machen mit Gen AI: Lokal und offlinefähig - Hands-on Workshop!
christianliebel
PRO
0
110
grapheme_strrev関数が採択されました(あと雑感)
youkidearitai
PRO
1
220
DSPy入門 Pythonで実現する自動プロンプト最適化 〜人手によるプロンプト調整からの卒業〜
seaturt1e
1
710
AIに任せる範囲を安全に広げるためにやっていること
fukucheee
0
130
Featured
See All Featured
Side Projects
sachag
455
43k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
110
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
0
450
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.4k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
71
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
350
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
640
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
120
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.1k
What's in a price? How to price your products and services
michaelherold
247
13k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
180
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
310
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