Thinking from first principles

Elon Musk was shocked when he decided to shop for two rockets to start fulfilling his dream to send a spaceship to Mars. The cost for the two rockets was $130 million and that was the price for just…

Smartphone

独家优惠奖金 100% 高达 1 BTC + 180 免费旋转




Where to Put your Feature Flag?

When talking about feature flags, a key question teams struggle with is this:

“What is the right layer of stack to put the flag in?”

For instance, if there is a new widget in the UI, should the flag live in the UI or in the backend? What if there is a new search or recommendation algorithm being released?

A handy rule to follow here is the “highest common access point” rule.

Say, a user can interact with a feature through the web UI, mobile app, or through a REST API. These are the three entry points to our stack. If we want to put this feature behind a flag, here are some scenarios and guidance on how to apply the rule.

When to put the flag in a Backend Microservice

If there is more than one entry point through which the feature can be accessed by the customer, then the flag should be placed in the highest level at which these two entry points converge. An example is LinkedIn testing a new algorithm to recommend other professionals to connect with aka “People You May Know”. This feature is accessible via the web and mobile app. A LinkedIn user should see the same recommendations irrespective of web or mobile. The highest common access point for web and mobile endpoints is the microservice which is serving those recommendations. Thus, the flag should be placed in the microservice.

The same approach applies if the recommendations microservice is also available via an API.

When to put the flag in the web UI

When to put the flag in both the web UI & mobile app

Some organizations keep their web and mobile UIs completely separate, only sharing a database. The request path for a request originating from mobile and web hits different microservices on the way to the database. In that case, the highest common access point is the database which cannot be flagged. In such cases, there is no common access point, so the flag can be repeated both in the web and mobile UI.

Warning Signs

If two different flags are used in the web UI and mobile app to control the same feature, it can lead to a whole lot of pain. For instance, an engineer can ramp the web flag but forget to ramp the mobile flag. A user switching between web and mobile will have a broken experience.

Takeaways

When thinking through the problem of where to put a feature flag, use the “highest common access point” rule. It enables you to control your users’ experience across the many endpoints through which they use your product.

Add a comment

Related posts:

A2.3 Git Repository Hosting

There are several repository hosting services if you don’t want to run your own Git server. These range from services that allow only open source to commercial paid hosting. This section covers a few…

And here we got our first clickbait post

As someone who has been on the internet for seven years – yes, I joined when I was 12 – this post misses its point. Comparing junk food to the internet? The distraction part might be true but those…