Which solution will improve the performance of the application when it is moved to AWS?
Import the data into an Amazon DynamoDB table with provisioned capacity. Refactor the application to use DynamoDB for reports.
Create the database on a compute optimized Amazon EC2 instance. Ensure compute resources exceed the on-premises database.
Create an Amazon Aurora MySQL Multi-AZ DB cluster with multiple read replicas. Configure the application to use the reader endpoint for reports.
Create an Amazon Aurora MySQL Multi-AZ DB cluster. Configure the application to use the backup instance of the cluster as an endpoint for the reports.
Explanations:
Importing data into DynamoDB and refactoring the application would involve significant changes to the application architecture and could lead to data consistency issues. Additionally, while DynamoDB can handle high throughput, it is not a direct replacement for MySQL in a scenario requiring complex queries and transactions typically needed for reporting.
While using a compute-optimized EC2 instance can improve performance, it does not address the underlying issues caused by concurrent report generation impacting the database performance. Without additional scaling or read replicas, the performance improvement may be limited compared to other solutions that specifically optimize read operations.
Creating an Amazon Aurora MySQL Multi-AZ DB cluster with read replicas allows for better performance by distributing read operations across multiple replicas. The application can be configured to use the reader endpoint for reports, which minimizes the load on the primary database instance and improves overall application performance during peak hours.
Using the backup instance of an Aurora MySQL cluster for reports is not a viable solution, as backup instances are not designed for high availability and performance. This option does not effectively distribute read traffic and could lead to performance bottlenecks, making it less effective than using dedicated read replicas.