Learn
Lesson · Availability and Failure · Composing availability

Parallel: Redundancy

If a request needs any one of several independent paths, it fails only when all of them fail, so A = 1 − ∏(1 − Aᵢ): two 99% paths give 99.99%. That formula assumes the switch between paths is instantaneous, which it never is. Charging the failover time against the result is usually a larger correction than anything a further replica would buy.

A = 1 − ∏(1 − Aᵢ) any one path serves; all must fail to fail two paths at 99% → P(both down) = 1/10 000 → 99.99% three paths at 99% → P(all down) = 1/10⁶ → 99.9999% 12 failovers a year at 30 s = 6 min a year, which the formula omits
Redundancy, and the bill the formula does not print

Core ideas

What this lesson establishes

The complement turns an AND into an OR, and then reality adds a term that no amount of redundancy removes.

1

Redundancy is an AND of failures

A set of paths serving the same request is up unless every one of them is down. Under independence P(all down) = ∏(1 − Aᵢ), so A = 1 − ∏(1 − Aᵢ). Two paths at 99% fail together with probability 1/10 000 and the pair is 99.99%; a third path makes it 1/10⁶ and 99.9999%. Each replica multiplies the unavailability by the next one's.

2

Every replica is a decade, while independence holds

In series, each component divides the availability; in parallel, each replica multiplies the unavailability by a number well below one. That is why redundancy looks like such a good deal on paper — four paths at 99% are eight nines — and why the paper number is almost never the one a system achieves.

3

The switch is not free, and it does not get cheaper

Detecting the failure, agreeing on it and cutting over takes seconds, and those seconds are downtime the formula never mentions. Twelve failovers a year at thirty seconds is six minutes a year, flat. At two paths that is a tenth of the ideal outage; at four paths it is essentially all of it, and the fifth replica buys nothing measurable.

The material

The parallel formula, and the term it leaves out

Why the complement is the right way to compute an OR, what each replica is worth, and where the returns actually stop.

Definition · Parallel availability

Components are in parallel for a request when any one of them can serve it. If they fail independently, the whole is unavailable only when all are, so 1 − A = ∏ᵢ (1 − Aᵢ) and A = 1 − ∏ᵢ (1 − Aᵢ). Computing the complement is not a trick: it converts an OR over many events, which has inclusion-exclusion terms, into an AND, which does not.

each path 99/100, so 1 − Aᵢ = 1/100 n = 1 P(all down) = 1/100 A = 99% n = 2 P(all down) = 1/10 000 A = 99.99% n = 3 P(all down) = 1/10⁶ A = 99.9999% n = 4 P(all down) = 1/10⁸ A = 99.999999% ideal downtime a year n = 2 52 min 33.60 s n = 3 31.54 s n = 4 0.32 s

Two nines plus two nines is four nines, in parallel — and it is worth being precise about why, because the same reader who adds nines here will add them in series, where the claim is false in the other direction. In parallel the unavailabilities multiply, and 10⁻² × 10⁻² is 10⁻⁴. In series the unavailabilities add.

Charging for the failover

The formula describes a system that notices a failure instantly and switches with no loss. Real cutovers take a health check, a timeout, a decision and a reconnection, and every second of that is a second the request did not get served. The correction is arithmetic: failover seconds × events per period ÷ period, subtracted.

charge = (failover × events) / period = (30 s × 12) / 31 536 000 s = 360/31 536 000 = 1/87 600 n = 2 ideal 99.990000% charged 1/87 600 real 99.988858% ideal 52 min 33.60 s a year real 58 min 33.60 s a year

Six minutes a year, and it does not shrink when a replica is added, because it is not a property of the replicas — it is a property of the switching. That is what makes it dominate so quickly.

Example · Where the replicas stop paying

With a thirty-second failover happening twelve times a year: two paths at 99% give a real 99.988858%, three give 99.998758%, four give 99.998857%. The ideal figures over the same range go from four nines to eight; the real ones have essentially stopped by three, because the ideal outage has fallen below the six minutes of switching and the fourth replica is improving a term that is no longer the largest one.

What else the formula is quietly assuming

Three things, and each is a separate way to be disappointed. That the paths fail independently, which is the next lesson and the largest of the three. That any single path can carry the whole load — if two paths each run at 60% of capacity, losing one does not leave a working system, it leaves an overloaded one. And that the redundancy is exercised: a standby that has never served a request is a component with an unmeasured availability, and it is not 0.99.

Example · A replica that is in series, not in parallel

A cache is added in front of a database to make reads faster, and the client is written so that a cache error fails the request. The reader calls it redundancy because there are now two data stores. The request needs both, so it is a series chain: 0.999 × 0.999 = 99.80010%, below the database alone. Adding a component raises availability only when the request can succeed without it, and that is a property of the client's error handling rather than of the topology drawing.

Interactive

Parallel: redundancy, and its bill

Two 99% paths give 99.99% — if they are independent and the switch is free

Redundancy multiplies up1 − ∏(1 − Aᵢ), and then the failover bill
a path is upall paths down togetherfailover time

Method

Sizing redundancy

Compute the ideal, then subtract what the mechanism costs, then check the three assumptions. The subtraction is usually the biggest number on the page.

1

Confirm the paths are genuinely alternatives

A request must be able to succeed using any one of them alone. If the client fails the request when one errors, or if one path holds data the other does not, they are in series and the formula for this lesson is the wrong one.

2

Multiply the unavailabilities, then complement

P(all down) = ∏(1 − Aᵢ) and A = 1 − P(all down). Two paths at 1/100 give 1/10 000. Working in unavailabilities keeps the exact digits: 1/10 000 is legible where 0.9999 is nearly 1.

3

Charge the failover time against the result

failover seconds × events per period ÷ period, subtracted from the ideal. Estimate the event rate from how often the paths actually fail rather than from how often you plan to test, and include every cutover, including the ones that turned out to be unnecessary.

4

Compare the two terms and stop where they cross

If the failover charge already exceeds the ideal unavailability, another replica cannot help: it shrinks a term that is no longer the largest. Spend the effort on detecting failures faster or switching more cleanly instead.

Parallel paths and their costs

Score 0 / 0

Two regions at 99.9%, with a ninety-second regional failover

Regional redundancy with a slow cutover, which is the common case: the paths are very good and the switching is not.

each region A = 999/1000, so 1 − Aᵢ = 1/1000 ideal P(both down) = (1/1000)² = 1/1 000 000 A = 999 999/1 000 000 = 99.9999% six nines ideal downtime a year = 31.54 s the switching 4 failovers a year × 90 s = 360 s = 6 min a year charge = 360/31 536 000 = 1/87 600 = 0.0000114 real A = 0.999999 − 0.0000114 = 0.9999876 = 99.998758% four nines real downtime a year = 31.54 s + 6 min = 6 min 31.54 s the failover is 92% of the total outage

Six nines on the slide, four in the year, and twelve times as many seconds of outage as the formula promised — all of it spent switching. The direction this points is clear: cutting the cutover from ninety seconds to ten is worth far more here than a third region, which would improve the 31.54 seconds and leave the six minutes alone.

For a faded rehearsal, keep two regions and suppose the team can either add a third region or halve the failover to 45 seconds. The supplied first move is to write the two terms separately — the ideal unavailability and the charge — and see which one each option touches. Compute both resulting availabilities in the lab, then say which you would buy and what you assumed about the regions failing independently.

Common mistakes

1
Taking the ideal figure into a plan1 − ∏(1 − Aᵢ) describes instantaneous, lossless switching. Four paths at 99% compute to eight nines and deliver, with a thirty-second failover twelve times a year, about four. Quote the charged figure, and quote the charge separately so that everyone can see which term is which.
2
Calling a required component redundantTwo data stores are only redundancy if a read succeeds when either one fails. If the client errors on a cache miss-with-error, the cache is a new serial dependency and it has lowered availability: 0.999 × 0.999 = 99.80010%. Whether a component is in series or in parallel is decided by the error handling, not by the topology.
3
Adding replicas past the point where the switching dominatesOnce the failover charge is larger than the ideal unavailability, the next replica improves a term that no longer matters. At two paths of 99% with six minutes of annual switching the ideal outage is 52 minutes and the replica is worth having; at four paths the ideal outage is under a second and the same replica is worth nothing at all.

Check your understanding

✓
Finish when you quote the charged availability by default and treat the ideal one as an upper bound.

You should be able to compute 1 − ∏(1 − Aᵢ) exactly, convert a failover policy into seconds a year, subtract it, identify the replica count at which the switching dominates, and say which components in a drawing are genuinely parallel for a given request.

Note: Full redundancy is one end of a spectrum. Most real systems do not need every replica and do not need only one — they need a quorum, some k out of n, and both the series and the parallel formulas turn out to be special cases of the same binomial sum. “k-of-n” computes it, and closes on the case where adding replicas makes a system less available rather than more.

Kept in this browser only, for you. Nothing is sent anywhere and nothing checks it. Carry it to another device.

Feedback and recommendations

Something to change about this lesson? Write it down, tick it off when it is handled, and export the list when you want to act on it. Kept in this browser only: nothing is sent anywhere, and nobody is notified.

No recommendations yet for this lesson.