Product basics Part 2: Advanced

Lesson 9 of 15

System design for product managers.

What clients, servers, APIs, databases, caches, and queues are for, how to talk about speed, scale, and reliability, and a step-by-step way to talk through any design with your engineers.

By Nagesh Koritala, product manager October 2026

  • About 17 minutes
  • 7 parts
  • 6 quick questions
  • A worksheet
The pieces behind one product page at a made-up furniture store. The shopper’s browser, the client, sends a request to the store’s server and gets a response. Photos come from a CDN near the shopper. The server reuses answers from a cache, reads and writes the database, asks the delivery-date service through an API, and puts new orders on a queue for the warehouse. requestresponse CDNphotos, nearby Clientthe shopper’sbrowser or app Serverbuilds thesofa page Cachereuse answers Databaseproducts, orders Delivery datesa service, via API Queueorders wait here warehouse, later you don’t build these,but you help decide whateach one must promise

Before you start

You’re the product manager for the product pages at a made-up online furniture store. You want every sofa page to show a delivery window, like “Arrives Thu to Sat”, for the shopper’s ZIP code. In planning, an engineer says: “We can do it. We’ll cache the dates for 15 minutes, and if the warehouse system is slow, the page says ‘See delivery dates at checkout’ instead.” Before you read on: what is the engineer trading off, and is it a good trade for your shoppers? Write it in one sentence.

It stays on this device only. You’ll see it again at the end.

In this lesson, you’ll learn to

  • Explain what happens, piece by piece, when a shopper opens a page: client, server, API, and database
  • Say when a cache or a queue helps, and what each one costs you
  • Talk about speed and scale in plain terms: latency, percentiles, and adding servers
  • Describe availability in “nines”, and decide what should happen when one piece fails
  • Walk through a design step by step: requirements, scale, components, data flow, bottlenecks, trade-offs
  • Ask engineers the questions that shape a design, without pretending to be one

Key terms

Client and server
The client is the device and software the shopper uses, usually a browser or an app. A server is a computer that stores the site or app and answers the client’s requests.
API
Application programming interface: a set of rules that lets one piece of software ask another for something. A contract: send this, get that back.
Database
An organized, electronically stored collection of data (products, prices, orders, accounts), managed by software that stores, finds, and changes it.
Cache
A stored copy of an answer, reused for later requests instead of working it out again. Faster, but it can be out of date.
Queue
A waiting line for work. One part of the system leaves a message; another picks it up and does the work later, so nobody waits for it.
Latency
The delay between asking for something and getting it. Low latency means fast.
Availability
The share of time (or of requests) in which a service works as agreed. Often written in “nines”: 99.9% is three nines.

The idea

“System design” sounds like a topic for engineers only. Partly, it is. You won’t pick the database or decide how the data is organized, and nobody expects you to.

But almost every system decision is also a product decision. How fresh must the delivery date be? What should a shopper see if the warehouse system is down? Is it fine if the confirmation email arrives a minute late? Engineers can’t answer those alone. This lesson gives you enough vocabulary to answer them together, and a step-by-step way to talk through any design. One made-up example runs through it: an online furniture store and its delivery-date estimate.

The lesson, in seven parts

  1. What happens when a shopper opens a page.

    Start with one tap. A shopper opens the page for a gray sofa. Their phone’s browser, the client, sends a request across the internet to the store’s servers. A server gathers what the page needs and sends back a response. The browser draws the page. On the web, that request and response travel over HTTP, which MDN Web Docs describes as a client-server protocol (a shared set of rules for the conversation): the browser starts the request, and the server answers it.

    That one page usually needs several things at once, and each comes from a different piece:

    PieceWhat it doesIn the made-up furniture store
    ClientThe shopper’s browser or app; sends requests and shows the resultThe phone showing the gray sofa page
    ServerReceives requests, runs the store’s code, sends responsesBuilds the sofa page
    DatabaseStores data so it can be found and changedProducts, prices, stock, orders
    CacheKeeps recent answers close by, to reuse themSofa descriptions that rarely change
    CDN (content delivery network)Servers in many places that keep copies of files near usersSofa photos load from a server near the shopper
    Other services, through APIsSeparate systems that each do one jobDelivery dates, payments, the warehouse
    QueueHolds work to be done a little laterNew orders waiting for the warehouse

    A made-up example. Real systems have more pieces; these are the ones you’ll hear about most. The CDN description follows MDN Web Docs.

    You don’t need to know how each piece works inside. You need to know what each one is for, so that when an engineer says “that’s a database read on every page view”, you understand why they’re frowning.

  2. APIs: the contracts between the pieces.

    MDN Web Docs defines an API, short for application programming interface, as “a set of features and rules that exist inside a software program” that let other software work with it, and says it can be seen as “a simple contract” between the program that offers it and whatever uses it. In plain words: send this, get that back.

    Engineers design how an API keeps its promise. You help decide what it promises, because that’s the part shoppers feel. Here’s the delivery-date API at the made-up store, described the way a product manager might:

    • Send: the sofa’s product number and the shopper’s ZIP code.
    • Get back: the earliest delivery window, like “Thu, Oct 15 to Sat, Oct 17”, and whether in-home delivery (carried to the room the shopper picks) is available.
    • Promise: an answer in under half a second for 99 requests in 100 (part 5 explains why it’s said that way).
    • If it can’t answer: say so clearly, so the page can show something else.

    That last line is a product decision, and so is the speed. Questions worth asking about any API your feature depends on:

    • What do we send, and what do we get back?
    • How fast does it answer, usually and at its slowest?
    • Who owns it, and who do we call when it breaks?
    • Is there a limit on how often we can call it?
    • What does it return when it fails, and what will our page show then?
  3. Databases and caches: where data lives, and how fresh it is.

    A database is where the store keeps what it knows. AWS describes a database as “an electronically stored, systematic collection of data”, managed by software that stores, retrieves, and edits it. Products, prices, stock counts, orders, and accounts all live in databases.

    Asking a database the same question thousands of times a minute is slow and costly. So teams add a cache: a copy of a recent answer, kept close by and reused. MDN explains that the HTTP cache “stores a response associated with a request and reuses the stored response for subsequent requests.” It also names the catch. A stored response is either fresh or stale, and a stale one has expired.

    So every cache comes with a product question: how out of date is acceptable? The answer is different for each kind of data:

    Data on the sofa pageHow fresh must it be?Cache it?
    Description and photosHours old is fineYes, for a long time
    PriceMust match what the shopper paysBriefly, and check again at checkout
    “Only 2 left”Close to live, or it misleadsBriefly, or not at all
    Delivery date estimateMinutes old is fine here; exact at checkoutYes, for about 15 minutes
    The shopper’s cartAlways exactNo. Each cart is read fresh, never from a copy shared between shoppers

    A made-up example. Your engineers know the real limits; your job is to say what the shopper needs.

    That’s the engineer’s line from the start of this lesson. Caching delivery dates for 15 minutes trades a little freshness for a lot of speed, and it takes load off the warehouse system. Checking the date again at checkout keeps the promise honest.

  4. Queues: work that doesn’t need to happen right now.

    When a shopper places an order, a lot has to happen. Charge the card. Save the order. Tell the warehouse. Book a delivery slot. Send a confirmation email. If the shopper had to wait for all of it, checkout would crawl, and one slow system could hold up every order.

    A queue fixes that. AWS describes a message queue as asynchronous communication between services: messages wait on the queue until they’re processed, and queues can “smooth spiky workloads.” Asynchronous means the sender doesn’t wait for the work to finish. The order is saved, the shopper sees “Thanks, your order is in”, and the warehouse and email systems pick up their messages moments later.

    For a product manager, the useful question is short: does the customer need to wait for this?

    After a shopper taps Place order, they wait only for the payment check and for the order to be saved, then see that the order is confirmed. Three other jobs go on a queue and happen later: sending the order to the warehouse, seconds later; the confirmation email, a minute later; and updating suggestions, hours later. The shopper waits for Place order Payment OKand order saved Confirmedshopper sees it and later: Queue To the warehouseseconds later Confirmation emaila minute later Suggestions updatehours later
    The shopper waits only for what they must. Everything else goes on a queue and happens moments later.
    Step after “Place order”Must the shopper wait?Why
    Confirm the payment went throughYesThey need to know the order is real
    Save the orderYesNothing else can happen without it
    Book the delivery slotIt dependsIf you promise a date at checkout, hold it now; the final booking can follow
    Send the order to the warehouseNo: queue itSeconds later is fine
    Send the confirmation emailNo: queue itA minute later is fine
    Update the “you might also like” suggestionsNo: queue itHours later is fine

    A made-up example.

    A queue has a cost too: things happen soon, not instantly. So you also decide what the shopper sees in between, like “Your confirmation email is on its way.”

  5. Speed and scale: latency, percentiles, and more servers.

    Latency is the delay between asking and getting an answer. MDN defines it as the network time it takes for a requested resource to reach its destination, and puts it simply: low latency is good, high latency is bad. Google’s Site Reliability Engineering book uses the wider idea teams track for a whole request: how long it takes to return a response. Shoppers feel it as a page that hangs.

    Here’s what many people miss. Don’t judge speed by the average alone. Google’s Site Reliability Engineering book shows a service where a typical request takes about 50 milliseconds, yet 5% of requests are 20 times slower, and an average hides it. So teams look at percentiles: the 99th percentile is the time that 99% of requests beat, which the book calls “a plausible worst-case value”. If your sofa page is slow at the 99th percentile, one page view in a hundred is at least that slow. A shopper opens many pages, so far more than one shopper in a hundred feels it. On a busy day, that’s a lot of people.

    Scale is how the system copes as more people use it. Microsoft’s Azure architecture guidance describes two basic moves. Vertical scaling increases the capacity of a single resource, like a bigger server. Horizontal scaling adds more copies of the server to share the work. Adding servers usually means adding a load balancer, which, in AWS’s words, distributes traffic “across a pool of resources”.

    MoveWhat it meansHelps withWatch out for
    Scale up (vertical)One bigger serverParts that are hard to splitServers only come so big, and one machine can still fail
    Scale out (horizontal)More servers sharing the work, behind a load balancerTraffic spikes, like a holiday saleThe software must be built to run on many machines

    Scale up and scale out follow Microsoft’s Azure Well-Architected guidance. The trade-offs are typical, not universal: your engineers know your system’s limits.

    Your part is to bring the numbers behind these choices: how many people, at what peak, expecting what speed. Part 7 shows how.

  6. Reliability: what happens when a piece fails.

    Every piece fails sometimes. AWS defines availability as “the percentage of time that a workload is available for use”, and teams describe it in nines. Each extra nine cuts the allowed downtime to about a tenth:

    The delivery-date service is down. With a hard dependency, the whole sofa page fails with an error and the shopper is stuck. With a soft dependency, the page still loads and says See delivery dates at checkout, so the shopper keeps going. Delivery datesservice is down Hard dependencySoft dependency Gray sofa$899 Something wentwrong. Try again. Gray sofa$899 See delivery datesat checkout the shopper is stuckthe shopper keeps going
    A hard dependency breaks the page when one service fails. A soft dependency shows a fallback, and the shopper keeps going.
    AvailabilityDowntime allowed per year, at most
    99% (two nines)3 days 15 hours
    99.9% (three nines)8 hours 45 minutes
    99.95%4 hours 22 minutes
    99.99% (four nines)52 minutes
    99.999% (five nines)5 minutes

    From the AWS Well-Architected Framework, Reliability Pillar, which lists online commerce among its examples at the 99.95% level.

    Two ideas from the same AWS guide matter most to a product manager. First, pieces that depend on each other multiply. If a page can’t work without two other services, and all three are designed for 99.99%, the page can reach only about 99.97% (99.99% × 99.99% × 99.99%). AWS calls that a hard dependency. Second, the fix is often a product decision: make it a soft dependency, where the page still works when the other piece fails. If the delivery-date service is down, the sofa page shouldn’t break. It can say “See delivery dates at checkout” and let the shopper keep going.

  7. Talk through a design, step by step.

    When engineers sketch a design, or an interviewer says “design a delivery-date feature”, it helps to follow a steady order. Alex Xu’s book System Design Interview uses four steps: understand the problem and establish the design scope, propose a high-level design and get buy-in, design deep dive, and wrap up. This lesson breaks that into six moves for product managers:

    • Clarify the requirements. What must it do, for whom, on which devices? And how well: how fast, how fresh, how available?
    • Estimate the scale. A rough count of users, requests, and peaks, done on the back of an envelope. Round numbers are fine.
    • Sketch the components. Boxes for the client, servers, data, caches, queues, and other services.
    • Follow the data. Walk one request through the boxes, start to finish.
    • Find the bottlenecks. Which piece breaks first at peak? Which failure hurts shoppers most?
    • Name the trade-offs. Speed or freshness, cost or availability, now or later. Decide them out loud, with reasons.
    Six moves for talking through a design, in order: 1 requirements, what it must do and how well; 2 scale, in round numbers; 3 components, the boxes; 4 data flow, one request through the boxes; 5 bottlenecks, what breaks first; 6 trade-offs, decided out loud. 1Requirementswhat, and how well 2Scaleround numbers 3Componentsthe boxes 4Data flowone request through 5Bottleneckswhat breaks first 6Trade-offsdecide out loud the boxes are engineering’s; the reasons are shared
    Six moves for talking through any design, from requirements to trade-offs.

    The template

    We’re designing [feature] for [users]. It must [what it does], answer within [time], be no more than [how old] out of date, and stay available [target], or fall back to [what the shopper sees]. At peak we expect about [requests per second]. The main pieces are [components]. A request flows [path]. The likely bottleneck is [piece], so we’re thinking about [cache, queue, scale out, or fall back], and engineering decides how. We’re trading [this] for [that], because [reason that matters to users].

    Filled in, for the made-up furniture store

    We’re designing a delivery-date estimate for shoppers on sofa pages. It must show the earliest delivery window for their ZIP code, answer within half a second, be no more than 15 minutes out of date on the product page (and exact at checkout), and never block the page: if it can’t answer, the page says “See delivery dates at checkout”. At peak we expect about 25 requests a second. Here’s the rough math, with made-up numbers: 200,000 page views on a busy day, spread over the 86,400 seconds in a day, is about 2 a second, and a sale might bring ten times that. A request goes from the page to the delivery-date service, which answers from its cache or, if it has no fresh answer, asks the warehouse and carrier schedules. The likely bottleneck is the warehouse system, so we’re thinking about caching answers by product and ZIP-code area, with the fallback if it’s slow, and engineering decides how. We’re trading a little freshness for speed, because a fast date that’s confirmed at checkout helps shoppers more than an exact date on a page that hangs.

    Notice how much of that is yours: who it’s for, how fresh, how fast, what the shopper sees when something fails. The boxes are the engineers’ craft. The reasons are shared.

With AI: AI tools can now draft an architecture diagram, explain an unfamiliar term, or list the failure cases you forgot, in seconds. Use them to learn faster and to prepare better questions. Don’t use them to overrule your engineers: an AI doesn’t know your systems, your traffic, or your past outages, and it sounds just as confident either way. AI features also bring system questions of their own, like slower responses and answers that vary, so the habit of asking “how fast, how fresh, and what if it fails?” matters more, not less.

Check your understanding

Answer each one in your head or on paper first. Then open the answer to check.

1A shopper opens a sofa page. Which is the client, which is the server, and what passes between them?

The client is the shopper’s browser or app; the server is the store’s computer that builds the page. The client sends a request (over HTTP, on the web), and the server sends back a response.

2Why might a team cache the delivery date, and what’s the risk?

To answer faster and take load off the warehouse system. The risk is a stale answer, so the team agrees how old is acceptable and checks again where it must be exact, at checkout.

3Which should go on a queue: confirming the payment, or sending the confirmation email? Why?

The email. The shopper doesn’t need to wait for it. They do need to know the payment worked before the order is confirmed.

4Your product page’s average load time looks fine, but customers say it’s slow. What would you look at?

The slow end: high percentiles, like the 95th or 99th. An average can hide a slow minority of requests.

5A page designed for 99.99% availability can’t work unless two other services work, and each of them is also designed for 99.99%. Roughly what can the page reach, and what could you change?

About 99.97%, because hard dependencies multiply. Make some of them soft: let the page keep working, with a fallback, when one of them fails.

6What’s the difference between an SLO and an SLA?

An SLO is a target for a measured level of service. An SLA is an agreement with users that includes consequences, such as a refund or a credit, if the target is missed.

Practice: design a back-in-stock alert

Shoppers at the made-up furniture store can tap “Email me when it’s back” on a sold-out sofa. Talk it through with the six moves from part 7. Write your answer first. Then open the model answer.

  1. List the requirements, including how soon the email must go out and what happens if sending fails
  2. Estimate the scale with round, made-up numbers
  3. Sketch the components, and follow one sign-up and one restock through them
  4. Name the likely bottleneck and two trade-offs
Show a model answer

One possible answer. Requirements: a shopper signs up with an email for a specific sofa; when it’s back, each person gets one email, within an hour; nobody gets duplicates; signing up is quick and never slows the product page; if an email fails to send, the system tries again a few times and then logs it for someone to check, and nobody leaves the waiting list until their email has gone out. Scale (made-up): about 2,000 sign-ups a day, and a popular sofa might have 5,000 people waiting, all due an email at once. Components and flow: a sign-up saves one record in the database. When stock arrives, the stock system puts a “restocked” message on the queue; a worker (a small program that takes jobs off the queue) reads the waiting list and sends emails at a steady pace. Bottleneck: the burst of 5,000 emails, which the queue smooths out. Trade-offs: emails go out over several minutes, not instantly, which is fine for shoppers. And if 5,000 people come back for 40 sofas, most will be disappointed, so you might email in batches as stock allows, or say how many are back. That last one is a product decision, not a technical one.

Back to where you started

The short answer

System design is deciding which pieces a product needs (servers, databases, caches, queues, other services) and how they talk to each other, so it stays fast and dependable as more people use it. A product manager doesn’t design the system. You bring the requirements that shape it (who uses it, how many, how fast, how fresh, and what happens when something fails), and you understand the trade-offs well enough to decide them with your engineers.

Look back at the sentence you wrote at the start. The engineer was trading freshness for speed (a cached date) and adding a fallback, so a slow warehouse system wouldn’t hold up the page. If you caught one of the two, that’s a good start. For shoppers, it’s usually a good trade, as long as the date is confirmed at checkout. So a good next question is: how wrong can the cached date be, and do we check it again at checkout? If that’s what you’d ask, you’re already doing the product manager’s part of system design.

Common mistakes

Most come from treating system design as someone else’s problem, or as yours alone.

  • Leaving requirements vague (“it should be fast”) instead of giving numbers: how fast, how fresh, how many.
  • Asking for 100% availability. It isn’t possible, and chasing it costs more than it’s worth and slows new features.
  • Judging speed by the average, and missing the slow requests real shoppers hit.
  • Never deciding what the page shows when a service it depends on is down.
  • Insisting on a technology (“just add a queue”) before explaining the need it should meet.
  • Drawing boxes and arrows before agreeing on what the feature must do.

Try this week

Pick one feature you use or own.

  1. Sketch its boxes: client, servers, data, and any other services it calls.
  2. For each piece of information on the screen, write how fresh it must be.
  3. Ask an engineer what the page shows when its slowest dependency fails.
  4. Ask whether the team has a target for availability or speed, and how it’s measured.

Copy this worksheet: talk through a design

FEATURE:
WHO USES IT, ON WHAT DEVICES:

1. REQUIREMENTS
   What it must do:
   How fast (usual, and slowest acceptable):
   How fresh must each piece of data be:
   Availability target, and what shoppers see if it fails:

2. SCALE (round numbers)
   Users per day:          Requests per second, average:
   Peak (sale, holiday):   Data stored:

3. COMPONENTS
   Client | Servers | Database | Cache | Queue | Other services (APIs)

4. DATA FLOW
   One request, start to finish:

5. BOTTLENECKS
   What breaks first at peak:
   Which failure hurts users most:
   Hard or soft dependency? Fallback:

6. TRADE-OFFS
   We're trading ___ for ___, because ___.

QUESTIONS FOR ENGINEERING:
   What does it return when it fails?
   What's slow at the 95th and 99th percentile?
   What would it take to cache this, and for how long?

Questions people ask

Do product managers need to know system design?

Enough to discuss trade-offs with engineers, not to design systems yourself. Know what clients, servers, APIs, databases, caches, and queues are for, and bring clear requirements: how many users, how fast, how fresh, and what happens when something fails.

What is an API, in simple terms?

A set of rules that lets one piece of software ask another for something: send this, get that back. MDN Web Docs describes it as a simple contract between the program offering it and the software using it.

What’s the difference between latency and throughput?

Latency is how long one request takes to get an answer. Throughput is how many requests a system handles in a period, often measured in requests per second. A system can handle many requests and still be slow for each one.

What does 99.9% availability mean?

That the service works as agreed 99.9% of the time. Over a year, that allows at most about 8 hours 45 minutes of downtime, according to the AWS Well-Architected Framework.

What’s the difference between horizontal and vertical scaling?

Vertical scaling makes one server bigger. Horizontal scaling adds more servers that share the work, usually behind a load balancer.

How do I answer a system design question in a product manager interview?

Clarify the requirements first, estimate the scale with round numbers, sketch the main components, walk one request through them, find the bottleneck, and name the trade-offs. Focus on the user’s needs and the reason behind each choice, more than on specific technologies.

Sources and further reading

All lessons

Keep going

Up next: how top companies
build products.

You can talk through a design with your engineers now. Next, see how Amazon, Google, and Spotify describe their own ways of building products, and what you can borrow from each.

Got a question this lesson didn’t answer? Email me. I read every note.

Three practices, each for a different moment. Before you build: Amazon, write the press release and FAQ first, to decide whether to build it. While you design: Google, walk the critical user journeys and measure with HEART. As you ship: Spotify, roll out to a few users first, test, and keep tweaking. before you build AmazonWrite the press release andFAQ first: should we build it? while you design GoogleWalk the critical user journeys;measure with HEART as you ship SpotifyRoll out to a few users first,test, and keep tweaking