Q:

How to Set DynamoDB Throughput

I'm just getting into using Dynamo more and I have a question to see if I'm using this the best way. I have an application that stores data on Dynamo. Most of the time there is very little back and forth as the objects are very small and not frequently accessed. However when the user creates a new project it uploads quite a bit and when they first open it it has to download a couple thousand objects usually (depending on the project) so it spikes the graph.
For example, here is my usage graph for the last 2 weeks:

Right now I need to be able to handle those spikes so I have capacity set at 40 for read and 30 for write; this seems to be working but it seems like I'm not using my capacity very well so I'm wondering if I'm doing it right.
So my question is if there is a different way I should be accessing data or some other way to set things that would make better use of the capacity or equal things out a little? It may be the nature of the program and if so that's fine (the expense certainly isn't overwhelming) but I wanted to check for learning purposes :). Any guidance from those with more experience is appreciated!

A:

Update: Auto scaling is now supported by dynamoDb https://aws.amazon.com/blogs/aws/new-auto-scaling-for-amazon-dynamodb/
Original Answer:
Unfortunately dynamoDb doesn't provides functionality to scale capacity up or down depending on load like it does for EC2 instances, So the developer has to manage it. There are some solutions available online, one such solution which is also endorsed by AWS team is dynamicDynamoDb (https://aws.amazon.com/blogs/aws/auto-scale-dynamodb-with-dynamic-dynamodb/).
Note that this solution will require an EC2 instance which monitors your table capacity and scale up and down as necessary. To avoid single point of failure you also need to add redundant EC2 hosts. Since you need very low capacity the extra cost of ec2 mayn't be worth the price. 
Regards
Dinesh Solanki 

