A solutions architect has been tasked with designing a solution that is highly available, and requires the least amount of changes to the applicationWhich solution meets these requirements?
Use Amazon S3 to host the front-end layer and AWS Lambda functions for the backend layer. Move the database to an Amazon DynamoDB table and use Amazon S3 to store and serve users’ images.
Use load-balanced Multi-AZ AWS Elastic Beanstalk environments for the front-end and backend layers. Move the database to an Amazon RDS instance with multiple read replicas to store and serve users’ images.
Use Amazon S3 to host the front-end layer and a fleet of Amazon EC2 instances in an Auto Scaling group for the backend layer. Move the database to a memory optimized instance type to store and serve users’ images.
Use load-balanced Multi-AZ AWS Elastic Beanstalk environments for the front-end and backend layers. Move the database to an Amazon RDS instance with a Multi-AZ deployment. Use Amazon S3 to store and serve users’ images.
Explanations:
While using Amazon S3 and AWS Lambda enhances scalability and reduces management overhead, it requires a complete overhaul of the application architecture. Moving from EC2 instances to serverless architecture involves significant changes, and switching the database to DynamoDB may not be compatible with the existing MySQL database structure.
Although using load-balanced Multi-AZ Elastic Beanstalk environments increases availability for the front-end and back-end, this solution does not specify a Multi-AZ deployment for the database, which is crucial for high availability. Additionally, it suggests using read replicas, which are typically for read-heavy workloads and do not directly provide high availability.
Hosting the front-end on Amazon S3 is a good choice, and using an Auto Scaling group for the backend increases availability. However, moving the database to a memory-optimized instance type does not inherently provide high availability. This option lacks a redundancy and failover strategy for the database.
This solution employs load-balanced Multi-AZ Elastic Beanstalk environments for both the front-end and backend, enhancing high availability. It also specifies an Amazon RDS instance with a Multi-AZ deployment, ensuring that the database is fault-tolerant. Additionally, using Amazon S3 for image storage is efficient and scalable, requiring minimal changes to the existing application.