Skip to content
Preptima

System Design

System design is deciding how services, stores, caches and queues fit together to meet stated requirements, and defending why you gave up one property to get another. The round tests structured thinking under ambiguity, not recall of a reference architecture.

Very high demand24 min readSenior Software Engineer, Staff Engineer, Backend / Platform Engineer, Solution Architect, Site Reliability EngineerUpdated 2026-07-27

Assumes you know: Two or more years building and shipping a real service, Working knowledge of databases, HTTP APIs and caching, Some exposure to a production incident, ideally one you had to fix

Overview

What this area actually covers

System design is the work of turning a vague requirement into a structure of components with defined responsibilities, and then justifying the structure against the properties it was supposed to deliver — latency, availability, consistency, cost, and the ability of a team to keep operating it at three in the morning. It covers how you split a workload across machines, where state lives and how many copies of it exist, how components talk (synchronously over an API, asynchronously over a queue or log), what happens when one of them is unreachable, and how you find out that something is wrong before your users tell you.

The heart of it is that these properties trade against each other and cannot all be maximised. Replicating data across regions buys you availability and costs you consistency and write latency. Adding a cache buys read throughput and costs you a new class of bug where the cache and the store disagree. Splitting a monolith into services buys independent deployment and costs you distributed failure modes, a network hop in every call path, and the loss of a database transaction as your correctness mechanism. There is no design that avoids paying; the discipline is choosing which currency to pay in and being able to say why.

Two adjacent things get wrongly folded in. Object-oriented and code-level design — class boundaries, patterns, dependency direction — is a real skill, usually assessed in a separate "low-level design" round, and it answers a different question. Infrastructure operation — writing Terraform, tuning a Kubernetes cluster, configuring a mesh — is valuable but is execution of a design rather than the design itself; plenty of strong operators design poorly and some good designers have never written a Helm chart.

A third confusion is worth pre-empting because it wastes the most preparation time. System design is not the study of large systems. It is the study of constrained systems, and the constraint is what generates the design. A service handling a hundred requests a second with a hard requirement that no payment is ever double-counted is a richer design problem than one handling a hundred thousand requests a second of idempotent reads. Candidates who prepare by memorising the architectures of famous products absorb the answers to problems whose constraints they never learned, which is why they come apart the moment the constraints are changed.

Where to go next

Now practise it

70 interview questions in System Design, each with the rubric the interviewer is scoring against.

All System Design questions
system-designdistributed-systemsarchitecturescalabilitytrade-offs