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