High Availability

N+1, N+2, the redundant-component formula, and why a single 99.9% box stays a single 99.9% box.

Overview

Redundancy buys the nines

High availability is not "buy a more reliable box." A single 99.9% server is a 99.9% server. The only way past per-component reliability is redundancy plus automated failover, and the math is unforgiving.

The formulas (AWS Well-Architected Reliability Pillar)

  • Hard dependencies, in series — Availabilities multiply — Three independent 99.99% components: 99.99³ is about 99.97%
  • Redundant components, in parallel — Avail = 1 − failure_rate^N — Two 99.9% replicas: 1 − 0.001² = 99.9999%

> [!IMPORTANT] The duplication is what buys the 9s. Every hard dependency in series takes some back.

Redundancy levels

  • N — Minimum replicas for normal load — Nothing: one failure means capacity loss
  • N+1 — One spare; industry baseline — One replica failure with no capacity loss
  • N+2 — Two spares; required for tight SLOs — A failure during a maintenance window (one out for upgrade, another fails)

Independent failure domains

The SRE Book's Ch 23 caution: redundancy works only if components have independent failure domains.

  • Same rack — Power, network, cooling, noisy neighbors
  • Across availability zones — Survives a single-AZ outage
  • Across regions and providers — Produces the math you actually want

> [!WARNING] Two replicas in the same rack are not really independent. The parallel formula only holds when failures are independent.

Key concepts

Hard-dependency math
Components in series: Avail = ∏ Avail_i. Three 99.99% deps → 99.97% effective. Series chains REDUCE availability.
Redundant-component math
Components in parallel: Avail = 1 − failure_rate^N. Two 99.9% replicas → 99.9999%. Parallel INCREASES availability — this is why redundancy works.
N / N+1 / N+2
N = minimum replicas. N+1 = one spare (tolerates one failure). N+2 = two spares (tolerates failure during maintenance). Industry baseline is N+1; tight SLOs need N+2.
Independent failure domain
Two redundant components must not share power, network, cooling, software bugs, or operator error. Two replicas in one rack are NOT independent.
AWS availability table (canonical)
99% = 3d 15h/yr · 99.9% = 8h 45m · 99.95% = 4h 22m · 99.99% = 52 min · 99.999% = 5 min downtime per year.

When to use it

  • Designing for an SLO above ~99.95% — single-machine reliability won't reach it
  • Writing the capacity-planning doc — N+1 is the floor, N+2 for any meaningful SLO
  • Justifying multi-AZ / multi-region cost to product or finance
  • Reviewing an architecture proposal — does the redundancy actually have independent failure domains?

Interview questions

  • A service has three independent dependencies, each 99.99% available. What's its effective availability?
  • Why does N+1 redundancy not always give you "two 9s more"?
  • When do you actually need N+2 instead of N+1?
  • Recite the AWS availability-to-downtime table.

Sign up free to read the full topic

More SRE topics

Start free on Cariara · Coding problems · System design studio