System Design Foundations
Availability & SLAs
Availability is measured in "nines"; SLIs (what you measure) roll up into SLOs (your internal target) and SLAs (the external, often contractual, promise) — and every dependency in a chain multiplies the total.
- Availability = uptime ÷ total time. "Three nines" (99.9%) allows ~8.7 hours of downtime per year; "five nines" (99.999%) allows ~5 minutes
- SLI (Service Level Indicator): a measured metric, e.g. successful-request ratio. SLO (Objective): the internal target for that SLI. SLA (Agreement): the external, often penalty-backed promise — usually looser than the SLO to leave margin
- An error budget is 1 − SLO: the amount of unreliability you are allowed to spend; once exhausted, many orgs pause feature launches in favor of reliability work
- Availability composes multiplicatively across a dependency chain: three services each at 99.9% give a combined 0.999³ ≈ 99.7%, not 99.9%
- Redundancy (N+1 capacity, active-active regions) is what actually buys higher availability — there is no amount of "trying harder" that gets a single instance to five nines
| Availability | Downtime / year | Downtime / month |
|---|---|---|
| 99% (two nines) | ~3.65 days | ~7.3 hours |
| 99.9% (three nines) | ~8.76 hours | ~43.8 minutes |
| 99.99% (four nines) | ~52.6 minutes | ~4.4 minutes |
| 99.999% (five nines) | ~5.3 minutes | ~26 seconds |