Feature Toggling

What?

  • Ability to toggle features for user subset
  • For all/some users
  • Eg. Chat

Why?

  • Ease in users to new features
  • A/B testing
  • Dynamically switch features
    without releases
  • Gauge key user metrics
  • Less branching
  • Safe to fail

How?

  • Account level flag (+ opt-in)
  • Market level flag (+ opt-in)
  • Universal + opt-in

Account level flag
(+ opt-in)?

  • Choose a random subset of 1% of users
  • Set a featureEnabled flag on User Accounts
  • Check for flag on client and enable/disable feature
  • Use flag in Snowplow/GA for A/B testing

What is opt-in?

  • Eligible users opt-in to try out feature
  • No forcing features down users' throats
  • Additional featureOpted flag set from Client
  • Only featureEnabled + featureOpted enables feature

Implementation

  • Client implements feature toggling framework
  • Backend makes schema changes
  • Business decides key user metrics (engagement, revenue etc.)
  • Client & backend implement analytics
  • Plug and play
  • Optionally, Admin implements feature toggling

Advantages

  • Client agnostic (Web/Android/iOS)
  • Market agnostic
  • Safe
  • Controlled number of users
  • Opt-in:
    • Great UX

Market level flag (+opt-in)

  • All users of a selected market
  • Can be tried out in low traffic markets

Advantages

  • Only one market will be affected if something breaks
  • Mass use metrics will be available

Disadvantages

  • Large uncontrolled number of users
  • Market specific metrics won't be available
    in analytics

Universal + opt-in

  • All users are eligible by default
  • Users can opt-in
  • Similar to Account level flag
  • Onus lies on user

Advantages

  • Pan market/client use
  • Close to real use data

Disadvantages

  • Number of users can grow out of control
  • Might annoy large numbers of users

Bonus feature

  • Adds implementation cost

Bonus feature

  • Adds implementation cost

Additional reading

  • http://martinfowler.com/articles/feature-toggles.html
  • http://swreflections.blogspot.in/2014/08/feature-toggles-are-one-of-worst-kinds.html
  • https://abhishek-tiwari.com/post/decoupling-deployment-and-release-feature-toggles
  • https://www.rallydev.com/blog/engineering/awesomeness-feature-toggles

Feature Flipping

By Nikhil John

Feature Flipping

  • 647