How do you make a web service highly available across failures in AWS or Azure?
Options
- Two or more instances in different zones behind a load balancer, plus a multi-AZ DB (Correct option)
- One large server with plenty of CPU and memory placed in a single zone
- Daily backups only, restored by hand after any failure happens
- Disable the health checks so that no instance is ever removed
Answer
Run at least two instances in different Availability Zones behind a load balancer with health checks, use a multi-AZ managed database, and avoid single points of failure
Why
High availability means the service keeps working when one component or data center fails.
- Multiple instances/Pods across 2+ Availability Zones (Azure: availability zones too).
- Load balancer with health checks removes unhealthy instances automatically.
- Stateless app servers (session in Redis or a token), autoscaling to replace failed nodes.
- Database: multi-AZ replicas with automatic failover (RDS Multi-AZ, Azure zone-redundant).
- Regions: add a second region for disaster recovery (RTO/RPO targets).
Remember
2+ zones + load balancer + health checks + replicated database.