Which combination of steps should the solutions architect take to eliminate single points of failure with minimal application code changes?
(Choose two.)
Create a REST API in Amazon API Gateway and use AWS Lambda functions as the application layer
Create an Application Load Balancer and migrate the Docker container to AWS Fargate
Migrate the storage layer to Amazon DynamoDB
Migrate the storage layer to Amazon DocumentDB (with MongoDB compatibility)
Create an Application Load Balancer and move the storage layer to an EC2 Auto Scaling group
Explanations:
While using Amazon API Gateway and AWS Lambda could eliminate the single point of failure in the application layer by providing a fully managed, serverless architecture, it requires significant application code changes to adapt to the serverless model. The current application is running in Docker containers, and migrating to this setup would likely involve refactoring.
Creating an Application Load Balancer (ALB) and migrating the Docker container to AWS Fargate would eliminate the single point of failure associated with the EC2 instance hosting the application layer. Fargate allows for serverless container management, automatically managing the infrastructure, while the ALB distributes traffic across multiple instances, providing high availability and fault tolerance.
Migrating the storage layer to Amazon DynamoDB could enhance reliability and scalability but would require substantial changes to the application code to interact with DynamoDB instead of MongoDB. The goal is to minimize application code changes, so this option does not meet the requirement.
Migrating the storage layer to Amazon DocumentDB (with MongoDB compatibility) can enhance availability and fault tolerance while maintaining compatibility with the existing MongoDB code. DocumentDB is designed for high availability with automatic failover, thus removing the single point of failure without significant application code changes.
Creating an Application Load Balancer and moving the storage layer to an EC2 Auto Scaling group would not directly address the single point of failure in the storage layer. Auto Scaling is typically used for compute resources (like EC2 instances) rather than database instances, and this option does not provide a suitable solution for high availability of the database. Additionally, it could complicate the setup without significant benefits.