High-Level Design Workshop
Retrieval Prompts
- Name the five required annotations on any box diagram (hint: API surface, arrow types, stores, boundaries, box labels).
- What goes on the left edge of the diagram, and why?
- Name four storage families and one workload each is the best fit for.
- State the four questions the storage-choice template answers, in order.
- Name the five-line justification template for any cache/CDN/LB you add to the diagram.
Compare and Distinguish
Separate cleanly:
- wide-column store vs document store vs KV store
- cache-aside vs write-through vs write-back vs refresh-ahead
- L4 load balancer vs L7 load balancer
- CDN vs reverse proxy vs application cache
- polyglot persistence vs "one database for everything"
Produce a one-sentence distinction for each pair that a reviewer would accept.
Common Mistake Check
Identify the flaw:
- "We will use MongoDB because it's flexible." (What is missing from this sentence?)
- "Every service gets its own Redis cache." (When is this right; when is it wrong?)
- "Our database is the primary; we'll add a cache later." (What premature optimization is baked in, and which genuine debt is not?)
- "This endpoint has strict consistency, so we cache it." (What specifically is wrong?)
- "We put a CDN in front of everything." (What danger is lurking here?)
Mini Application
Pick two prompts from your framing lab (practice 1). For each, produce in under 15 minutes:
- A box-and-arrow diagram with 6-12 labeled boxes, API surface on the left edge, and arrow types marked.
- A seven-line storage sketch per primary workload (at least 2 workloads per design).
- A five-line justification for every cache, CDN, and load balancer on the diagram.
Pin each diagram for later use in the Stress Test Clinic (practice 3).
Cross-Design Comparison
After producing at least three diagrams across different problem types (read-heavy, write-heavy, real-time, strongly-consistent), build a small comparison table:
| Design | Primary store | Hot cache | Read vs write emphasis | Partitioning key | One hard part |
Use this to notice your own patterns. If every design ends up with the same storage shape, you are templating rather than designing.
Anti-Pattern Hunt
In one of your existing diagrams, identify and fix at least one of:
- A secondary index you cannot name a query for.
- A cache that serves data the application has not established can go stale.
- A load balancer with sticky sessions but no clear reason for the stickiness.
- A stateful service that has no failover story.
- A shared Redis cluster serving unrelated teams/workloads (a blast-radius smell).
Evidence Check
This page is complete only if:
- you have two diagrams, each with 6-12 labeled boxes, API surface column, arrow-type marks, and region/trust-zone boundaries
- you have a seven-line storage sketch for every primary workload across the two designs
- you have a five-line cache/CDN/LB justification for every such component you drew
- you can point at any box and say what it owns and why it is there in under 15 seconds
- you have identified and fixed at least one anti-pattern in your own work