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
Downtime budget by "nines"
AvailabilityDowntime / yearDowntime / 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
Availability multiplies across a request chain
Combined availability ≈ 0.9995 × 0.999 × 0.9999 ≈ 99.84% — lower than any single link
Sources
  • Site Reliability Engineering: How Google Runs Production SystemsCh. 3-4 — Embracing Risk; Service Level Objectives
  • System Design Interview – An Insider's GuideCh. 1 — Availability