A company is migrating its monolithic on-premises order-processing application to AWS. To handle unpredictable traffic spikes, they need to ensure the system is highly resilient to failures, can scale dynamically without human intervention, and prevents database performance bottlenecks from crashing the web frontend. Which of the following architectural strategies on AWS best implements these requirements while avoiding common cloud design anti-patterns?
- Deploy the frontend web servers across multiple Availability Zones within an Auto Scaling group, and use Amazon Simple Queue Service (SQS) to buffer writes to the database.Answer
- BDeploy both the web servers and the database on a single, statically over-provisioned Amazon EC2 instance to ensure zero-latency communication under peak load.
- CConnect the web servers directly to the database, and configure Amazon CloudWatch alarms to notify administrators to manually launch additional EC2 instances during spikes.
- DRun all web servers in a single Availability Zone, relying on AWS physical infrastructure maintenance to guarantee zero-downtime application failover.
Answer
Deploy the frontend web servers across multiple Availability Zones within an Auto Scaling group, and use Amazon Simple Queue Service (SQS) to buffer writes to the database.
The correct strategy implements loose coupling by using Amazon SQS to decouple the database writes from the web frontend, designs for failure by deploying the web servers across multiple Availability Zones, and implements elasticity by using an Auto Scaling group to handle dynamic traffic spikes automatically.
Step-by-Step Solution
Key Concept
AWS Cloud design principles (loose coupling, elasticity, and design for failure)