A 99.9% Reliable System Still Fails Eight Hours a Year

Written by Andrew Mills on 2026-06-15

“Three nines” has a comforting, polished sound to it. It suggests a system that is almost always there: dependable, professional, perhaps wearing a tiny hard hat and carrying a clipboard.

Then you do the arithmetic.

A service available 99.9% of the time may be unavailable for 0.1% of the time. Across a 365-day year, that is 8.76 hours. Call it eight hours if you are being conversational, or nearly nine if you are the person waiting for the system to come back at 2am.

Neither figure is automatically good or bad. It depends entirely on what has stopped, who needs it, and what happens while it is unavailable. But this is why availability percentages need translating into consequences before they are put on a sales slide in an unnecessarily confident shade of blue.

The arithmetic is simple. The implications are not.

There are 8,760 hours in a non-leap year. Multiply that by 0.001, the fraction represented by 0.1%, and you get 8.76 hours of permitted downtime.

The same calculation makes the difference between common service targets clearer:

  • 99% availability allows 87.6 hours a year, or roughly three and a half days.
  • 99.9% allows 8.76 hours a year.
  • 99.99% allows about 52.6 minutes a year.
  • 99.999% allows about 5.3 minutes a year.

Each extra nine is not a modest improvement. It is a serious engineering commitment. Moving from 99.9% to 99.99% means reducing allowable downtime by a factor of ten. The server does not become ten times more virtuous because somebody adds another digit to a contract. You need to identify and remove, isolate or recover from whole categories of failure.

That could mean redundant power, replicated databases, multiple network paths, automatic failover, tested backups, monitoring that detects failure before customers do, and people who can respond effectively when the carefully arranged machinery has a disagreement with reality.

Downtime does not arrive in tidy little portions

The most misleading thing about an annual figure is that it makes downtime sound evenly distributed. It rarely is.

Eight hours spread across a year as brief, planned maintenance windows may be tolerable for a back-office reporting tool. Eight hours in one outage during a busy trading period is something else entirely. Eight hours affecting a temperature-monitoring platform protecting stored medicines, for example, could mean lost evidence, missed alarms, manual checks and a great many unhappy people. Quite rightly too.

Availability also says nothing, by itself, about the shape of failure. A system may answer requests but return stale data. It may accept sensor readings but fail to deliver notifications. It may display a reassuring green dashboard while a queue quietly fills up behind the scenes, like luggage at an airport with a staffing problem.

For an IoT system, consider a gateway that can buffer readings when its internet connection drops. That is useful resilience, but it changes the question. Is the service available if readings are stored locally but the cloud cannot see them? Is an alarm acceptable if it arrives ten minutes late? The correct answer comes from the operational need, not from whichever definition produces the most attractive monthly report.

Reliability is more than an uptime percentage

People often use reliability and availability as though they were interchangeable. They are related, but they are not identical.

Availability is generally about whether a service is usable when required. Reliability is more concerned with whether it continues to perform correctly over time. A device that reboots every Tuesday at 3am might have impressive availability if it recovers in 30 seconds. It is still behaving suspiciously, rather like a smoke alarm that only chirps when guests are staying over.

A useful service target should therefore include more than a headline uptime number. It may specify:

  • which user journeys matter, such as submitting an order or receiving a critical alert;
  • the maximum acceptable response time;
  • how fresh displayed data must be;
  • whether planned maintenance is included in the calculation;
  • the period over which availability is measured;
  • what happens when a dependency fails.

This is where service level objectives, or SLOs, earn their keep. An SLO connects a measurable technical condition to what users genuinely need. Its companion, the error budget, is the amount of unreliability you have decided is tolerable over a period.

That word “decided” matters. Every system has an error budget, whether anyone has written one down or not. If you have not chosen it deliberately, your users will discover it for you. They tend to do this with admirable clarity and occasionally with capital letters.

Design around the failure you expect to have

A sensible design does not assume every component will work forever. It asks what happens when each one does not.

If a temperature probe disconnects, can the system distinguish a missing reading from a stable temperature? If a database is slow, does the application time out cleanly rather than piling up requests until everything falls over? If an alerting provider fails, is there a secondary route or an unmistakable indication that notification delivery is uncertain?

Redundancy helps, but only when failures are genuinely independent. Two power supplies connected to the same failed circuit are not resilience. They are an expensive way of being disappointed twice. The same applies to cloud services in one region, network links sharing a physical route, and backups stored in the same account that an attacker can access.

Recovery also needs practice. A backup that has never been restored is not a recovery plan. It is a hopeful collection of files with excellent self-esteem.

Choose the number after understanding the consequence

For some systems, 99.9% is entirely sensible. A small internal tool can survive a few hours of annual interruption if there is a manual alternative and the work is not time-critical. Chasing five nines there would be costly theatre.

For systems supporting safety, regulated records, urgent care, payments or a public service people cannot simply postpone, the conversation must be stricter. The target should reflect the harm created by delay or incorrect operation, including the burden placed on staff forced into manual workarounds.

The important question is not, “How many nines can we claim?” It is, “What can our users safely live without, for how long, and what will we do when that limit is reached?”

Once you put the percentage into hours, the discussion becomes kinder and more honest. It shifts from abstract confidence to the people who must cope when the screen freezes, the alert does not arrive, or the system chooses the worst possible Tuesday afternoon to develop a personality. That is where reliability begins: not with a number, but with respect for the consequences behind it.

Copyright © 2026 Andrew Mills, All Rights Reserved.