On demand vs provision capacity for AWS DynamoDB tables

Starting a while ago, you can create DynamoDB tables without provisioning a throughput for them. In that way, you will pay for only you will consume instead of spending money for planned capacity that is never used.

As always, there are always pros and cons for each approach. We performed several simulations and we want to share with you what we found. We considered different loads that in the end are translated in a number of calls per month. Our assumption is that load is quite equal distributed across the entire period and spikes don’t occur above supported burst rate.

Below is a graph showing the monthly cost for each pricing model. For the old model, with provisioned capacity we added an extra 30% over expected rate. For example, if you want to perform 50M operations per month, then you need at least 20 writes per second, but we calculated costs for 26 writes per second. Also, we ignored pricing for data storage, because this is similar and then irrelevant.

Our conclusions:

– tables with provisioned capacity are 4-5x cheaper than the other ones.

– tables supporting on demand requests are suitable for low traffic use cases, but once traffic gets higher, cost differences become too high

– considering this difference plus the supported burst rate, then tables with provisioned capacity are a good fit for most of the cases.

Don’t hesitate to write down your opinion in a comment. If there is someone that could benefit from this article, then share it!

Happy cloud computing!