Design a Configuration Service
MediumSystem design · Developer Platform
Design a central configuration service that many applications use to fetch runtime configuration. Changes are rare but sensitive: a bad value can take a fleet down. Services must keep running if the configuration service itself is unavailable.
In scope: versioned storage, validation, staged rollout and rollback, distribution to clients, client caching, and audit. Out of scope: secrets management and per-user feature flag evaluation.
Requirements
- Immutable versions with environment and scope overrides, validated against a schema before publish
- Staged rollout to a canary cohort with health-based halt, and one-action rollback
- Clients cache in memory and on disk, never block startup on the service, and fall back to defaults
- Atomic bundle switches, audited changes, and an emergency path that is rare and logged