トランクベース開発
Note
feature flagを作り機能の公開を制御することでデプロイ速度をあげる開発手法。
従来の課題
- 複数のfeature branchの並列
- 大規模機能のマージによりリグレッション
- レビュープロセスによるマージの遅れ
方法
- タスクを細かい単位に分割しメインブランチにどんどんマージする
- マージ時点で公開したくない機能に関してはFeature Flagで制御する
Warning
CI/CD環境が整っており、コミット後に毎回自動テスト・デプロイが走ることが前提
Note
高速でデプロイが可能になり機能公開に関してもフラグで制御することで、全体としての開発スピード向上が目的
メリット
- 継続的インテグレーション・デプロイの高速化
- 小さなバッチ開発によるレビュープロセスの負担軽減
思ったこと
- 現状のやり方では
issue-番号でブランチを切っていて基本的には1イシューあたり1ブランチなので細かくissueを分けるか、feature名でブランチを切るかどちらかにする必要がありそう。 - モバイルアプリなどのインストールが必要なアプリケーションに関してはある程度バッチにまとめて配信するのが良い。(ユーザーの操作が必要なため)
参考
DevOps 技術: トランクベース開発 | DevOps の能力 | Google Cloud トランク ベース開発 | Atlassian DevOps プロセス: 小さいバッチ単位の作業 | DevOps の能力 | Google Cloud 1日に15回本番デプロイを実現するトランクベース開発のコツ | CyberAgent Developers Blog トランクベース開発とは? | TeamCity CI/CD ガイド | JetBrains