If you look at RDS pricing, everything looks quite affordable (storage, compute, backups) –  so how are so many teams spending six figures on it? Usage is part of the story, of course, but those bills are also very inflated. At scale, there’s more going on. Scaling a database doesn’t just mean more usage, it also means more regions, more environments, stricter recovery policies. That’s when costs really start climbing in AWS. 

RDS’s rigid architecture locks you into structural patterns that quietly inflate your bill as you grow.

The 4 Forces Behind the AWS RDS Cost Spiral

The true cost of RDS reveals itself not in pricing tables, but in how its architecture behaves at scale. Here are four common patterns we’ve seen inflate bills of otherwise well-designed systems.

Every environment becomes a full-blown instance

Most teams don’t just have one production database. They also run staging, development, region-specific mirrors. In RDS, each environment requires a completely separate instance: separate compute, separate storage, separate snapshots. Teams pay for all those environments in full. Add terabytes of data, and the costs multiply fast.

“We need multi-terabyte dev environments to mirror prod. In RDS, that means duplicating storage, and the costs are ridiculous.”

Engineer at a logistics company. Migrated TB-size workload from RDS to Neon

Storage volumes only go up

In RDS, you have to provision storage in advance. You can scale a volume up once every six hours if you need more space. And here’s the catch – RDS doesn’t let you shrink a storage volume once it’s been scaled. Even if you move cold data to S3, the EBS volume stays large, and you keep paying for the peak. The result for most teams is half-empty, multi-terabyte storage volumes on their bill.

Compute is provisioned for peak and paid for 24/7

Another consequence of RDS’s rigid architecture is that you have to provision fixed compute capacity. But your traffic likely isn’t constant (it rarely is). Most real-world systems follow usage patterns – daytime spikes, nighttime lulls, weekend dips. RDS doesn’t account for that. You pick an instance size big enough to handle your peak load, and that’s what you pay for. This also applies to non-prod environments that may only be used for a few hours each day. The meter keeps running.

Snapshots are the only realistic backup, but they’re costly (and slow)

Once your Postgres instance in RDS reaches a certain size, full logical backups become impractical. It’d be too slow to recover from them, the downtime would be many hours or even days. That leaves snapshots as the only viable recovery option for instances at scale, but RDS snapshots come with a cost. You pay to store them, you pay to retain them… And restoring from them is still anything but fast (it can still take hours to restore from a multi-TB snapshot).

“We kept snapshots just in case in RDS, but knew we’d lose hours restoring from them”

A Better Architecture for Scaling Postgres

When storage and compute are tightly coupled, when environments are full instance clones, and when scaling is manual, costs naturally spiral as you scale – there’s no other way around it. Neon was built to break this pattern.

If you’re new here: Neon is a serverless Postgres platform built to fix all the inefficiencies of traditional managed databases. By separating storage and compute and implementing an innovative storage design with copy-on-write branching, Neon enables a more flexible and efficient way to manage Postgres at scale.

Create branches instead of full instances

No more duplicating multi-terabyte volumes just to test a migration.

Neon lets you spin up copy-on-write branches of your database in a second, even if you’re working with tens of terabytes. Branches act like fully isolated environments that don’t duplicate storage and reflect their parent perfectly, but they have their own compute endpoint to avoid interfering with production in any way. Whether you need a dev environment, a test sandbox, or a point-in-time clone, you can spin up a branch. They’re instant and lightweight, and can also be handled programmatically via CI/CD or API.

Autoscale compute and storage

You only pay for the compute and storage that your databases actually use.

Neon automatically scales compute up or down based on workload. If a dev database is not being used, it scales to zero. When demand spikes in production, it scales up in real time, both connections and throughput. Storage also scales dynamically, up or down, with no manual provisioning required. There’s no need to pick an instance size or preallocate storage. Usage drives cost directly, not guesses about peak traffic.

Restore from any point in time in seconds

Restores become economical, fast at scale, and testable.

Neon implements point-in-time restore (PITR) as a native part of its branching model. You can restore from any historical point instantly (no matter how large your database is) by creating a branch from that point. You can query that branch directly, test migrations against it, or promote it to production. This model avoids the operational and cost overhead of traditional snapshot-based recovery.

Summary: How Neon Breaks the AWS RDS Cost Spiral

Via branches,

  • There’s no need to provision full-size instances for staging or QA
  • Shared, copy-on-write storage makes dev environments affordable, even at TB scale

Via autoscaling,

  • Compute costs shrink during off-hours, weekends, or idle dev time
  • There’s no getting stuck in large storage volumes that cannot be resized down

With instant restores built on branching,

  • There’s no need to retain and store large, infrequent RDS snapshots
  • Inspecting or debugging historical data becomes fast and inexpensive
Cost driverAWS RDSNeon
Multiple environmentsRequires full-size instances per env (compute + storage)Lightweight branches reuse storage, created instantly
Storage growthVolumes only grow, can’t shrink after scalingStorage scales up and down automatically
Idle computeCompute is always-on, even when traffic dropsCompute autoscales and scales to zero when idle
Dev/prod parityDuplicating large datasets for dev is costlyDev branches match prod instantly, no extra storage cost
Backup and recoverySnapshots are expensive and slow to restoreBranches enable instant recovery at any point in time
Inspecting historical dataRequires restoring and provisioning a new instanceJust branch from a timestamp and query directly
Overprovisioning for spikesMust provision for peak load, pay for it 24/7Compute scales up and down with demand, no need to overprovision

If You’re Running Into These Walls…

You’re not alone. Neon offers a modern alternative for scaling Postgres without the architectural baggage that translates not only in a cost spiral but also on a degraded developer experience. Start a free Neon project to get a feel for the platform, or book a call with our team to see if we can help reduce your AWS RDS bill.