System Design Fundamentals
Vote

0% completed

Fault Tolerance vs. High Availability

Fault Tolerance

High Availability

The Five Differences

Both terms promise that a system keeps working. They promise different things, and the difference is measured in seconds.

Fault tolerance is a system's ability to continue operating without interruption when one or more of its components fail.

High availability is a system's ability to remain operational and accessible for a very high percentage of the time, keeping downtime as small as possible.

One says the user never notices. The other says the user rarely notices.

Fault Tolerance

Fault-tolerant systems are built to handle hardware, software and network failures seamlessly.

Redundancy is built into components, servers, networks and storage, so there is no single point of failure.

Automatic failover switches to a redundant or standby component the moment one fails.

No data loss. Nothing is lost when a failure occurs.

Cost. It is generally more expensive, because the redundant components have to exist and be kept in step.

It is used where downtime has severe consequences: critical applications in finance, healthcare and aviation.

High Availability

Uptime guarantee. The design targets a level of operational uptime, often expressed in "nines", such as 99.999 percent availability.

Load balancing and redundancy. It is achieved through load balancing, redundant systems and clustering.

Rapid recovery. The focus is on restoring service quickly after a failure. A brief disruption is acceptable.

Cost-effectiveness. It balances cost against the level of availability actually needed.

It is used for online services, e-commerce platforms and enterprise applications, where availability drives customer satisfaction and business continuity.

Under fault tolerance the failure is absorbed and the user sees nothing, while under high availability there is a brief interruption before service is restored
Under fault tolerance the failure is absorbed and the user sees nothing, while under high availability there is a brief interruption before service is restored

The Five Differences

Objective. Fault tolerance aims for continuous operation, with the failure never becoming noticeable to the user. High availability aims for the system being operational over a period, with minimal downtime, and focuses on recovering quickly.

Approach. Fault tolerance uses redundancy and automatic failover. High availability prevents downtime through redundant resources and rapid recovery.

Downtime. Fault tolerance allows none, even during a failure. High availability allows minimal downtime, and brief interruptions are acceptable.

Cost and complexity. Fault tolerance is more expensive and more complex, because it needs exact replicas and seamless failover. High availability is more cost-effective, balancing availability against what it costs.

Data integrity. Fault tolerance maintains data integrity even during failures. High availability prioritizes uptime, and minimal data loss is possible in some failure conditions.

Fault toleranceHigh availability
Downtime during a failureNoneBrief, and acceptable
Data lossNonePossible, in some conditions
MechanismRedundancy and automatic failoverLoad balancing, redundancy, fast recovery
CostHigherBalanced against the target
Typical useFinance, healthcare, aviationOnline services, e-commerce, enterprise apps

Read the first two rows. Everything else follows from them. Fault tolerance buys "no downtime and no data loss" and pays for it in money and complexity. High availability accepts a brief interruption and spends the savings elsewhere.

Favour fault tolerance when the consequence of downtime is severe, which is why it belongs in critical systems like finance, healthcare and aviation. Favour high availability when a few seconds of interruption is survivable and cost matters.

💡 A useful thing to say out loud is that these are not tiers of the same thing. They are different promises. "Payments are fault tolerant, the recommendations service is highly available" is a sentence that shows you can price resilience per component instead of buying the most expensive option everywhere.

Key takeaway: Fault tolerance means continuing to operate without interruption when components fail, using redundancy and automatic failover, with no downtime and no data loss, at higher cost and complexity. High availability means staying operational and accessible for a very high percentage of the time, using load balancing, redundancy and rapid recovery, accepting brief interruptions and possible minimal data loss in exchange for being more cost-effective.

That closes the chapter. Next is a Flashcards Review to lock in the definitions, then a Chapter Assessment.

Kartik Kumar

Kartik Kumar

· 3 years ago

In conclusion, I believe we can say that 100% availability is fault tolerance.Cmiiw

Show 2 replies

On This Page

Fault Tolerance

High Availability

The Five Differences