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.
4. Pros
Code for new feature could not make to
production
No fear to check-in in branch
Cons
Merge hell
Fear of refactoring
Difficult to share code across branches
6. Pros
Avoid big merges
Each check-in is production ready
Continuously Integrate thorough out the
progress path of the feature
Cons
Incomplete feature may go to production
Fear to commit code
7. Then how to do Continuous
Integration?
Feature Toggles
12. Release Toggles
To hide incomplete feature
Short lived
Removed as soon as feature is ready
Have pre-decided values across
environments (except dev)
13. 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
14. Testing the Toggles
Unit Test
Test for both conditions i.e. toggle on and off
Integration Test
Test with toggle states that are going live
Test with toggle on
With business toggles be smart about what
you want to test than try and test all
combinations
16. In case of building new API end
point that is not public facing
No feature toggle needed
17. In case of creating new
model or table
No feature toggle needed
18. In case of adding a new column
in database and exposing it
through service
No feature toggle needed
May feature toggle validations
or provide default value
19. In case of new endpoint that is
public facing
Just feature toggle the url
20. In case of UI component
embedded in existing page
Feature toggle the view
element
21. In case of logic change like
change the way payment is
processed
Feature toggle by abstraction
22. 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
23. Ways to implement toggles
Config file
Toggle manager for Admin to manage
Cookie store
… or whatever that makes sense
25. 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
26. 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