Question #536
A company is migrating a monolithic web application to a microservices architecture using containers. They require separate environments for production and staging, each handling variable loads with known minimum and maximum demands. The solution must use a serverless approach to minimize management overhead while ensuring cost-effectiveness. Which design meets these requirements?
Deploy containers as AWS Lambda functions with configured concurrency limits. Use Amazon API Gateway with separate stages for each environment.
Use Amazon ECR for container images. Set up two Amazon ECS clusters with Fargate launch type, configured auto-scaling, and separate Application Load Balancers for each environment.
Utilize Amazon EKS with Fargate profiles for orchestration. Deploy containers from ECR, configure auto-scaling, and use separate Network Load Balancers for each environment.
Deploy using AWS Elastic Beanstalk with separate environments. Configure auto-scaling groups and Application Load Balancers for each environment.
Explanation
Option B meets all requirements:
1. Serverless: ECS with Fargate removes server management overhead.
2. Cost-Effectiveness: Auto-scaling adjusts resources based on demand, avoiding over-provisioning.
3. Separate Environments: Two ECS clusters with dedicated ALBs isolate production and staging.
4. Container Support: ECR stores container images, aligning with the microservices architecture.
Other options fail because:
- A: Lambda is not ideal for container-based microservices requiring variable scaling.
- C: EKS introduces complexity, conflicting with the 'minimal management' requirement.
- D: Elastic Beanstalk may use EC2 (non-serverless) and lacks Fargate's cost efficiency.
Key Points: Use ECS Fargate for serverless containers, ALB for HTTP routing, and auto-scaling for cost optimization.
Answer
The correct answer is: B