Chapter 1. Feature Management

Feature management solutions enable businesses to dynamically control the availability of application features to end users. In this chapter, I introduce feature flags, a fundamental technology in feature management solutions. I then discuss the various feature management use cases, including progressive delivery, infrastructure migrations, experimentation, and testing.

What Is a Feature Flag?

In simple terms, a feature flag is a decision point in your code that can change the behavior of your application. Feature flags—also known as feature toggles—have long been used to trigger “hidden” code or behaviors without having to ship new versions of your software.

A feature flag is like a powerful “if” statement:

if(enableFeature(one.click.checkout, {...}))
then
    /*show the one-click checkout feature */
else
    /* show the old feature/

In the early days of software development, this might have been a command-line argument, an undocumented variable in a configuration file, or a hidden value in a registry. The value of each feature flag was typically set early in the life cycle, at compile-time, deploy-time, or runtime. After the value of the flag was set, the software would run that way until it was recompiled, redeployed, or restarted. Modern feature management is different.

There are two parts to the seemingly simple enableFeature call highlighted in the preceding example that make it special. The second parameter to the function (elided for simplicity ...

Get Effective Feature Management now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.