A logistics company is migrating a legacy shipment-tracking application to AWS. The current application runs on a single high-capacity server that receives telemetry data, processes it, and updates a database. During peak periods, the server often runs out of memory, causing incoming telemetry data to be lost. The company wants to redesign the application to achieve the following:
1. Ensure telemetry data is never lost, even if downstream processing components fail or are temporarily unavailable.
2. Minimize operational overhead by avoiding the management of virtual servers for the processing and storage layers.
3. Automatically adjust resource capacity to match the volume of incoming data without manual intervention or over-provisioning.
Which architectural design on AWS best applies the cloud design principles of loose coupling, services not servers, and elasticity to meet these requirements?
- Ingest data using Amazon API Gateway, buffer messages in Amazon Simple Queue Service (SQS) to decouple the components, trigger AWS Lambda functions to process data, and store results in Amazon DynamoDB.Answer
- BDeploy a static fleet of Amazon EC2 instances to ingest data, use Amazon Elastic Block Store (EBS) to store incoming telemetry files, and write a cron job that runs every hour to scale the instances vertically during high-traffic windows.
- CConfigure an Application Load Balancer to route traffic to a monolithic application running on an Amazon EC2 Auto Scaling group, where the application handles ingestion, processing, and database writes synchronously.
- DSet up a containerized processing cluster on Amazon EC2 instances, manually provision additional compute nodes when CPU utilization exceeds 80%, and rely on AWS to automatically perform security patching on the guest operating systems.