Availability in numbers
Calculating compound availability for series vs parallel paths and SLA downtime budgets.
What you will learn
- Measure availability by time and by successful requests.
- Combine tiers in series and instances in parallel.
- Turn a number of nines into a downtime budget.
The mathematical laws of availability
Availability is usually quantified as the share of time a service is up:
For a service spread across many machines and regions, "up" is rarely all-or-nothing, so Google's SRE practice measures request-based availability instead: the proportion of requests that succeed over a rolling window (for example, one day).
The formulas below combine components. They assume components fail independently; shared power, network, software bugs or bad deploys break that assumption, so real redundancy gains are smaller than the arithmetic suggests.
1. Components in series (multiplicative degradation)
If a system requires distinct tiers in sequence to process a request (e.g. DNS Load Balancer App Server Database), the total availability is the product of all tier availabilities:
Critical insight: Whenever every component is below , the compound availability of sequential components is lower than that of the least available component. If each of 4 tiers has availability:
2. Components in parallel (redundancy amplification)
When identical redundant instances run in parallel such that any one healthy instance satisfies demand, the tier fails only if all instances fail simultaneously:
If a single instance has ():
The "Nines" downtime budget reference
- 99% ("Two nines"): 3.65 days / year • 7.30 hours / month • 14.40 minutes / day
- 99.9% ("Three nines"): 8.77 hours / year • 43.83 minutes / month • 1.44 minutes / day
- 99.99% ("Four nines"): 52.60 minutes / year • 4.38 minutes / month • 8.64 seconds / day
- 99.999% ("Five nines"): 5.26 minutes / year • 26.30 seconds / month • 0.86 seconds / day
For scale, Amazon EC2's service level agreement (last updated May 2022) commits to monthly uptime for a region and for a single instance: one machine is far less available than a well-spread fleet.
Availability in series and in parallel
- Users: 1 × Clients & Users
- ALB (2x Parallel): 2 × Application Load Balancer
- App (4x Parallel): 4 × App Compute Server
- DB (2x HA Pair): 2 × Primary Relational DB
- Users sends requests to ALB (2x Parallel)
- ALB (2x Parallel) sends requests to App (4x Parallel)
- App (4x Parallel) sends requests to DB (2x HA Pair)
Key takeaways
- Tiers in series multiply: four tiers at 99.9% give 99.6%, lower than any one of them.
- Instances in parallel fail only together: , so two instances at 99.9% give six nines.
- The arithmetic assumes independent failures; shared power, networks, bugs and deploys make real gains smaller.
- Each extra nine cuts the downtime budget tenfold: 99.9% allows about 8.8 hours a year, 99.99% about 53 minutes.
Sources
- System Design Primer: Availability in numbers
- Google SRE book: Embracing Risk (measuring service risk)
- Amazon Compute Service Level Agreement (EC2)
Adapted from The System Design Primer by Donne Martin, licensed under CC BY 4.0. Changes were made.