New Serverless SQL on AWS — Aurora DSQL Pricing Explained


AWS FOR THE REAL WORLD
⏱️
Reading time: 6 minutes
🎯
Main Learning: Understanding Amazon Aurora DSQL pricing structure including DPUs, storage costs, and free tier
📝
Hey Reader 👋🏽

in December 2024 AWS announced the preview of the serverless database DSQL and just in May it was generally available. With the announcement of the general availability, the pricing was also announced. The pricing is not super straightforward, so let's dive into it.
YouTube Video

Click to watch this video on YouTube

Introduction

The day has come.
There's a new serverless database in the house.

This time from AWS itself.
And it's even a SQL database, which is really mind-blowing for us.

Amazon Aurora DSQL claims to be the fastest serverless distributed SQL database.
We've been waiting for it for a long time.
And now it's here.

We're already using it for a small internal application.
We track every sale, newsletter subscriber, and some KPIs like lifetime value, etc., in this database.

But AWS did something unique this time: they didn't announce any pricing with the beta launch.
So we were eagerly waiting for general availability.

Let's take a look at what AWS came up with and how much it will cost to run some example workloads.

Here's a first overview of the pricing:

One Pager

Pricing Definitions

The main selling point of this database is that AWS claims (again) that it's fully serverless.
This means there are no upfront costs—you only pay for what you use.
Whether that's really the case, we'll see in the end 😉

Of course, AWS has introduced some new units we need to learn about first.
The new unit here is called DPU.

DPU = Distributed Processing Unit.
This unit is used for calculating all request-based activities such as:

  • query processing
  • reads
  • writes

Storage, on the other hand, is based on total GB per month.

What this shows us is that even though there are no upfront costs, there will still be costs even if you don't have any reads or writes, because you still pay for storage. This makes sense.

In US East 1 (us-east-1), for example, the costs are:

Resource Price
DPU $8 per 1M units
Storage $0.33 per GB-month

What is a Distributed Processing Unit (DPU)

On the pricing page of DSQL, a DPU is defined as:

"A DPU is a normalized billing unit for all request-based activity—such as query processing, reads, and writes—in Aurora DSQL."

This means the pricing is pretty similar to DynamoDB.
You pay for reads and writes.
One thing that comes on top is that you also pay for compute.

We can calculate this using CloudWatch, since the metrics are available there:

  • ReadDPU
  • WriteDPU
  • ComputeDPU
  • MultiRegionWriteDPU

The total of these will be your total DPU usage.

Unfortunately, this is the most detailed definition I can provide for what a DPU is.
I would have expected a clearer definition.
What exactly is the definition of one read?
Is it really just one read request?
How is compute calculated?

Estimating the price of a migration or of an application isn't really straightforward yet.

How much does our application cost?

Like I said, we have an example application running.
This is really a super small application, but let's see how we would calculate what it costs.

To calculate this, first copy your cluster ID from the Aurora DSQL console.
Then follow these steps:

  1. Go to CloudWatch
  2. Navigate to All Metrics
  3. Add your cluster ID to the search and hit enter
  4. Click on the dimension cluster ID
  5. Select the metrics TotalDPU, ComputeDPU, ReadDPU, WriteDPU
  6. Select the statistic SUM
  7. Select the chart type Number
  8. Go to Options and select Value: Time range value shows the value from the entire time range

I know that's quite a few steps, but this will show you the total DPU and the breakdown.
You can then multiply it by the pricing of your region.

Marc Bowes (one of the key engineers behind DSQL) also published a handy script for that here.

Our application currently costs $0.00287 per month.

Free Tier

"When there is pricing, there is a free tier." - Sandro Volpicella

AWS also offers a generous free tier for this database.
Remember, the free tier applies monthly for this service.
Each month, you can use 100,000 DPUs and 1 GB of free storage.
I think this is quite generous to get started.

Data Transfer

The one thing everyone tends to forget: Data Transfer costs.
We won't dive into them here.
Please check out the EC2 pricing to understand them.

Backup and Restore Costs

One thing you need with every storage service is backups.
Backups and restoring those backups come with their own costs.
Backup is a fully managed service—and we love that.

AWS differentiates between Warm and Cold backups.
AWS Backup is its own separate service.

Some example costs of backups for US East 1 (us-east-1) are:

Service Pricing
Warm Backup Storage $0.10 per GB-month
Cold Backup Storage $0.03 per GB-month
Warm Backup Restore $0.02 per GB-month
Cold Backup Restore $0.03 per GB-month

To be honest, there isn't much defined about what warm and cold backups actually are in DSQL.
On the backup page, DSQL often isn't even mentioned as a supported service.

But in general, the backup strategies are defined as:

  • Warm - Fast retrieval, more expensive
  • Cold - Low cost, slower retrieval

Typically, you mix and match both of them.
First, your backups are in warm storage, and after a few days, you move them to cold storage.

Summary

I hope this gives you some clarity on DSQL pricing.
In general, this really is a fully serverless service.
We don't have any upfront costs and only pay for what we use.
The main monthly cost is storage.
This means that even if you don't use the database, you will still pay for storage.

Unfortunately, understanding and estimating how many DPUs our applications need is not possible right now (at least for us).
I think we just need to build on it and figure it out ourselves.
But it is possible to calculate your monthly costs.

Having a SQL database at hand with purely usage-based pricing is simply amazing.
This service has amazing potential, and I look forward to using it.
It can be seen as the DynamoDB for SQL.
Let's build and see how it performs.

Resources

Marc Bowes Pricing Guide

DSQL Official Pricing Guide

AWS for the Real World

Join our community of over 9,300 readers delving into AWS. We highlight real-world best practices through easy-to-understand visualizations and one-pagers. Expect a fresh newsletter edition every two weeks.

Read more from AWS for the Real World

AWS FOR THE REAL WORLD ⏱️ Reading time: 8 minutes 🎯 Main Learning: Building & Testing Lambda@Edge Functions with LocalStack 📝 Blog Post Hey Reader 👋🏽we hope you have a great week! End of last year the CDN Edgeio was deprecated. Tobi's client company used it and the only thing that saved his day was CloudFront and Lambda@Edge Functions. But we realized that testing them and executing them locally is a pain. When we started to look for a solution we found Localstack - let's see how we can use...

AWS FOR THE REAL WORLD ⏱️ Reading time: 8 minutes 🎯 Main Learning: Migrating from Edgio to CloudFront 📝 Blog Post 💻 GitHub Repository Hey Reader 👋🏽After a busy week in Prague, both Tobi and I (Sandro) delivered our talks and we got quite some good feedback! We will share them in a separate newsletter soon.But this newsletter is all about accessing S3 within a VPC via Gateway endpoints vs. Internet routing. We know these networking issues are not the fanciest onces (looking at you AI) but...

Hey Reader 👋🏽 We've been talking a lot about how great SST's switch to Pulumi was, and many of you have asked us how to use plain Pulumi directly. So today, we're sharing our quick guide to Pulumi - a tool we're really excited about since it lets us build infrastructure with languages we already know and love. No more learning weird syntax - just TypeScript, Python, or whatever we're comfortable with! We spent the last few days playing with it, and here's what we've learned... AWS Community...