AWS Certified Solutions Architect – Professional — Question 958
You are the new IT architect in a company that operates a mobile sleep tracking application.
When activated at night, the mobile app is sending collected data points of 1 kilobyte every 5 minutes to your backend.
The backend takes care of authenticating the user and writing the data points into an Amazon DynamoDB table.
Every morning, you scan the table to extract and aggregate last night's data on a per user basis, and store the results in Amazon S3. Users are notified via
Amazon SNS mobile push notifications that new data is available, which is parsed and visualized by the mobile app.
Currently you have around 100k users who are mostly based out of North America.
You have been tasked to optimize the architecture of the backend system to lower cost.
What would you recommend? (Choose two.)
Answer options
- A. Have the mobile app access Amazon DynamoDB directly Instead of JSON files stored on Amazon S3.
- B. Write data directly into an Amazon Redshift cluster replacing both Amazon DynamoDB and Amazon S3.
- C. Introduce an Amazon SQS queue to buffer writes to the Amazon DynamoDB table and reduce provisioned write throughput.
- D. Introduce Amazon Elasticache to cache reads from the Amazon DynamoDB table and reduce provisioned read throughput.
- E. Create a new Amazon DynamoDB table each day and drop the one for the previous day after its data is on Amazon S3.
Correct answer: C, E
Explanation
Introducing an Amazon SQS queue buffers the incoming writes, allowing you to smooth out write spikes and provision much lower DynamoDB write throughput (WCU), which significantly reduces costs. Creating and dropping daily DynamoDB tables is a highly cost-effective strategy for transient time-series data, as deleting a table is free and avoids the high read/write costs associated with deleting individual items or scanning an ever-growing table. Other options like Redshift are far more expensive, and reading directly from S3 is cheaper than reading directly from DynamoDB.