AWS Certified Solutions Architect – Professional — Question 215
A mobile gaming application publishes data continuously to Amazon Kinesis Data Streams. An AWS Lambda function processes records from the data stream and writes to an Amazon DynamoDB table. The DynamoDB table has an auto scaling policy enabled with the target utilization set to 70%.
For several minutes at the start and end of each day, there is a spike in traffic that often exceeds five times the normal load. The company notices the
GetRecords.IteratorAgeMilliseconds metric of the Kinesis data stream temporarily spikes to over a minute for several minutes. The AWS Lambda function writes
ProvisionedThroughputExceededException messages to Amazon CloudWatch Logs during these times, and some records are redirected to the dead letter queue.
No exceptions are thrown by the Kinesis producer on the gaming application.
What change should the company make to resolve this issue?
Answer options
- A. Use Application Auto Scaling to set a scaling schedule to scale out write capacity on the DynamoDB table during predictable load spikes.
- B. Use Amazon CloudWatch Events to monitor the dead letter queue and invoke a Lambda function to automatically retry failed records.
- C. Reduce the DynamoDB table auto scaling policy's target utilization to 20% to more quickly respond to load spikes.
- D. Increase the number of shards in the Kinesis data stream to increase throughput capacity.
Correct answer: A
Explanation
The correct answer is A because scheduling Application Auto Scaling to increase write capacity during known traffic spikes will help accommodate the increased load without hitting throughput limits. Option B does not address the root cause of the problem, which is the insufficient write capacity during peak times. Option C may help, but reducing the target utilization to 20% could lead to unnecessary costs and is less effective than a scheduled scaling approach. Option D focuses on Kinesis throughput, but the main issue lies with DynamoDB's write capacity.