Which solution meets these requirements?
Use Amazon S3 to host the front-end layer. Use AWS Lambda functions for the application layer. Move the database to an Amazon DynamoDB table. Use Amazon S3 to store and serve users’ images.
Use load-balanced Multi-AZ AWS Elastic Beanstalk environments for the front-end layer and the application layer. Move the database to an Amazon RDS DB instance with multiple read replicas to serve users’ images.
Use Amazon S3 to host the front-end layer. Use a fleet of EC2 instances in an Auto Scaling group for the application 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 layer and the application layer. Move the database to an Amazon RDS Multi-AZ DB instance. Use Amazon S3 to store and serve users’ images.
Explanations:
This option requires significant changes to the application, such as switching to AWS Lambda for the application layer and DynamoDB for the database. These changes are not minimal and could require extensive code modification.
While using load-balanced Multi-AZ Elastic Beanstalk for the front-end and application layer is a good approach for scalability and availability, using RDS with read replicas is not a suitable solution for highly available databases in this case. The read replicas are for scaling read-heavy workloads, but do not ensure high availability in the event of failover, unlike Multi-AZ deployments.
Moving to EC2 instances in an Auto Scaling group for the application layer is scalable but does not provide the same level of managed services and high availability as Elastic Beanstalk. Additionally, using a memory-optimized instance type for the database is not a complete solution for high availability.
This solution uses Elastic Beanstalk environments for both the front-end and application layers, providing managed services with load balancing and Multi-AZ support for high availability. Moving the database to an RDS Multi-AZ DB instance ensures both high availability and failover capabilities, and using S3 for image storage is a best practice for scalability and availability.