Design a Mobile App Feature Flag and Dynamic Configuration Service
We want to design a backend service that delivers feature flags and runtime configurations to mobile clients across the globe. The system must evaluate toggles instantly and keep client applications synchronized when rules change without requiring app store updates.
This brief is incomplete on purpose, as it would be in a real interview. Ask the interviewer about the users, the features, the targets and the traffic. Whatever you uncover is added below.
- Clients must be able to fetch the full evaluation state of all feature flags for a given user context.
- Not uncovered yet
- Not uncovered yet
- Not uncovered yet
- Not uncovered yet
- Not uncovered yet
- Not uncovered yet
- Not uncovered yet
- Not uncovered yet
- Not uncovered yet
- The client evaluation API and payload structure
- The global caching and edge distribution topology
- The evaluation engine placement (client-side vs edge vs origin)
- The storage model for rules, environments, and overrides
The candidate decouples the read-heavy client evaluation path from the management plane using a globally distributed CDN or read-aside edge cache, ensuring apps continue to work offline or during database outages via stale cached rules.
The candidate places the rule evaluation logic close to the client or downloads compiled JSON rules directly to the client SDK to eliminate network hops and achieve sub-50ms evaluation times.
The candidate explains how changes propagate from the central admin backend out to edge nodes and clients within the required 30-second window, using pub-sub or lightweight polling.
The candidate accurately calculates average and peak QPS from the monthly user base and daily check frequency, sizing the edge infrastructure and cache tiers appropriately.
The data model cleanly separates environments (production, staging), flag definitions, targeting rules, and user-specific overrides without locking the schema against future rule types.
Every functional requirement in the brief is visibly served by something on the board, and the non-functional targets are addressed rather than ignored.
Components are labelled, data flows are drawn as connections between them, and the direction of each flow is unambiguous.
Focus on the client polling or streaming architecture, cache layers, and evaluation logic. Do not design the mobile client UI or the internal admin dashboard UI.
- Views
- 2