An application running on Amazon Aurora MySQL experiences significant performance degradation during peak hours due to a surge in read-only traffic. The database currently uses a single primary instance and one replica. What is the most effective way to scale the database for these spikes while maintaining high performance?
Trap 1: Manually add more Aurora Replicas during peak hours.
Manual intervention is inefficient and prone to human error, often resulting in delayed responses to traffic spikes. While adding replicas increases read capacity, doing so manually does not provide the elasticity required for unpredictable workloads. This approach leads to either performance bottlenecks during sudden surges or wasted costs when traffic levels drop.
Trap 2: Increase the instance size of the primary Aurora instance.
Scaling up the primary instance increases the overall cost and may cause downtime during the modification process. While a larger instance provides more resources, it does not specifically address the need for distributed read capacity. Using multiple read replicas is a more effective strategy for handling high-volume read traffic than vertical scaling alone.
Trap 3: Use Amazon SQS to buffer incoming read requests.
Amazon SQS is a message queuing service intended for asynchronous processing and decoupling components, not for caching or buffering synchronous database read requests. Implementing SQS for read traffic would introduce significant latency and architectural complexity. It is not a suitable solution for improving the performance of a real-time, read-heavy relational database application.
- A
Manually add more Aurora Replicas during peak hours.
Why it fails: Manual intervention is inefficient and prone to human error, often resulting in delayed responses to traffic spikes. While adding replicas increases read capacity, doing so manually does not provide the elasticity required for unpredictable workloads. This approach leads to either performance bottlenecks during sudden surges or wasted costs when traffic levels drop.
- B
Configure Aurora Auto Scaling for the Aurora Replicas.
Aurora Auto Scaling automatically manages the number of read replicas based on a specified target metric like CPU utilization. This ensures that the read capacity scales out instantly during traffic peaks and scales in when the demand decreases. It provides a highly performant and cost-optimized solution for managing fluctuating read-heavy workloads on Aurora.
- C
Increase the instance size of the primary Aurora instance.
Why it fails: Scaling up the primary instance increases the overall cost and may cause downtime during the modification process. While a larger instance provides more resources, it does not specifically address the need for distributed read capacity. Using multiple read replicas is a more effective strategy for handling high-volume read traffic than vertical scaling alone.
- D
Use Amazon SQS to buffer incoming read requests.
Why it fails: Amazon SQS is a message queuing service intended for asynchronous processing and decoupling components, not for caching or buffering synchronous database read requests. Implementing SQS for read traffic would introduce significant latency and architectural complexity. It is not a suitable solution for improving the performance of a real-time, read-heavy relational database application.