How do you design a highly available, fault-tolerant system in AWS? What services would you leverage to ensure automatic failover?