feature toggles
DESCRIPTION
Feature toggle widely used in industry to release incomplete features and do A/B testing on features. The presentation covers pros and cons of the approach and share some tips and tricks.TRANSCRIPT
Feature Toggles
Anand Agrawal
Feature branches &Continuous Integration
Feature Braches
Trunk
Developer A
Developer B
ProsCode for new feature could not make to
productionNo fear to check-in in branch
ConsMerge hellFear of refactoringDifficult to share code across branches
Continuous Integration
ProsAvoid big mergesEach check-in is production readyContinuously Integrate thorough out the
progress path of the feature Cons
Incomplete feature may go to productionFear to commit code
Then how to do Continuous Integration?
Feature Toggles
What are toggles?
It’s a simple if statement
Feature toggle is a if statement that hides certain execution path
Types of Feature toggle
Release toggles Business toggles
Release Toggles
To hide incomplete feature Short lived Removed as soon as feature is ready Have pre-decided values across
environments (except dev)
Business Toggles
To enable A / B testing Release feature to certain groups of
people to get early feedback Could be enabled or disabled on the fly
Testing the Toggles
Unit TestTest for both conditions i.e. toggle on and off
Integration TestTest with toggle states that are going liveTest with toggle onWith business toggles be smart about what
you want to test than try and test all combinations
Tips and tricks to implement Feature Toggle
In case of building new API end point that is not public facing
No feature toggle needed
In case of creating new model or table
No feature toggle needed
In case of adding a new column in database and exposing it through service
No feature toggle neededMay feature toggle validations
or provide default value
In case of new endpoint that is public facing
Just feature toggle the url
In case of UI component embedded in existing page
Feature toggle the view element
In case of logic change like change the way payment is processed
Feature toggle by abstraction
Things to keep in mind
Don’t try to toggle each and every line of code. Use only where its needed.
Keep the number of toggles under control
Try to create mutually exclusive toggles Clean up release toggles and dead code
Ways to implement toggles Config file Toggle manager for Admin to manage Cookie store … or whatever that makes sense
They are riding on the same boat
Feature Toggle is second best solution. The best solution is to find a way to gradually integrate, without Feature Branches or Feature Toggles.
Martin Fowler
No free lunch
Good test suite (unit and acceptance) Fix or Revert the breaking change
immediately Break down features into smaller stories Break down stories into smaller tech
tasks Think of how to take your code to
production everyday than creating blockers
References http://martinfowler.com/bliki/FeatureToggle.html http://www.infoq.com/presentations/Feature-Bits http://blog.pluralsight.com/favor-feature-toggles-ov
er-feature-branches
http://paulhammant.com/blog/branch_by_abstraction.html
http://labs.spotify.com/2014/03/27/spotify-engineering-culture-part-1/
Questions ?