What is System Design?
System design is the process of defining the architecture, components, and data flow of a system to satisfy specified requirements. It bridges the gap between requirements and implementation.
Key Concepts
Scalability
The ability of a system to handle increased load by adding resources.
- Vertical scaling — bigger machine
- Horizontal scaling — more machines
Reliability
A reliable system continues to work correctly even when things go wrong (hardware faults, software bugs, human errors).
Availability
The percentage of time a system is operational. Measured as uptime: 99.9% = ~8.7 hours downtime/year.
Core Building Blocks
| Component | Purpose |
|---|---|
| Load Balancer | Distribute traffic across servers |
| Cache | Reduce latency, offload DB |
| Database | Persist data |
| Message Queue | Async communication |
| CDN | Serve static assets fast |
Next Steps
Once you understand these fundamentals, explore:
- CAP Theorem
- Consistent Hashing
- SQL vs NoSQL
- Rate Limiting