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
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_abstracti
on.html
 http://labs.spotify.com/2014/03/27/spotify-
engineering-culture-part-1/
Questions ?

Feature toggles

  • 1.
  • 2.
  • 3.
  • 4.
     Pros  Codefor 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
  • 5.
  • 6.
     Pros  Avoidbig 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 todo Continuous Integration? Feature Toggles
  • 8.
  • 9.
    It’s a simpleif statement
  • 10.
    Feature toggle isa if statement that hides certain execution path
  • 11.
    Types of Featuretoggle  Release toggles  Business toggles
  • 12.
    Release Toggles  Tohide incomplete feature  Short lived  Removed as soon as feature is ready  Have pre-decided values across environments (except dev)
  • 13.
    Business Toggles  Toenable 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
  • 15.
    Tips and tricksto implement Feature Toggle
  • 16.
    In case ofbuilding new API end point that is not public facing No feature toggle needed
  • 17.
    In case ofcreating new model or table No feature toggle needed
  • 18.
    In case ofadding 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 ofnew endpoint that is public facing Just feature toggle the url
  • 20.
    In case ofUI component embedded in existing page Feature toggle the view element
  • 21.
    In case oflogic change like change the way payment is processed Feature toggle by abstraction
  • 22.
    Things to keepin 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 implementtoggles  Config file  Toggle manager for Admin to manage  Cookie store  … or whatever that makes sense
  • 24.
    They are ridingon the same boat
  • 25.
    Feature Toggle issecond 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
  • 27.
    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_abstracti on.html  http://labs.spotify.com/2014/03/27/spotify- engineering-culture-part-1/
  • 28.