Feature toggles

Post on 02-Dec-2014

577 views 0 download

Tags:

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 of Feature toggles

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

Questions ?