Question #800
A company is migrating its e-commerce platform from a monolithic architecture on Amazon EC2 instances to a decoupled, serverless system. The new architecture must handle high traffic volumes, process orders asynchronously, retain failed transactions for reprocessing, and minimize operational overhead. Which solution meets these requirements?
Use Amazon CloudFront with Amazon S3 for web hosting, Amazon API Gateway for order APIs, Amazon Kinesis Data Streams for order queuing, AWS Lambda for business logic, and Amazon DynamoDB for retaining failed orders.
Use Amazon S3 for web hosting with AWS AppSync for order APIs. Use Amazon Simple Queue Service (Amazon SQS) for order queuing. Use AWS Lambda for business logic with an Amazon SQS dead-letter queue for retaining failed orders.
Use AWS Elastic Beanstalk for web hosting with Amazon RDS for order APIs. Use Amazon Simple Notification Service (Amazon SNS) for order queuing. Use Amazon EC2 for business logic with Amazon S3 Glacier for retaining failed orders.
Use Amazon Lightsail for web hosting with Amazon API Gateway for order APIs. Use Amazon MQ for order queuing. Use AWS Step Functions for business logic with Amazon OpenSearch Service for retaining failed orders.
Explanation
The correct answer is B because:
1. Serverless & Scalable: S3 (static web hosting), AWS AppSync (managed GraphQL APIs), Lambda (business logic), and SQS (managed queues) minimize operational overhead.
2. Asynchronous Processing: SQS decouples order processing, enabling asynchronous handling of high traffic.
3. Retry & Failed Transactions: SQS dead-letter queue (DLQ) retains failed orders for reprocessing, a best practice for reliability.
Why other options fail:
- A: Kinesis is for real-time streaming, not queuing. DynamoDB isn't purpose-built for failed message retention.
- C: Elastic Beanstalk/EC2 add operational overhead. SNS (pub/sub) isn't a queue, and Glacier is unsuitable for quick reprocessing.
- D: Lightsail isn't serverless. Amazon MQ is for legacy messaging systems, and OpenSearch isn't ideal for failed transactions.
Key Points:
- Use SQS + DLQ for reliable message handling.
- Serverless services (Lambda, S3, API Gateway/AppSync) reduce operational effort.
- Decoupled architectures improve scalability and fault tolerance.
Answer
The correct answer is: B