Which solution meets these requirements?
Provision a full, secondary application deployment in a different AWS Region. Update the Route 53 A record to be a failover record. Add both of the CloudFront distributions as values. Create Route 53 health checks.
Provision an ALB, an Auto Scaling group, and EC2 instances in a different AWS Region. Update the CloudFront distribution, and create a second origin for the new ALB. Create an origin group for the two origins. Configure one origin as primary and one origin as secondary.
Provision an Auto Scaling group and EC2 instances in a different AWS Region. Create a second target for the new Auto Scaling group in the ALB. Set up the failover routing algorithm on the ALB.
Provision a full, secondary application deployment in a different AWS Region. Create a second CloudFront distribution, and add the new application setup as an origin. Create an AWS Global Accelerator accelerator. Add both of the CloudFront distributions as endpoints.
Explanations:
While provisioning a secondary application in a different region and using Route 53 failover records can enhance availability, it lacks the real-time failover capability provided by CloudFront’s origin failover. Additionally, using multiple CloudFront distributions complicates cache management and can lead to higher latency.
Provisioning an ALB, an Auto Scaling group, and EC2 instances in a different AWS Region allows for real-time failover. By updating the CloudFront distribution to include a second origin and configuring an origin group, the solution provides automatic failover between regions, ensuring high availability and fault tolerance.
While provisioning an Auto Scaling group in a different region and creating a second target for the ALB may seem like a viable solution, an ALB cannot directly manage multiple regions in the way suggested. This option fails to provide a robust fault-tolerant architecture since it doesn’t address cross-region failover effectively.
Creating a second CloudFront distribution and using AWS Global Accelerator introduces complexity and may not leverage CloudFront’s caching benefits effectively. The use of multiple distributions complicates the architecture and adds latency instead of providing seamless failover for the application.