Amazon·Software Engineer·Onsite - System Design / Architecture
- Design a configuration service that lets applications set and get config values, subscribe to specific keys or namespaces, and receive notifications when values change. Define the API surface including set, get, subscribe, and unsubscribe.
- What are the notification semantics for your config service? Specifically, how do you handle at-least-once vs at-most-once delivery, message ordering, and whether to debounce rapid successive changes?
- How would your config service handle versioning, rollbacks, and partial failures during a config update?
- How do you ensure thread safety and handle concurrency in the config service?
- How would you handle persistence and backup for the configuration data, and what access control mechanisms would you put in place?
- How would you scale this config service to thousands of clients? Walk through your fan-out strategy, caching approach, and your choice between long polling and WebSockets for client communication.
- What is the time and space complexity of the core operations in your config service, specifically get, set, and subscribe?
“I started with the API shape which felt natural, but I underestimated how much they'd push on subscription granularity.”