The component vocabulary
Before designing systems you need vocabulary — the standard components every architecture is assembled from. This lesson is a fast tour of the boxes you'll draw in every diagram, and what each one does.
The components
- Client — browser/mobile app; initiates requests.
- DNS — turns a domain into an IP; the first hop.
- Load balancer — spreads traffic across many identical servers (section 2).
- Application server — runs your business logic. Made stateless so any server can handle any request.
- Database — durable source of truth. SQL or NoSQL (section 3).
- Cache — fast in-memory store (Redis) for hot data, to spare the database (section 4).
- CDN — geographically distributed cache for static assets (section 2).
- Message queue — buffers work for asynchronous processing (Kafka, SQS; section 4).
- Object storage — cheap blob store for files/media (S3).
How they fit together
The canonical web architecture, request to response:
client → DNS → load balancer → app servers → cache → database
↓
queue → workers (async jobs)A read checks the cache first, falls back to the database. A write updates the database and often enqueues follow-up work (send email, update search index) to a queue processed by background workers — keeping the user's request fast.
The two scaling directions
Every component scales one of two ways: vertically (a bigger machine) or horizontally (more machines). Horizontal scaling — adding commodity servers behind a load balancer — is what makes systems handle internet scale, and it's why statelessness matters. Section 2 covers this in depth.
These ~9 components are the entire alphabet of system design. Every "design X" answer is just these boxes, arranged and connected to meet the requirements. Learn what each does and its trade-offs, and you can assemble any system. The next lesson adds the last foundational skill: estimating scale with quick math.