Agenda
•What’s a feature flag
•Why feature flags
•Use cases
•Demo
•Feature flags at HealthPartners
•Disadvantages
Slide 4
Slide 4 text
What’s a Feature Flag?
Use cases:
•Turn features on/off (beta test)
•Dark launch features (beta test with specific users)
•Canary release
•Incremental release
•A/B test features
•Change behavior of a feature at runtime
Feature flags help manage the lifecycle of your features at
runtime with the flip of a switch.
Slide 5
Slide 5 text
Why Feature Flags?
•Reduce risk
•Continuous Delivery or Continuous Deployment
•A/B testing
•Calendar or time sensitive launches
•Deploy when you want, release when you’re ready
Slide 6
Slide 6 text
Use Cases
Slide 7
Slide 7 text
Disable plan for me
Enable my prescriptions
Enable/Disable Features at Runtime
Off
On
Deploy when you want, release when you’re ready
Slide 8
Slide 8 text
Feature Flag Code
Feature
Check
True
False
Off On
Slide 9
Slide 9 text
Canary Release (dark launch)
Canary release is a technique to reduce the risk of introducing a new
software version in production by slowly rolling out the change to a
small subset of users before rolling it out to the entire infrastructure
and making it available to everybody.
Feature Feature Flag Target audience
Off
On
Off
Slide 10
Slide 10 text
Incremental Rollouts (dark launch)
Feature
80%
40%
10%
100%
Monitor
performance, errors,
usage metrics, rollback is
simple, throttle rollout
in real time
Slide 11
Slide 11 text
Feature
6-10 AM
Calendar-driven Launches
8:00 AM
6:00 AM
10:00 AM
12:00 PM
4:00 AM
2:00 PM
Time sensitive
release (sale, promotion,
experiment)
Slide 12
Slide 12 text
Feature flags can present
alternative user experiences for
A/B testing exercises. For
example, we could apply
alternative workflows, icons, or
content for a feature.
A/B Testing
A
B
Slide 13
Slide 13 text
Avoid Feature Branching
Master
Fork Feature branch #1
Merge
Release
Feature branch #2
Release
Conflict
Master
Release Release
Flickr doesn’t use feature branches and releases to
production several times a day
Slide 14
Slide 14 text
Feature Flag Management
Open Source Commercial
FF4J LaunchDarkly
Togglz Split
Flip
Custom (properties,
database)
Slide 15
Slide 15 text
No content
Slide 16
Slide 16 text
Feature Flags at HealthPartners
Find Care
Team Emerge Team
Mobile Team Others?
Slide 17
Slide 17 text
HealthPartners
OAuth 2.0
HealthPartners
OAuth 1.0
We were able to
reduce risk by releasing
OAuth 1.0 & 2.0 side-by-
side and test 2.0 in isolation
by whitelisting a few
select testers
Canary Release Fitbit Upgrade
HealthPartners
Use case
Slide 18
Slide 18 text
Load balancer
Blue Green
Off On
HealthPartners
Use case
Blue/Green Deployments
Slide 19
Slide 19 text
Disadvantages
•A feature flag becomes instant tech debt
•Feature flag management can be complicated - knowing
what a flag does and who owns it
•Testing feature flags requires additional test scenarios
•Triaging defects must take the state of the feature flag into
consideration
•Knight Capital went bankrupt in 45 minutes for misusing a
feature flag and lost 460 million dollars
Slide 20
Slide 20 text
Alternative Solutions
•Manage features via a content management system - turn
features on/off at the front door (buttons and links)
•Manage features via fast continuous delivery pipeline
releases
Slide 21
Slide 21 text
Summary
Use cases:
•Turn features on/off (beta test)
•Dark launch features (beta test with specific users):
•Canary release
•Incremental release
•A/B test features
•Change behavior of a feature at runtime
•Deploy when you want, release when you’re ready
Feature flags help manage the lifecycle of your features at
runtime with the flip of a switch.