Canary Launches and Feature Flag-Driven Development
-
Upload
launchdarkly -
Category
Technology
-
view
305 -
download
0
Transcript of Canary Launches and Feature Flag-Driven Development
![Page 1: Canary Launches and Feature Flag-Driven Development](https://reader036.fdocuments.us/reader036/viewer/2022062522/587d0ed51a28abae148b556d/html5/thumbnails/1.jpg)
of teams practice continuous delivery37%only *
*https://www.perforce.com/pdf/continuous-delivery-report.pdf
FEATURE FLAG-DRIVEN DEVELOPMENTJohn Kodumal
![Page 2: Canary Launches and Feature Flag-Driven Development](https://reader036.fdocuments.us/reader036/viewer/2022062522/587d0ed51a28abae148b556d/html5/thumbnails/2.jpg)
collaborationlack of
Barriers
levelsskillemployee
automationlack of
![Page 3: Canary Launches and Feature Flag-Driven Development](https://reader036.fdocuments.us/reader036/viewer/2022062522/587d0ed51a28abae148b556d/html5/thumbnails/3.jpg)
ENTER CANARY LAUNCHES
![Page 4: Canary Launches and Feature Flag-Driven Development](https://reader036.fdocuments.us/reader036/viewer/2022062522/587d0ed51a28abae148b556d/html5/thumbnails/4.jpg)
![Page 5: Canary Launches and Feature Flag-Driven Development](https://reader036.fdocuments.us/reader036/viewer/2022062522/587d0ed51a28abae148b556d/html5/thumbnails/5.jpg)
![Page 6: Canary Launches and Feature Flag-Driven Development](https://reader036.fdocuments.us/reader036/viewer/2022062522/587d0ed51a28abae148b556d/html5/thumbnails/6.jpg)
MECHANISMS
Load balancer Feature flags
![Page 7: Canary Launches and Feature Flag-Driven Development](https://reader036.fdocuments.us/reader036/viewer/2022062522/587d0ed51a28abae148b556d/html5/thumbnails/7.jpg)
ANATOMY OF A FEATURE FLAG
![Page 8: Canary Launches and Feature Flag-Driven Development](https://reader036.fdocuments.us/reader036/viewer/2022062522/587d0ed51a28abae148b556d/html5/thumbnails/8.jpg)
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 */
![Page 9: Canary Launches and Feature Flag-Driven Development](https://reader036.fdocuments.us/reader036/viewer/2022062522/587d0ed51a28abae148b556d/html5/thumbnails/9.jpg)
USE CASES
• Risk mitigation
• Private betas
• Redundant cloud services
• Performance / load monitoring
• A/B testing and optimization
• Personalization
![Page 10: Canary Launches and Feature Flag-Driven Development](https://reader036.fdocuments.us/reader036/viewer/2022062522/587d0ed51a28abae148b556d/html5/thumbnails/10.jpg)
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
![Page 11: Canary Launches and Feature Flag-Driven Development](https://reader036.fdocuments.us/reader036/viewer/2022062522/587d0ed51a28abae148b556d/html5/thumbnails/11.jpg)
![Page 12: Canary Launches and Feature Flag-Driven Development](https://reader036.fdocuments.us/reader036/viewer/2022062522/587d0ed51a28abae148b556d/html5/thumbnails/12.jpg)
“ ”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
![Page 13: Canary Launches and Feature Flag-Driven Development](https://reader036.fdocuments.us/reader036/viewer/2022062522/587d0ed51a28abae148b556d/html5/thumbnails/13.jpg)
![Page 14: Canary Launches and Feature Flag-Driven Development](https://reader036.fdocuments.us/reader036/viewer/2022062522/587d0ed51a28abae148b556d/html5/thumbnails/14.jpg)
BEST PRACTICES
![Page 15: Canary Launches and Feature Flag-Driven Development](https://reader036.fdocuments.us/reader036/viewer/2022062522/587d0ed51a28abae148b556d/html5/thumbnails/15.jpg)
Flag early, flag often
FLAG
![Page 16: Canary Launches and Feature Flag-Driven Development](https://reader036.fdocuments.us/reader036/viewer/2022062522/587d0ed51a28abae148b556d/html5/thumbnails/16.jpg)
Think experimentally
![Page 17: Canary Launches and Feature Flag-Driven Development](https://reader036.fdocuments.us/reader036/viewer/2022062522/587d0ed51a28abae148b556d/html5/thumbnails/17.jpg)
Remove flags diligently
![Page 18: Canary Launches and Feature Flag-Driven Development](https://reader036.fdocuments.us/reader036/viewer/2022062522/587d0ed51a28abae148b556d/html5/thumbnails/18.jpg)
ANTI-PATTERNS
![Page 19: Canary Launches and Feature Flag-Driven Development](https://reader036.fdocuments.us/reader036/viewer/2022062522/587d0ed51a28abae148b556d/html5/thumbnails/19.jpg)
Retro-flagging
![Page 20: Canary Launches and Feature Flag-Driven Development](https://reader036.fdocuments.us/reader036/viewer/2022062522/587d0ed51a28abae148b556d/html5/thumbnails/20.jpg)
Flags via static configuration files
![Page 21: Canary Launches and Feature Flag-Driven Development](https://reader036.fdocuments.us/reader036/viewer/2022062522/587d0ed51a28abae148b556d/html5/thumbnails/21.jpg)
“ ”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
![Page 22: Canary Launches and Feature Flag-Driven Development](https://reader036.fdocuments.us/reader036/viewer/2022062522/587d0ed51a28abae148b556d/html5/thumbnails/22.jpg)
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