Skip to content
tezvyn:

Design a cross-product feature flag strategy for coordinated release

Source: statsig.comMediumHow cards are made

Design a cross-product feature flag strategy for coordinated release

This tests distributed coordination across service boundaries. A strong answer proposes a unified namespace, central config with local caches, and one user-scoped gate evaluated consistently in both products.

What's really being asked

This question tests whether you understand that feature flags are a distributed systems problem once they cross process boundaries. The interviewer cares about consistency models, dependency management, fault tolerance, and user-experience integrity across independently deployed services. They want to see that you think in terms of end-to-end user journeys rather than isolated code paths.

The full answer

First, namespace and dependency design. You should propose a unified flag registry or at least a naming convention that makes cross-product dependencies explicit, such as a prefix like productB.checkout_api_v2 that Product A imports as a prerequisite. Second, evaluation strategy. Recommend evaluating the flag once at the edge or in the entry service and propagating the decision through request context or a secure header so downstream services do not re-evaluate independently and create split-brain states. Third, configuration plumbing. Describe a central config store with local caching, TTLs, and circuit breakers so that a network partition does not default every request to on or off unpredictably. Fourth, rollout mechanics. Mention a coordinated ramp using user-scoped bucketing, canary segments, and kill switches that operate on the entire cross-product flow as a single unit.

The mistakes people make

The biggest red flag is suggesting each product manages its own flag independently with no dependency tracking. This leads to partial rollouts where a user sees the new checkout in Product A but hits the old inventory API in Product B. Another mistake is proposing synchronous flag checks across services without caching or fallback logic, which adds latency and creates a single point of failure. Saying you will just hardcode a dependency version or deploy both products simultaneously as a fix also misses the point because it ignores independent deployability.

What usually comes next

The interviewer may ask what happens if Product B rolls back while Product A keeps the flag on. They may also ask how you handle flag evaluation in mobile clients versus server-side, or how you audit and observe the state of a cross-product flag in production. Be ready to discuss idempotency keys, dark launches, and how you would measure error budgets during the coordinated rollout.

A concrete example

Imagine a new checkout flow in Product A that requires a real-time reservation endpoint in Product B. You create a single gate checkout_v2_reservation that lives in a shared config service. Product A evaluates it when the user begins checkout and stamps the decision into a X-Feature-Context header. Product B reads that header and enforces the same branch without re-evaluating the flag. If Product B's new endpoint errors above one percent, a circuit breaker falls back to the legacy path and the header acts as a kill switch for both products simultaneously.

Interview question

When designing a feature flag that spans two independently deployed services, which strategy best prevents a split-brain user experience while preserving independent deployability?

  • a.Have each service subscribe to the same shared config store and evaluate the flag independently using locally cached values
  • b.Hardcode a version dependency between the services and deploy both simultaneously so the feature is always in sync
  • c.Evaluate the flag once at the entry service and propagate the decision through request headers so downstream services honor it without re-evaluatingCorrect
  • d.Use a synchronous RPC to a central flag service on every request so all services receive the exact same real-time flag value
Why?

Propagating a single evaluation from the entry service prevents downstream services from making inconsistent decisions for the same user while still allowing each service to deploy independently. Option A is tempting because shared config and local caching are good practices, but independent evaluation reintroduces the risk of split-brain states if caches diverge or timing differs.

Just read this? Test yourself on what you have been reading.

Read the original → statsig.com

You just looked this up. Could you explain it out loud?

That is the part interviews actually test. Tezvyn takes questions like this one and gives you what the interviewer is really checking, the answer that lands, and the mistake that ends the conversation, in the four minutes before your next meeting.

The iPhone app is on the way

We are building it. Until it lands, nothing here is held back from you: every interview card, your saved cards, streaks and the job board all work in Safari, plus hundreds of free practice quizzes of thirty questions each. Sign in and it all carries over to the app the day it arrives.

Want it as an icon? Tap Share at the bottom of Safari, then Add to Home Screen. It opens full screen and the cards you have read stay available offline.

Get it on Google PlayiPhone app coming soon

We are hiring for this. Every open role lists the topics its interview covers, so you can prepare for the real thing rather than guessing.

See open roles