# Availability and the nines

> What 99.9% and 99.99% mean in minutes of downtime, and how serial dependencies multiply.

Concept · Requirements & scale · https://levelcode.org/concepts/availability-and-nines

Availability is the fraction of time (or of requests) a system works. It's quoted in "nines", and each extra nine allows ten times less downtime.

| Availability | Downtime per year | Per month (30 days) |
|---|---|---|
| 99% | 3.65 days | 7.2 hours |
| 99.9% | 8.8 hours | 43 minutes |
| 99.95% | 4.4 hours | 22 minutes |
| 99.99% | 53 minutes | 4.3 minutes |
| 99.999% | 5.3 minutes | 26 seconds |

## Dependencies multiply

If a request needs services A **and** B, and each is 99.9% available, the request succeeds only when both do:

```text
0.999 × 0.999 = 0.998 → 99.8%
```

Ten serial dependencies at 99.9% give about 99.0%. Your availability can't exceed that of your least available hard dependency, and each additional one lowers it.

## Redundancy adds nines

If either of two independent replicas can serve a request, it fails only when both are down:

```text
1 − (0.001 × 0.001) = 0.999999
```

In practice failures aren't independent — replicas share a region, a deploy pipeline, a configuration bug — so real gains are smaller. Spreading replicas across zones and regions, and deploying changes gradually, is what makes the independence assumption closer to true.

## Practical consequences

- Make optional dependencies optional in code: a failed recommendations call shouldn't fail the page ([graceful degradation](https://levelcode.org/concepts/graceful-degradation)).
- Planned maintenance counts against availability unless it's invisible to users.
- 99.99% and above usually requires automated failover, because no human can respond, diagnose and fix within four minutes a month.

See [SLIs, SLOs and error budgets](https://levelcode.org/concepts/sli-slo-sla) for how teams set and spend availability targets.
