Feature Flag Resources
Feature Flag Driven Development
Using feature flags to power continuous delivery and test-driven development.
The 10 ways you should be using feature flags.
There are a lot of ways to use feature flags - and not all of them are obvious.
Why use feature flags?
Why should you use feature flags (also called feature toggles, flippers, switches, etc.)? Here’s what the community has to say about why they’re important.
Feature Flag SDKs and Plugins
Feature flags are a software development best practice of gating functionality.
Continuous Delivery
Continuous Delivery at Google
Brett Slatkin is the engineering lead of Google Consumer Surveys. He formerly worked on App Engine and is the co-creator of the PubSubHubbub protocol. He talks about how Google uses continuous delivery for software.
The Fast and the Furious - Continuous Delivery
Edith Harbaugh, CEO of LaunchDarkly, discusses how smaller steps mean higher velocity. Best practices in software development like agile, continuous integration, continuous delivery and canary launches are like taking smaller steps to move quicker.
Continuous Delivery by Martin Fowler
Continuous Delivery is a software development discipline where you build software in such a way that the software can be released to production at any time.
When a user loads a page, your application will use that user’s attributes to determine what features to show. For example, if I am a BETA user and I log in to myexamplesite.com, I will see the brand new BETA feature. However, all non-BETA users will just see the old feature. The reason I see the BETA feature is that my user is grouped as BETA.
Multivariate means that you can serve multiple variations of a feature to different user segments. For example, let’s say I have a purple, orange, and green landing page. I can select which individual users or groups of users I would like to see each variation.
Feature flags/toggles/controls harness the power of test-driven development (TDD). This is the process of releasing and iterating features quickly, testing those features, and making improvements. Think of it as Lean UX methodology. You release light features to receive market feedback. You iterate on that feedback, make improvements, and redeploy.
A/B testing is the practice of comparing different versions of a page to see which one performs better. In the traditional sense, A/B testing has been used for mainly cosmetic changes. These include layouts, element position, colors, and copy. Typically, A/B testing is tied to a goal. For example, you want to increase sign up conversions, so you use tools like Optimizely, Visual Web Optimizer, and Apptimize to test different layouts, buttons, and call to action language. These tools work great, but what if you wanted to test backend-level functionality, completely new features, and sign-up flows?

Because feature flags are implemented at the code level, you can control deep functional features and then target user segments. For example, let’s say I want to test a new sign-up flow and welcome tutorial (see above). I can flag the new functional components so that only certain users will receive the new flow.
A feature flag rollout is the practice of gradually releasing a feature to a percentage of your users. Let's look at an example. You are a developer launching a new feature that will require you to process hundreds of additional requests per second. A few hundred more? That's no problem - you've built the infrastructure to scale and handle that load. But, what if all your users fall in love with the new feature? Bombarding you with thousands of requests. How do you manage this? Imagine that you were able to roll out your feature live to 10% of your users and then 20%... 30%.... Each step becomes a testing benchmark where you assess performance feedback and can scale accordingly. More importantly, you mitigate unanticipated performance degradation and meet the consumer expectation of seamless application performance.