How it works
The explanation, with examples you can run.
Start from two numbers
- RTO (recovery time objective): how long the service may be unavailable.
- RPO (recovery point objective): how much recently written data may be lost.
A shop that can be down for a day and lose an hour of orders needs a very different design from a payment system with an RTO of minutes and an RPO of zero. Agree these first; they decide everything else.
Multi-AZ: the default
Spreading across zones within one Region handles instance failures, data centre problems and most zone-wide events, for modest cost and little complexity:
- Load balancer across at least two zones, targets in every one of them.
- Auto Scaling groups or ECS and EKS services spread across the same zones.
- RDS or Aurora with Multi-AZ, DynamoDB and S3 (already multi-zone).
- One NAT gateway per zone (or a regional NAT gateway), so a zone failure does not cut outbound access everywhere.
Static stability is what makes this hold up: run enough capacity that losing a zone still leaves the rest below their limits, so you do not depend on launching instances or changing configuration while the failure is happening.
Multi-Region: when the business needs it
A Regional outage is rare but real. Surviving it requires data in a second Region (cross-Region replicas, Aurora Global Database, DynamoDB global tables, S3 replication), infrastructure ready there, and a way to move traffic (Route 53 health checks and failover records, or Application Recovery Controller). AWS describes four disaster recovery strategies:
| Strategy | Second Region holds | Recovery time |
|---|---|---|
| Backup and restore | Backups only | Hours |
| Pilot light | Replicated data, core infrastructure switched off | Tens of minutes |
| Warm standby | A scaled-down working copy | Minutes |
| Multi-site active/active | Full capacity serving traffic | Near zero |
Cost and complexity rise down the table. Active/active also forces you to deal with writes in two places: conflicts, ordering and data that must live in one jurisdiction.
Limit the blast radius
Not every outage is infrastructure. A bad deploy, a configuration push or a runaway client can take down every zone at once. Defences: deploy gradually (one zone or cell at a time, with automatic rollback on alarms), use separate accounts per environment, set timeouts and retries with backoff on every call, protect dependencies with circuit breakers and load shedding, and keep quotas well above normal peaks.
Prove it
Rehearse: fail over the database in staging, block a zone's subnets, kill instances. AWS Fault Injection Service runs such experiments in a controlled way, including simulated zone power interruptions. A recovery plan that has never been run is a hope, not a plan.
Check yourself
3 questions. Get them all right to finish this topic.
0 of 3 right so far. Get all three to finish this topic.