Skip to content

// System Design · 02

Availability

A request arrivesleads toSystem responds

The percentage of time a system is actually usable.

How it fits together

Availability structure«client»CallerLoad balancerSLO: 99.9% good / totalhealth check every 5sApp instance Ahealth: 200App instance Bhealth: 5031 request2 routed3 pulled out
uses / callsfails / error path· numbered steps replay in order
  • Caller uses / calls Load balancer (1 request)
  • Load balancer uses / calls App instance A (2 routed)
  • Load balancer fails / error path App instance B (3 pulled out)

Spot it

  • Deploys cause visible downtime
  • One host restart takes the site down
  • Nobody can say what "up" means in numbers

It costs

Each extra nine costs roughly ten times more in redundancy and process.

Go deeperThe full explanation and what to ask for · 1 min readExpand

99.9% allows about 8.8 hours of downtime a year, 99.99% about 53 minutes, 99.999% about 5 minutes.

Availability multiplies along a chain: two dependencies at 99.9% each give you at most 99.8%. Redundancy is what lets the whole beat its parts.

An SLI is what you measure, an SLO is the target you set, an SLA is the promise with consequences. The gap between SLO and 100% is the error budget you can spend on change.

Ask for it

  • SLA / SLO / SLI
  • nines
  • error budget
  • health checks
  • failover

Define an availability SLO of 99.9% for this API, measured as successful responses over total requests, and add health checks plus zero-downtime rolling deploys.