HA vs Fault Tolerance: Definitions and Trade-offs
Clarify the distinction between high availability (minimising downtime) and fault tolerance (zero-downtime through redundancy), and see how cost scales with each level.
HA vs Fault Tolerance: Definitions and Trade-offs is a free AWS Solutions Architect lesson on CoddyKit — lesson 1 of 4. You can read the complete lesson below for free — then practise it hands-on in the browser with a built-in code editor and a 24/7 AI tutor. It is part of the AWS Solutions Architect learning path, one of 4 lessons in the course, and your progress syncs across the web and the CoddyKit app.
HA vs Fault Tolerance Overview
High Availability (HA) and Fault Tolerance (FT) are two distinct reliability goals that architects often confuse. High availability means a system experiences minimal downtime — it can tolerate failures but may have brief interruptions during recovery. Fault tolerance means a system continues operating without any interruption even when components fail, by having fully redundant paths that take over instantly.
Defining Availability Percentages
Availability is measured as a percentage of uptime over a year. 99.9% availability (three nines) means roughly 8.7 hours of downtime per year, while 99.99% (four nines) allows only 52.6 minutes. 99.999% (five nines) allows just 5.26 minutes. Each additional nine typically requires more redundancy, automation, and cost. The SAA-C03 exam often asks you to identify which architecture meets a given availability target.
# Availability calculations
# 99.9% → 8.76 hours/year downtime
# 99.99% → 52.6 minutes/year downtime
# 99.999% → 5.26 minutes/year downtime
# Formula: downtime = (1 - availability) * 8760 hoursWhat High Availability Looks Like
A highly available architecture tolerates the failure of one component by automatically detecting the failure and switching to a healthy replacement within seconds or minutes. Examples include RDS Multi-AZ (automatic failover to standby in a different AZ), Auto Scaling Groups replacing terminated instances, and Elastic Load Balancers routing away from unhealthy targets. There is a brief disruption, but the system recovers without manual intervention.
# RDS Multi-AZ failover: ~60-120 seconds downtime
# ASG replacement: ~1-3 minutes to launch new instance
# ELB unhealthy target removal: within health check intervalWhat Fault Tolerance Looks Like
A fault-tolerant architecture has active redundancy — multiple identical components serving requests simultaneously so that when one fails, the others absorb the load instantly with zero downtime. Examples include active-active ELB with multiple EC2 instances, DynamoDB Global Tables serving reads and writes in multiple regions simultaneously, and Aurora with multiple read replicas. Fault tolerance requires more resources running at all times.
Cost Trade-offs Between HA and FT
Fault tolerance is significantly more expensive than high availability because it requires fully provisioned redundant capacity at all times. A highly available RDS Multi-AZ instance doubles your database cost for a standby that only activates on failure. A fault-tolerant multi-region active-active Aurora deployment may cost four times as much but eliminates all downtime during regional failures. Architects must balance the cost of redundancy against the business cost of downtime.
# Cost tiers (approximate multipliers):
# Single AZ, no redundancy: 1x cost
# Multi-AZ (HA): 2x cost
# Multi-Region active-passive: 2-3x cost
# Multi-Region active-active (FT): 3-4x costRecovery Time Objective and HA
Recovery Time Objective (RTO) is the maximum acceptable time for a system to be unavailable. High availability architectures target low RTO — typically minutes — through automated failover. Fault-tolerant architectures target near-zero RTO. When designing for HA, you must choose services and configurations that guarantee recovery within your RTO budget. For example, RDS Multi-AZ provides roughly 60-120 second RTO, suitable for many HA requirements.
Single Points of Failure (SPOF)
A Single Point of Failure (SPOF) is any component whose failure causes the entire system to fail. Common SPOFs include a single EC2 instance with no ASG, a single-AZ RDS database, a single NAT gateway, or a single availability zone. Eliminating SPOFs is the first step toward both HA and FT. The SAA-C03 exam frequently tests your ability to identify and eliminate SPOFs in given architecture diagrams.
# Common SPOFs to eliminate:
# - Single EC2 instance → ASG + ALB
# - Single-AZ RDS → Multi-AZ RDS
# - Single NAT Gateway → NAT Gateway per AZ
# - Single AZ subnets → Subnets in 2+ AZs
# - Hardcoded IP in app → DNS + health checksStateful vs Stateless Services
Achieving HA or FT is much simpler for stateless services (like web servers or Lambda functions) because any instance can handle any request. Stateful services (databases, caches, file systems) are harder — you must synchronise state across replicas, handle replication lag, and ensure consistency during failover. AWS services like EFS (shared file system), ElastiCache with replication groups, and Aurora (shared storage) are designed to make stateful HA easier.
HA Design Patterns on AWS
Common HA patterns on AWS include: 1) Multi-AZ Load Balancing — distribute EC2 instances across AZs behind an ALB. 2) Read Replicas — offload read traffic, promote in DR. 3) S3 for stateless assets — S3 is inherently HA with 11 nines of durability. 4) Global Accelerator — static Anycast IPs that route to healthy endpoints across regions. Each pattern trades cost for a specific level of availability.
# ALB cross-zone load balancing example
aws elbv2 modify-load-balancer-attributes \
--load-balancer-arn <ALB-ARN> \
--attributes Key=load_balancing.cross_zone.enabled,Value=trueFT Design Patterns on AWS
Fault-tolerant patterns require active redundancy everywhere. Key FT patterns: DynamoDB is inherently fault-tolerant — it replicates data across three AZs with no failover required. S3 has built-in FT. Aurora Multi-Master (now Aurora Serverless v2 multi-writer) allows writes to multiple AZs simultaneously. Kinesis stores data across multiple AZs by default. Choosing managed services with built-in FT is the most cost-effective path to zero-downtime architectures.
Testing Your HA and FT Assumptions
Designing for HA or FT is only as good as your testing. AWS recommends using AWS Fault Injection Simulator (FIS) to run controlled experiments that terminate instances, throttle APIs, or inject network failures. You should verify that failover actually completes within your RTO, that data is not lost beyond your RPO, and that alarms fire correctly. Regular game days and chaos engineering exercises reveal gaps in your resilience assumptions before production incidents do.
# AWS FIS experiment to terminate EC2 instances
aws fis create-experiment-template \
--description 'Terminate 30% of ASG instances' \
--targets '{"instanceTargets":{"resourceType":"aws:ec2:instance","selectionMode":"PERCENT(30)"}}' \
--actions '{"terminateInstances":{"actionId":"aws:ec2:terminate-instances","targets":{"Instances":"instanceTargets"}}}'Quick Check
Test your understanding of AWS Solutions Architect (SAA-C03) concepts from this lesson.
Lesson Recap
In this lesson you learned: High Availability minimises downtime through automated recovery (minutes RTO), Fault Tolerance eliminates downtime through active redundancy (zero RTO), and cost scales significantly with each level of resilience. Eliminating Single Points of Failure is the foundation of both approaches. Next up we explore multi-AZ patterns for stateful services.
Frequently asked questions
Is the “HA vs Fault Tolerance: Definitions and Trade-offs” lesson free?
Yes — the full text of “HA vs Fault Tolerance: Definitions and Trade-offs” is free to read here on the web, and the AWS Solutions Architect course includes 4 lessons in total. To practise it interactively (a built-in code editor and a 24/7 AI tutor) and unlock the rest of the AWS Solutions Architect course, upgrade to CoddyKit PRO.
What will I learn in “HA vs Fault Tolerance: Definitions and Trade-offs”?
Clarify the distinction between high availability (minimising downtime) and fault tolerance (zero-downtime through redundancy), and see how cost scales with each level. You practise AWS Solutions Architect with hands-on code you run directly in the browser, and a 24/7 AI tutor answers your questions as you work through the lesson.
Do I need any experience to start AWS Solutions Architect?
No prior experience is required. AWS Solutions Architect on CoddyKit is structured for beginners through advanced learners; this is — lesson 1 of 4, so you can start here or from the beginning and move at your own pace.
How long does the “HA vs Fault Tolerance: Definitions and Trade-offs” lesson take?
Most CoddyKit lessons take about 5–10 minutes. Each one is bite-sized and interactive, so you make steady progress and pick up exactly where you left off across the web and the app.
Can I write and run code in this AWS Solutions Architect lesson?
Yes. Every AWS Solutions Architect lesson includes a built-in code editor, so you write and run real code right in your browser and get instant AI feedback — no local setup required.
All lessons in this course
- HA vs Fault Tolerance: Definitions and Trade-offs
- Multi-AZ Patterns for Stateful Services
- Multi-Region Active-Active and Active-Passive
- Health Checks, Circuit Breakers, and Retry Logic