Aurora Serverless v2 was supposed to settle the question: pay for what you use, autoscale gracefully, never over-provision a database again. In practice, the math turns out to be more interesting. ACU billing is generous when your database is genuinely idle for long stretches — and brutal when it is not.
This post puts both options on a simulation canvas and walks through the three traffic shapes where the answer flips.
How ACUs actually bill
An Aurora Capacity Unit (ACU) is roughly 2 GiB of memory plus proportional CPU and network. As of mid-2026, ACUs bill at ~$0.12/hour in us-east-1. The smallest configuration scales between 0.5 ACU (idle floor) and a maximum you set. Crucially, billing is per-second of consumed capacity, with rapid scale-up but a noticeably lazier scale-down.
The equivalent provisioned instance — a db.r6g.large — has 2 vCPU, 16 GiB RAM, and bills at ~$0.29/hour reserved or ~$0.46/hour on-demand. Roughly equivalent to 8 ACUs running flat-out.
Three traffic shapes, three different answers
Idle-heavy (dev, batch, B2B)
Database does real work 2–4 hours per day. Serverless v2 wins decisively — often 60–70% cheaper than provisioned. The 0.5 ACU floor is the killer feature.
Steady-state (consumer SaaS)
Sustained baseline of 4–6 ACUs equivalent. Crossover territory. Provisioned + RI typically wins by 25–35%. Serverless only wins if traffic has long deep troughs.
Sustained high (mature platform)
Database sits at 8+ ACUs equivalent all day. Serverless v2 is dramatically more expensive — sometimes 2–3× the cost of a reserved provisioned cluster.
The crossover math
If your average consumed capacity over a month is below roughly 40% of the equivalent provisioned instance's capacity, Serverless v2 wins on cost alone. Above that, provisioned wins. With a 1-year reserved instance commitment, the threshold drops to about 60% — meaning provisioned wins even more often.
| Avg utilisation | Serverless v2 (max 16 ACU) | db.r6g.xlarge on-demand | db.r6g.xlarge 1-yr RI |
|---|---|---|---|
| 20% (dev workload) | $210/mo | $670/mo | $420/mo |
| 40% (light prod) | $420/mo | $670/mo | $420/mo |
| 70% (busy prod) | $740/mo | $670/mo | $420/mo |
| 95% (saturated) | $1,010/mo | $670/mo | $420/mo |
Hidden failure modes
Cost is only half the story. Two operational quirks of Serverless v2 surface only under simulated load:
- Scale-up latency under spike. Aurora Serverless v2 scales fast, but not instantly. A 5× traffic spike that lands in under 30 seconds will see elevated p99 for the first minute. If your SLO is tight, this matters.
- Lazy scale-down. The system retains capacity for several minutes after demand drops. If you have a daily batch that runs from 02:00–02:15, expect to pay for 02:00–02:45 of capacity. Small detail, real money over 30 days.
If a workload spends >50% of the day above 40% of its peak capacity, default to provisioned + RI. If a workload genuinely idles or has nightly windows, default to Serverless v2. Run the simulation either way — the gap between "default" and "right answer" can be five figures annually on a single database.
How to simulate this on pinpole
On the pinpole canvas, drop an Aurora node, choose Serverless v2 with your ACU range, attach the application traffic source, and run the simulation. The simulator propagates traffic, models ACU consumption per second, and returns a live monthly cost. Swap the same node to provisioned with a chosen instance class and re-run. The diff is your decision.
This is exactly the kind of question that draw.io and the Pricing Calculator cannot answer together — one is a picture, the other is a spreadsheet. Simulation lets you ask "what does this database actually cost under the traffic shape we actually have."
Stop guessing whether Serverless v2 wins for your workload.
Wire both variants on the pinpole canvas, replay your real traffic shape, and let the cost simulator answer.
Start 14-day free trial →