System design interview questionHardBasic System Component

Design a Key-Value Store like Redis or DynamoDB

Design a distributed key-value store (Redis/Dynamo-style): get/put by key, fast, across many nodes.

Interview scope

Client β†’ Load Balancer β†’ multiple App Servers (KV nodes). Show App β†’ App replication and/or App β†’ DB/Object durability. Client never hits storage nodes’ DB directly.

Functional requirements

  • PUT key β†’ value and GET key β†’ value.
  • Run on more than one storage node.
  • Handle node failure at a high level (replication / another node).

Scale and quality goals

  • Low latency reads/writes.
  • Horizontal scale by adding nodes behind a balancer.
  • Data should not live only in one process RAM forever without a plan.

Capacity assumption

Design for this scale

Assume ~200k ops/s mixed get/put across a cluster of storage app nodes.

Practice more than a diagram

Place components on the Froquiz canvas, connect the data flow, and see which decisions the scenario-specific review finds missing. The full exercise and review unlock with Premium.

Explore Premium β†’