Chapter 2. The Moving Parts of a Feature-Flagging System
At its core, feature flagging is about your software being able to choose between two or more different execution paths, based upon a flag configuration, often taking into account runtime context (i.e., which user is making the current web request). A toggle router decides the execution path based on runtime context and flag configuration.
Creating Separate Code Paths
Let’s break this down using a working example. Imagine that we work for an ecommerce site called acmeshopping.com. We want to use our feature-flagging system to perform some A/B testing of our checkout flow. Specifically, we want to see whether a user is more likely to click the “Place your order!” button if we enlarge it, as illustrated in Figure 2-1.
Figure 2-1. acmeshopping.com A/B testing
To achieve this, we modify our checkout page rendering code so that there are two different execution paths available at a specific toggle point:
renderCheckoutButton(){
if(
features
.for({user:currentUser})
.isEnabled(“showReallyBigCheckoutButton”)
){
return renderReallyBigCheckoutButton();
}else{
return renderRegularCheckoutButton();
}
}
Every time the checkout page is rendered our software will use that if statement (the toggle point) to select an execution path. It does this by asking the feature-flagging system’s toggle router whether the showReallyBigCheckoutButton ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access