Which solution will meet these requirements?
Run the application on AWS Lambda as a single function with maximum provisioned concurrency.
Run the application on Amazon EC2 Spot Instances as microservices with a Spot Fleet default allocation strategy.
Run the application on Amazon Elastic Container Service (Amazon ECS) as microservices with service auto scaling.
Run the application on AWS Elastic Beanstalk as a single application environment with an all-at-once deployment strategy.
Explanations:
AWS Lambda is designed for short-lived functions and has a maximum timeout of 15 minutes, which does not accommodate the 20-minute report generation requirement. Running the application as a single function would also negate the benefits of microservices and scalability.
While using Amazon EC2 Spot Instances can reduce costs, it does not inherently address the application’s architecture issues or minimize downtime during updates. Additionally, running a monolithic application on Spot Instances would still lead to complexities in maintenance and scaling.
Running the application on Amazon ECS as microservices allows for better scalability, isolation of services, and reduced downtime with rolling updates. Service auto scaling helps manage varying loads efficiently. This architecture allows gradual improvements and minimizes the impact of updates on report generation.
AWS Elastic Beanstalk supports various deployment strategies, but an all-at-once deployment can cause downtime, which contradicts the company’s requirement to minimize downtime. This option does not encourage microservices or flexible architecture.