of teams practice continuous delivery37%only *
*https://www.perforce.com/pdf/continuous-delivery-report.pdf
FEATURE FLAG-DRIVEN DEVELOPMENTJohn Kodumal
collaborationlack of
Barriers
levelsskillemployee
automationlack of
ENTER CANARY LAUNCHES
MECHANISMS
Load balancer Feature flags
ANATOMY OF A FEATURE FLAG
IN CODE
new.signup
{ key: “[email protected]”, orgs: [“google”, “microsoft”], inBeta: true}
if ( ),
then/*show the new signup page */
else/*show the old signup page */
USE CASES
• Risk mitigation
• Private betas
• Redundant cloud services
• Performance / load monitoring
• A/B testing and optimization
• Personalization
FEATURE FLAG-DRIVEN DEVELOPMENT
1. Add a feature flag
2. Write some code
3. Launch and measure
4. Select winning variation, remove flag
5. Repeat for every code change
“ ”When a test goes out we look at the data immediately and adapt the products quickly. We do this on a daily basis. This cycle of iteration is the engine of progress and the people who use Facebook are not just the beneficiaries but are also intimately a part of the process. We don’t just develop this product for them, we develop it with them.
- Andrew Bosworth, Facebook
BEST PRACTICES
Flag early, flag often
FLAG
Think experimentally
Remove flags diligently
ANTI-PATTERNS
Retro-flagging
Flags via static configuration files
“ ”Overall, engineers are treated as creative collaborators in the overall process with design and product, and products are worked out and iterated on with engineers instead of simply being handed to them for implementation.
- Chad Dickerson, Etsy
AVAILABLE TOOLS• Togglez— Feature flags for the Java platform
• Waffle— Feature flags for Python / Django
• FeatureToggle— Feature flags for .NET
• Sixpack— Platform-agnostic A/B testing framework
• LaunchDarkly— SaaS platform for feature flags + A/B testing