You used the AWS Pricing Calculator. You estimated your write patterns. You provisioned DynamoDB with what seemed like the right capacity. Then the first bill arrived, and it was $3,200 higher than your estimate.
The pricing calculator didn't model your actual write pattern. Your architect's back-of-envelope calculation didn't either. The CFO's question at the next monthly review was pointed.
This happens because static pricing calculators assume uniform load distribution. Your actual traffic has spikes, waves, and patterns that change the economics of provisioned versus on-demand capacity in ways that a spreadsheet cannot predict.
Provisioned vs on-demand: the crossover point matters
DynamoDB offers two capacity modes. Provisioned capacity is cheaper per unit but you pay for what you allocate, whether you use it or not. On-demand is more expensive per unit but you only pay for what you consume. The right choice depends entirely on your traffic pattern.
The difference is $3,200/month. $38,400/year. For a single table.
But here's the nuance: the crossover point depends on your traffic shape. If your load is genuinely constant at 2,500+ WCU around the clock, provisioned is cheaper. If you spike to 3,000 but average 1,100, on-demand wins. You cannot determine this from a pricing calculator. You need to simulate your actual traffic pattern.
What PinPole shows you
Build your architecture on the canvas. Configure the DynamoDB table with your expected item sizes and access patterns. Then run two simulations:
| Traffic pattern | Provisioned cost | On-demand cost | Recommendation |
|---|---|---|---|
| Constant (2,500 RPS) | $3,290/mo | $3,650/mo | Provisioned saves $360/mo |
| Wave (400-3,000 RPS) | $4,390/mo | $1,190/mo | On-demand saves $3,200/mo |
| Ramp (100 to 3,000 over 30 days) | $4,390/mo | $890/mo (month 1) | Start on-demand, switch at scale |
The simulation runs your actual traffic shape against both pricing models and shows you the per-month cost for each. Not an estimate. A simulation based on AWS's published pricing with your specific item sizes, read/write ratios, and access patterns.
The recommendation engine goes further
After each simulation, PinPole's recommendation engine analyzes your DynamoDB configuration and returns specific findings. For the wave pattern above, it returns:
One click applies the change. One re-simulation confirms it. The saving is visible before you provision a single resource.
Beyond DynamoDB: the full cost picture
DynamoDB is the most common cost surprise we see, but the same pattern applies across every service. Lambda invocation costs change with concurrency settings. API Gateway costs depend on request volume and payload sizes. SQS costs depend on queue depth and message retention.
PinPole's live cost estimate shows the per-service and total cost under the simulated load, updating in real time as you adjust configurations and traffic patterns. The cost estimate is the architecture's operating expense before you've spent a cent.
Predict your cloud bill before you deploy
Run your traffic pattern against real pricing models. No cloud account required.
Start for free →