When it comes to taking advantage of the unique benefits of feature flags, you don’t have to take our word for it. Many of the biggest names in tech use flags or toggles to manage testing, and to release or roll back features. Feature flags can be used to safely test new features while analyzing product metrics and feedback, and also to roll out or roll back code on the fly. They are also useful in customizing user experience on the group or individual level, and collecting real-time user analytics on the impact a feature is having within a continuous deployment or continuous delivery environment.
Here are ten different ways that some very recognizable companies are using the power of feature flags in their software development:
As one of the most customizable blogging platforms in existence, administrators, editors and writers who use WordPress will be familiar with feature flags, even if they’ve never heard the actual term before. One popular tool for site owners is the ability to toggle admin access not just on or off, but to control which admins have access at certain times of day. The product team can use feature flags to control which of these features, such as timed admin access, will be implemented or hidden to users of the platform.
As a Split client, Etsy makes use of our development tools to implement a blue green deployment process within their own continuous integration environment. New features are tested internally at Etsy before rollout to the live platform, and after deployment, developers at Etsy can use our feature flag framework to monitor product metrics of each new feature or feature branch, such as positive or negative impacts on load time, or increase/decrease in consumer clicks after implementation.
The world’s largest social network utilizes a proprietary implementation of feature flagging known as Gatekeeper. Using this dark launching tool, Facebook is able to target which features are available to which consumers and when they are released. Using targeted, systematic rollouts, Facebook can monitor feature effectiveness, as well as track customer engagement metrics with new features.
The developers at Flickr like to live dangerously. Their continuous integration testing environment is somewhat unique in that the repository has no branches. All changes are checked into the main trunk, and the trunk gets pushed to production several times a day. While this has some clear advantages in terms of getting bug fixes out quickly, what does that mean when one team wants to test a new feature that may take some time, perhaps months, to complete? Enter feature flags. In this case, features are toggled on and off for specific internal environments, such as Development or Production, in order to facilitate feature testing under different conditions.
Another variation on the targeted implementation of features is used by Salesforce, another Split client. Given the company’s variety of retail customers across a wide spectrum of industries, different clients will have different needs in terms of feature availability. In this case, features can be targeted to specific subsets of users for rollout, while the other customers’ frontend remains unaffected. Meanwhile, customers can control whether or not to activate a given feature based on their individual needs, which serves the dual purpose of enabling the product team to see immediately how widespread the use of a new feature might be.
Product Recommendation is an incredibly powerful feature that not only changed the face of Amazon, but fundamentally altered the way that consumers interacted with the site. This is an example of feature flags at their finest. When developers had the idea to show products to customers based on what others had bought while searching for the same product, the feature was implemented for certain users in an A/B testing environment under Amazon’s watchful eyes in order to gauge response. The result is a key Amazon feature we all use today.
7. Google (Gmail, Calendar, Drive, etc.)
At Google, a common practice is to follow a nine-step CI/CD process to safely test and roll out new features so as to avoid any negative impact across their vast user base. This process serves to incrementally introduce new code into the trunk, perform feature testing in a targeted and controlled fashion, remove any old code rendered obsolete by the new feature or feature branch, and activate the feature globally. Users are even able to perform their own feature testing, using tools such as Gmail Add-ons to toggle experimental feature flags on and off.
8. Google Chrome Canary
If you dig deep enough into Chrome’s advanced options, you will find a menu to choose which release channel you would like to use: stable, beta, dev, or canary. While many users may wish to switch to beta in order to experience the newest features that will be available in the next release, the more adventurous can choose to switch to dev, and the real adrenaline junkies can go for canary, a nightly version in which all newly merged code has been built without any subsequent testing by the dev team.
If you have used Netflix over any period of time, you know that they are constantly experimenting with new features. The company follows the scary-sounding discipline of “chaos engineering,” in which a tool called ChAP (Chaos Automation Platform) engages in a kind of real-time A/B testing of new features in production. Feature testing is targeted on small groups with the majority of users left alone as control. The platform monitors for vulnerabilities and seamlessly return users to the control group as faults occur.
10. Knight Capital Group
Now an example of how NOT to use feature flags. In this case, a brokerage trading platform went haywire because of engineers using manual continuous deployment, rather than automated continuous delivery. Essentially, a code update repurposed an old flag that had been used to activate an old feature, and due to human error, one of the company’s eight main servers had the old flag toggled on without having the old code replaced. The result was a $460 million loss, bankruptcy, and absorption.
Thankfully, errors such as the one made by Knight can be avoided using a fully automated, tightly controlled and carefully monitored CI/CD environment such as the one offered by Split. As you can see from the examples above, there are many ways to use feature flags, and the uses are up to the software developer for implementing them. With the right feature flag management system in place, your product can have the kind of dynamic flexibility that will allow you to scale and compete in today’s ever-changing development landscape.