November 14, 2023
-
5
Min Read

DynamoDB Magic Numbers: Optimize your DynamoDB spend with simple math

Learn some surprisingly simple tricks to save money on DynamoDB.
Khawaja Shams
Alex DeBrie
Headshot of the blog author
by
Khawaja Shams
,
Alex DeBrie
,
by
Khawaja Shams
by
Alex DeBrie
green squirrel logo for momento
Khawaja Shams
,
Alex DeBrie
,
Database

DynamoDB is magical! There is no other service where you can just show up, turn on load at tens of millions of TPS, and things just work. It is also addictive. Once teams start to use DynamoDB, they use it for everything. DynamoDB is so effective that it just blends into the background - you don’t even realize it’s there because it’s just not in the way. This is a dual-edged sword. In fact, DynamoDB works so well that over time, teams accrue untapped optimization opportunities because it just keeps working. 

What if we were to tell you that these built-up optimization opportunities aren’t complicated to act on? What if you could wave a wand and activate cost and performance benefits? Well, you kind of can. To quote Alex DeBrie, “One of the things I love most about DynamoDB is how you can actually do the math to figure things out,” - and it’s simple math at that. It almost feels like magic.

So we’ve put on a little show - not to confuse you with sleight of hand, but to reveal some simple tricks to help you get the most out of DynamoDB. This blog is a breakdown of what we covered in our first lunch and learn on the topic and is focused on cost optimizations.

We also hosted a second lunch and learn diving into even more numbers. We'll post a link to that recording and corresponding blog here when it's available. But for now - read on!

6.94: Is DynamoDB provisioned throughput or on-demand right for you?

6.94

DynamoDB has two billing modes: provisioned throughput or on-demand. With provisioned throughput, you specify how much capacity you want ahead of time, whereas with on-demand you are charged for each operation without having to specify capacity ahead of time.

DynamoDB on-demand costs 6.94x the cost of provisioned capacity. But there is a catch! This assumes that you are consuming 100% of your provisioned capacity. In practice, 100% utilization of your IOPS is nearly impossible. Tight autoscaling rules and predictable traffic patterns like a diurnal cycle can get you a little north of 50%. However, if you don’t have the time or desire to mess with autoscaling rules or if you have particularly spiky traffic, on-demand IOPS may actually save you a ton of money.

How do you tell? It’s all there in CloudWatch - but here is how you can piece it together. There are two metrics that can help you learn your utilization: ConsumedWriteCapacityUnits (CWCU) and ProvisionedWriteCapacityUnits (PWCU).

Unfortunately, you cannot simply divide these numbers with each other to get the utilization. CWCU is an aggregate of all the capacity you consumed during a period of time, while PWCU is a per-second rate provisioned over 5-minute windows. Therefore, if you were running at 100% utilization, you would have to consume PWCU x 300 (300 is the number of seconds in a typical 5-minute period).

To determine your utilization over a 30-day period, you simply sum up your PWCU over 30 days, multiply it by 300, and divide it by the sum of CWCU over the same 30-day period. 30 days is a good span because it gives you longer-term data, allows you to assess the efficacy of auto-scaling, and blurs out high peaks. If the result is greater than 6.94, you may be better off with on-demand!

graphic showing that if the sum of PWCU times 300 divided by sum of CWCU is greater than 6.94, then on-demand is best

You could also reframe this as “what is the utilization of my IOPS?” To calculate that, simply flip the numerator and denominator in the above equation. If the result is below 14.4%, go on-demand. But remember that this doesn’t include your global secondary indexes (GSIs)!

2.4: Could you be saving money with DynamoDB Infrequent Access storage?

2.4

DynamoDB recently started offering an Infrequent Access (IA) storage class. IA gives you a whopping 60% discount on your DynamoDB storage ($0.10/GB vs $0.25/GB) in exchange for a mere 25% increase on your IOPS cost. As a thought exercise, if you spend the same on your storage as you do on your IOPS, moving to IA is a slam dunk! But it may still be a win as long as your IOPS cost less than 2.4x your storage cost.

An important caveat is that many tables don’t start this way, but as they collect more data over time, they cross the 2.4 threshold and become eligible for an IA win.

Let’s derive the 2.4 number. Suppose Jamie has a Standard DynamoDB table and her monthly bill is A for storage and B for IOPS each month. Her total monthly DynamoDB bill would be:

A + B

If she were to move to IA, her new bill would be:

.4A + 1.25B

And for IA to be a good deal:

A + B > .4A + 1.25B which leads to .6A > .25B which leads to 2.4A > B, or 2.4 times storage is greater than IOPS

TL;DR: If you are spending less than 2.4x storage on your IOPS, you are better off using IA. 

To compute your IOPS cost, you just add your write IOPS and read IOPS cost together. The formula is exactly the same for both on-demand and provisioned capacity.

The magic show is just beginning!

There are many more simple tricks to maximize DynamoDB where these came from. We (Alex and Khawaja) have been sharing about them on X/Twitter and there’s a whole slew of them beyond cost optimization that we shared in another lunch and learn on this topic. We'll update this blog when the recording link is available.

Tell us what magic numbers you've found most useful! And while you're thinking about it, learn more about how Momento can help you go even further with DynamoDB.

Khawaja Shams
Alex DeBrie
by
Khawaja Shams
,
Alex DeBrie
,
by
Khawaja Shams
by
Alex DeBrie
green squirrel logo for momento
by
Khawaja Shams
,
Alex DeBrie
,
Author
Khawaja Shams

Khawaja is the CEO and Co-Founder of Momento. He is passionate about investing in people, setting a bold vision, and team execution. Khawaja has experience at AWS where he owned DynamoDB, and subsequently owned product and engineering for all 7 of the AWS Media Services. He was awarded the prestigious NASA Early Career Medal for his contributions to the Mars Rovers.

Author
Alex DeBrie

Alex DeBrie is an AWS Data Hero and the author of The DynamoDB Book, a comprehensive guide to data modeling with DynamoDB. He works as an independent consultant and helps teams of all shapes and sizes with DynamoDB data modeling and designing serverless architectures. He has been working in the AWS serverless space for years and was an early employee at Serverless, Inc. He lives in Omaha, Nebraska with his wife and four kids.

Author
Open