Top Banner
Why we used Feature Branching Alan Parkinson CEO, Hindsight Software Ltd
19
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Why we used Feature Branching

Why we used Feature Branching

Alan ParkinsonCEO, Hindsight Software Ltd

Page 2: Why we used Feature Branching
Page 3: Why we used Feature Branching
Page 4: Why we used Feature Branching

we publish a

Universal Binary that

supports 7 platform versions

with breaking API changes

Page 5: Why we used Feature Branching

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

A Feature Toggle Headache

Customers deploy to their own hardware=

Little control over data and feature toggles

Page 7: Why we used Feature Branching

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

Technical Support

Increased complexity and incidence rates

Page 9: Why we used Feature Branching

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

Noisy Testing

Batching many unrelated commits together is a headache for risk based test analysis

Page 11: Why we used Feature Branching

FEATURE BRANCHING OUR WAY

Page 12: Why we used Feature Branching

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

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

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

Merging is a CHANGE to the codebase

Tests are run Before and After the merge

Page 16: Why we used Feature Branching

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

Branches can diverge massively

Every feature branch build merges from master before compiling

Page 18: Why we used Feature Branching

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

Questions?

Alan Parkinson - @alan_parkinsonCEO, Hindsight Software