Slide 1

Slide 1 text

Feature Flags Brad Broulik & Nick Marsh

Slide 2

Slide 2 text

Feature Flag! https://me.me/i/do-not-push-button-temptation-do-you-really-want-to-15422537

Slide 3

Slide 3 text

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.

Slide 22

Slide 22 text

https://funixx.wordpress.com/2012/07/19/do-not-push-button/ Questions