Download - Why we used Feature Branching
![Page 1: Why we used Feature Branching](https://reader035.vdocument.in/reader035/viewer/2022081403/555838f1d8b42acb078b4a3e/html5/thumbnails/1.jpg)
Why we used Feature Branching
Alan ParkinsonCEO, Hindsight Software Ltd
![Page 2: Why we used Feature Branching](https://reader035.vdocument.in/reader035/viewer/2022081403/555838f1d8b42acb078b4a3e/html5/thumbnails/2.jpg)
![Page 3: Why we used Feature Branching](https://reader035.vdocument.in/reader035/viewer/2022081403/555838f1d8b42acb078b4a3e/html5/thumbnails/3.jpg)
![Page 4: Why we used Feature Branching](https://reader035.vdocument.in/reader035/viewer/2022081403/555838f1d8b42acb078b4a3e/html5/thumbnails/4.jpg)
we publish a
Universal Binary that
supports 7 platform versions
with breaking API changes
![Page 5: Why we used Feature Branching](https://reader035.vdocument.in/reader035/viewer/2022081403/555838f1d8b42acb078b4a3e/html5/thumbnails/5.jpg)
Deploy to Production
FunctionalTests
CommitStage
Deploy to UAT
Deploy to Dogfood
Every 3 weeks
Early Access Customers:Hourly or Daily release
![Page 6: Why we used Feature Branching](https://reader035.vdocument.in/reader035/viewer/2022081403/555838f1d8b42acb078b4a3e/html5/thumbnails/6.jpg)
A Feature Toggle Headache
Customers deploy to their own hardware=
Little control over data and feature toggles
![Page 7: Why we used Feature Branching](https://reader035.vdocument.in/reader035/viewer/2022081403/555838f1d8b42acb078b4a3e/html5/thumbnails/7.jpg)
Knight Capital lost $440 million in 30 minutes
“the problem might be a test program in production—or, possibly, a configuration flag that wasn't ready for production and
should have been turned off”
Rick Lane, CTO of Trading Technologies
![Page 8: Why we used Feature Branching](https://reader035.vdocument.in/reader035/viewer/2022081403/555838f1d8b42acb078b4a3e/html5/thumbnails/8.jpg)
Technical Support
Increased complexity and incidence rates
![Page 9: Why we used Feature Branching](https://reader035.vdocument.in/reader035/viewer/2022081403/555838f1d8b42acb078b4a3e/html5/thumbnails/9.jpg)
Disabled by Obscurity
“one danger with feature toggles is an accidental exposure, when someone forgets to
wrap the UI feature in a toggle tag”
Martin Fowler
![Page 10: Why we used Feature Branching](https://reader035.vdocument.in/reader035/viewer/2022081403/555838f1d8b42acb078b4a3e/html5/thumbnails/10.jpg)
Noisy Testing
Batching many unrelated commits together is a headache for risk based test analysis
![Page 11: Why we used Feature Branching](https://reader035.vdocument.in/reader035/viewer/2022081403/555838f1d8b42acb078b4a3e/html5/thumbnails/11.jpg)
FEATURE BRANCHING OUR WAY
![Page 12: Why we used Feature Branching](https://reader035.vdocument.in/reader035/viewer/2022081403/555838f1d8b42acb078b4a3e/html5/thumbnails/12.jpg)
Inexperienced Team
Junior team members are reassured by the safety net
No “jack of all trades”, people collaborate on branches
Pull Requests offer a learning opportunity
![Page 13: Why we used Feature Branching](https://reader035.vdocument.in/reader035/viewer/2022081403/555838f1d8b42acb078b4a3e/html5/thumbnails/13.jpg)
Our take on Feature Branching
• Build from master for releases• No direct commits to master• Each issue/feature/bugfix has a branch• No merges to master, open Pull Requests• Manual testing occurs on Pull Requests
![Page 14: Why we used Feature Branching](https://reader035.vdocument.in/reader035/viewer/2022081403/555838f1d8b42acb078b4a3e/html5/thumbnails/14.jpg)
Merging is HARD work
Refactoring code is bad for merging
Use a SCM with good merge support – git
Do small merges
![Page 15: Why we used Feature Branching](https://reader035.vdocument.in/reader035/viewer/2022081403/555838f1d8b42acb078b4a3e/html5/thumbnails/15.jpg)
Merging is a CHANGE to the codebase
Tests are run Before and After the merge
![Page 16: Why we used Feature Branching](https://reader035.vdocument.in/reader035/viewer/2022081403/555838f1d8b42acb078b4a3e/html5/thumbnails/16.jpg)
Feature Branches in CI?
Once upon a time you couldn’t get CI for feature branches. It’s now possible with Jenkins and
Bamboo
![Page 17: Why we used Feature Branching](https://reader035.vdocument.in/reader035/viewer/2022081403/555838f1d8b42acb078b4a3e/html5/thumbnails/17.jpg)
Branches can diverge massively
Every feature branch build merges from master before compiling
![Page 18: Why we used Feature Branching](https://reader035.vdocument.in/reader035/viewer/2022081403/555838f1d8b42acb078b4a3e/html5/thumbnails/18.jpg)
Summary
Loosing control of Feature Toggle configuration management significantly increased our
Technical Support costs
We went back to the drawing board and mitigated known issues with Feature Branching
![Page 19: Why we used Feature Branching](https://reader035.vdocument.in/reader035/viewer/2022081403/555838f1d8b42acb078b4a3e/html5/thumbnails/19.jpg)
Questions?
Alan Parkinson - @alan_parkinsonCEO, Hindsight Software