Which solution meets these requirements?
Immediately before the event, scale up the existing DB instance to meet the anticipated demand. Then scale down after the event.
Use Amazon SQS to decouple the application and database layers. Configure an AWS Lambda function to write items from the queue into the database.
Migrate to Amazon DynamoDB and manage throughput capacity with automatic scaling.
Use Amazon ElastiCache for Memcached to increase write capacity to the DB instance.
Explanations:
Scaling the existing DB instance before the event may help handle the increased traffic, but it does not address the issue of unpredictable traffic surges effectively. There is a risk of database writes being dropped during peak load, as scaling may not keep up with sudden spikes, and this approach can be costly and inefficient.
Using Amazon SQS to decouple the application and database layers allows the application to handle incoming requests and queue them. An AWS Lambda function can then process the queued items and write them to the database, ensuring that no submissions are dropped. This solution provides a buffer during traffic spikes, ensuring reliable data writes without changing the underlying data model.
Migrating to Amazon DynamoDB may improve scalability and performance, but it requires changing the underlying data model. This option does not satisfy the requirement of keeping the existing data model intact. Additionally, while DynamoDB can handle variable traffic, it may involve complexities in migration and could disrupt existing functionalities during the transition.
Amazon ElastiCache for Memcached can improve read performance and reduce database load, but it does not address the need for reliable write capacity during high traffic events. This option does not ensure that submissions are not dropped before they are committed to the database and could lead to data inconsistency if not managed properly.