Which solution will meet these requirements MOST cost-effectively?
Upload the container images to AWS Lambda as functions. Configure a concurrency limit for the associated Lambda functions to handle the expected peak load. Configure two separate Lambda integrations within Amazon API Gateway: one for production and one for testing.
Upload the container images to Amazon Elastic Container Registry (Amazon ECR). Configure two auto scaled Amazon Elastic Container Service (Amazon ECS) clusters with the Fargate launch type to handle the expected load. Deploy tasks from the ECR images. Configure two separate Application Load Balancers to direct traffic to the ECS clusters.
Upload the container images to Amazon Elastic Container Registry (Amazon ECR). Configure two auto scaled Amazon Elastic Kubernetes Service (Amazon EKS) clusters with the Fargate launch type to handle the expected load. Deploy tasks from the ECR images. Configure two separate Application Load Balancers to direct traffic to the EKS clusters.
Upload the container images to AWS Elastic Beanstalk. In Elastic Beanstalk, create separate environments and deployments for production and testing. Configure two separate Application Load Balancers to direct traffic to the Elastic Beanstalk deployments.
Explanations:
AWS Lambda has limits on execution time and cannot run long-lived container processes as microservices. While it supports container images, it may not efficiently handle the variable load and would require more management complexity for two separate environments.
This option effectively utilizes Amazon ECS with Fargate, allowing for serverless containers. It supports auto-scaling, which is beneficial for variable loads, and separates production and testing environments. Amazon ECR is used for container storage, and Application Load Balancers ensure efficient traffic routing.
While Amazon EKS can run containers efficiently, it adds more operational complexity compared to ECS with Fargate. It requires additional management for Kubernetes, making it less cost-effective and complex for the stated requirements of minimizing operational complexity.
Elastic Beanstalk abstracts some complexities but is not purely serverless. It also may not scale as effectively as ECS with Fargate for containerized microservices, especially with the requirement of managing distinct production and testing environments efficiently.