Chapter 7. Best Practice #5: Implement Flagging Decisions Close to Business Logic

At acmeshopping.com we want to experiment with the idea of offering free shipping on all orders that total more than $50. We want to manage the rollout of this feature using a feature flag. An obvious first question to ask is where to implement that flagging decision. Let’s take a look at the architecture of acmeshopping.com’s backend systems, shown in Figure 7-1, so that we can evaluate our options.

Backend systems involved in creating a new checkout
Figure 7-1. Backend systems involved in creating a new checkout

At acmeshopping.com, all user-facing web interactions go through the cunningly named Web App.

When a user is done filling their cart and is ready to check out, they make a request to the Web App, which in turn asks the Checkout service to create a new checkout. The Checkout service does this and returns information about the checkout back to the Web App, including details about the shipping costs associated with the items in this checkout (at Acme, shipping costs are not calculated until the user finalizes the order and checks out).

The Checkout service calculates shipping costs, so it seems obvious that the flagging decision for the “free shipping” feature should reside within that service, as depicted in Figure 7-2.

Placing the “free shipping” flag decision in the Checkout service
Figure 7-2. Placing ...

Get Feature Flag Best Practices 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.