Feature Toggles

Post on 24-Dec-2015

227 views 3 download

Tags:

description

development

Transcript of Feature Toggles

Anand Agrawal

Feature branches & Continuous Integration

Feature Braches

Trunk

Developer A

Developer B

! 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

Continuous Integration

! 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

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 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

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 needed May 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

Exercise!!

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-

over-feature-branches !  http://paulhammant.com/blog/

branch_by_abstraction.html !  http://labs.spotify.com/2014/03/27/spotify-

engineering-culture-part-1/

Questions ?