What Is System Design? Reliability, Availability, Scalability & Maintainability
The discipline of deciding how services, databases, and the connections between them hold up once real traffic shows up.
Beginner
| Goal | What it means | What breaks without it |
|---|---|---|
| Reliability | The system keeps producing correct results even when parts of it fail. | A payment gets charged twice because a retry wasn't idempotent. |
| Availability | The system is reachable and responsive when a client asks it something. | A checkout page returns errors during a traffic spike instead of degrading gracefully. |
| Scalability | The system absorbs more load — more users, more data — without a redesign. | A database that was fine at 10K rows falls over at 10M. |
| Maintainability | Engineers can understand, fix, and extend the system without fear. | A one-line feature request takes three weeks because nobody trusts the codebase. |
MTBF = (Total Elapsed Time − Total Downtime) / Number of Failures
MTTR = Total Repair Time / Number of Repairs
| Approach | How it works | Ceiling |
|---|---|---|
| Vertical scaling ("scaling up") | Add more CPU, RAM, or faster disks to the existing machine. | Bounded by the biggest single machine money can buy — and that machine gets disproportionately expensive. |
| Horizontal scaling ("scaling out") | Add more machines and spread the load across them. | In principle unbounded, but it requires the software to be written so that state can be split or replicated across machines. |