1. Key Definitions

2. Availability Targets

Cost vs Availability Each additional nine roughly 10x the cost. Going from 99.9% to 99.99% is much more expensive than 99% to 99.9%. Design for the availability your BUSINESS requires, not the maximum possible. Over-engineering availability wastes money.

3. HA Building Blocks on AWS


Multi-AZ Architecture

Multi-AZ High Availability Pattern:

         Region (us-east-1)
    ┌────────────┬────────────┐
    | AZ-a         | AZ-b         |
    |              |              |
    | EC2 (ASG)    | EC2 (ASG)    |
    | RDS Primary  | RDS Standby  |
    | ElastiCache  | ElastiCache  |
    |   Primary    |   Replica    |
    └──────┬─────┴──────┬─────┘
           |              |
      ALB (cross-AZ load balancing)
           |
      Route 53 (DNS)

HA Patterns by Service

4. HA Design Principles


  1. Eliminate single points of failure: Every component should have a redundant pair or be replaceable automatically.
  2. Use multiple AZs: Minimum 2 AZs. Critical systems use 3. Each AZ is an independent data center cluster.
  3. Use managed services: RDS Multi-AZ, Aurora, DynamoDB, Lambda, S3 — AWS handles HA for you.
  4. Design for failure: Assume anything can fail at any time. Test failure scenarios regularly (chaos engineering).
  5. Decouple components: Use SQS, SNS, and EventBridge between services. If one fails, others continue.
  6. Use health checks: ELB health checks, Route 53 health checks, ASG health checks — detect and replace failures.
  7. Automate recovery: Auto Scaling replaces instances. RDS auto-failover. CloudWatch Alarms trigger recovery.
  8. Stateless design: Store state externally (DynamoDB, ElastiCache, S3). Any instance can handle any request.
Important Warning Multi-AZ ≠ Multi-Region. Multi-AZ protects against a single AZ failure within a Region. Multi-Region protects against an entire Region outage. Most applications only need Multi-AZ for HA. Multi-Region is for DR or global users.
Exam Tip HA: "Eliminate single points of failure" = Multi-AZ. "Auto-replace failed instances" = ASG. "Auto-failover database" = RDS Multi-AZ or Aurora. "Stateless" = store state in DynamoDB/ElastiCache/S3. "Decouple" = SQS/SNS/EventBridge. "Detect failure" = health checks (ELB, Route 53). Most AWS managed services are HA by default (Lambda, DynamoDB, S3).