Which design should a solutions architect recommend to provide a more scalable solution?
Use Amazon Kinesis Data Streams to ingest the data. Process the data using AWS Lambda functions.
Use Amazon API Gateway on top of the existing application. Create a usage plan with a quota limit for the third-party vendor.
Use Amazon Simple Notification Service (Amazon SNS) to ingest the data. Put the EC2 instances in an Auto Scaling group behind an Application Load Balancer.
Repackage the application as a container. Deploy the application using Amazon Elastic Container Service (Amazon ECS) using the EC2 launch type with an Auto Scaling group.
Explanations:
Using Amazon Kinesis Data Streams allows for scalable ingestion of data in real time. It can handle high volumes of incoming data, and processing with AWS Lambda functions can be triggered automatically as data arrives, allowing for efficient handling of spikes in volume without overloading the application.
While Amazon API Gateway can help manage the API calls and create a usage plan, it does not inherently resolve the issue of the application’s compute capacity being maxed out. It may limit the number of requests but won’t scale the backend processing to handle spikes effectively.
Amazon SNS is primarily used for messaging and notification rather than direct data ingestion. While it can help decouple the components, it would not effectively address the issue of processing large volumes of data efficiently, especially during spikes. Additionally, putting EC2 instances in an Auto Scaling group may still struggle under sudden high loads without an appropriate data ingestion layer.
While repackaging the application as a container and deploying it on Amazon ECS with an Auto Scaling group could improve scalability, it does not directly address the ingestion of high volumes of data. This option focuses on containerization rather than enhancing the data handling capacity needed to mitigate the 503 errors caused by request overload.