Case study 01 ยท Managed PostgreSQL
The RDS bill said $493 a month.
The same stack now runs at $335.A 14-person logistics SaaS was paying about $493 a month for PostgreSQL on AWS RDS: a Multi-AZ production instance, a staging instance, RDS Proxy, backups, monitoring. We rebuilt it shape for shape on Selfhost.dev managed PostgreSQL, same region, Multi-AZ to Multi-AZ and the bill came to about $335. Here is every line item on both sides.
- Team
- 14 people, 3 backend engineers, no DBA
- Product
- B2B logistics SaaS
- Region
- US, everything in us-east-1
- Database
- PostgreSQL 16, ~300 GB, steady OLTP load
- Trigger
- Three straight months of bill growth with flat traffic
Client details are anonymized and normalized. Every price below is recomputed at public list rates and our own billed rates for August 2026, in the region named on each table, so you can check the math yourself.
Why they moved
Nobody chose this bill.
It accreted.
The stack was textbook: one Multi-AZ PostgreSQL instance for production, one smaller instance for staging, RDS Proxy in front because a connection spike once took the app down, automated backups with two weeks of retention. Each decision was right. Each added a meter.
What made the team look again was not any single line. It was that the database bill kept creeping while traffic stayed flat and nobody could say which line would creep next. Three of the seven lines on the bill were for things they assumed came with a managed database: connection pooling, monitoring, backup storage.
The before table
What AWS RDS was charging,
line by line.
AWS RDS for PostgreSQL ยท us-east-1 ยท on-demand list rates
| Item | Detail | $ / mo |
|---|---|---|
| Production instance | db.r6g.large, 2 vCPU / 16 GB, Multi-AZ, $0.450/hr | $328.50 |
| Production storage | 300 GB gp3 at $0.115/GB, doubled under Multi-AZ | $69.00 |
| RDS Proxy | Connection pooling, 2 vCPU minimum at $0.015/vCPU-hr | $21.90 |
| Backup storage | ~150 GB beyond the free allowance at $0.095/GB | $14.25 |
| Staging instance | db.t4g.medium, 2 vCPU / 4 GB, Single-AZ, 24/7 at $0.065/hr | $47.45 |
| Staging storage | 50 GB gp3 at $0.115/GB | $5.75 |
| Monitoring | CloudWatch and enhanced monitoring, 2 instances | $6.00 |
| Total | about $493 every month | $492.85 |
AWS RDS for PostgreSQL, us-east-1, on-demand list rates, checked August 2026: db.r6g.large Multi-AZ $0.450/hr, db.t4g.medium $0.065/hr, gp3 storage $0.115/GB/mo (billed on both nodes under Multi-AZ), backup storage $0.095/GB/mo beyond the free allowance, RDS Proxy $0.015 per vCPU-hour with a 2 vCPU minimum, CloudWatch about $3 per instance.
Months are 730 hours. Figures in USD.
The diagnosis
What was actually
driving the bill.
Multi-AZ is the right call for production, but it doubles whatever rate you are already paying. RDS carries a steep managed premium over the underlying compute, so doubling it hurts twice. Selfhost.dev charges the AWS base rate plus a flat 35 percent and Multi-AZ doubles that smaller number instead.
Staging ran 730 hours a month to be used for maybe 45 of them. On-demand RDS has no cheap way to park it. Hourly credit billing does: a scheduled start-stop turns staging into a weekday-hours line item without anyone remembering to flip a switch.
RDS Proxy, backup storage past the allowance and monitoring added about $42 a month, roughly 9 percent of the bill, for capabilities the team considered table stakes. On Selfhost.dev, PgBouncer pooling, metrics, alerts and PITR are part of the instance, with backup storage metered at $0.05/GB.
The migration
The move,
as it actually went.
Migrations are free and white-glove on Selfhost.dev: an engineer plans and runs the move with you, whatever the size. This one followed the standard PostgreSQL path.
Audit and shape-match
We started from the bill above, not from a sales sheet. The production instance mapped to an r7g.large (2 vCPU / 16 GB, one Graviton generation newer than RDS r6g), Multi-AZ with a synchronous standby. Staging mapped to a t4g.medium. Region stayed us-east-1, next to the app servers.
Logical replication, tested restore, then cutover
The data moved over logical replication while production stayed live and we ran a full restore test against the new instance before anyone flipped a connection string. Cutover was a connection swap with the app pointed at the new pooled endpoint.
Retire the add-on meters
RDS Proxy was replaced by the included PgBouncer pooling on port 6432. CloudWatch dashboards were replaced by built-in metrics and email and Slack alert rules. Staging went onto a weekday start-stop schedule and the whole setup is drivable from the editor over MCP.
The after table
The same stack on Selfhost.dev,
line by line.
Selfhost.dev managed PostgreSQL ยท us-east-1 ยท all-in billed rates, August 2026
| Item | Detail | $ / mo |
|---|---|---|
| Production instance | r7g.large, 2 vCPU / 16 GB Graviton3, Multi-AZ (primary + synchronous standby) | $211.09 |
| Production storage | 300 GB gp3 at $0.08/GB base, on both nodes | $64.80 |
| Connection pooling | PgBouncer included, transaction / session / statement modes | $0.00 |
| Monitoring and alerts | Live metrics, email and Slack alert rules, included | $0.00 |
| PITR WAL archive | ~100 GB at $0.03/GB | $3.00 |
| Backup snapshots | ~150 GB at $0.05/GB | $7.50 |
| Staging instance | t4g.medium + 50 GB gp3, 24/7 (before scheduling) | $38.51 |
| Public IPv4 | Added at deploy, both instances | $9.86 |
| Total | about $335 every month | $334.76 |
Selfhost.dev prices are our all-in billed us-east-1 rates as of August 2026, the same numbers the pricing calculator shows.
PITR, automated backups, PgBouncer pooling, Multi-AZ failover, metrics, alerts and database users are included with managed PostgreSQL. Backup snapshot storage bills at $0.05/GB/mo and PITR WAL at $0.03/GB/mo.
Every managed instance gets a public IPv4 at deploy, about $5/mo, itemized above. Billing is hourly against prepaid credits.
That is about $1,900 a year back, before touching staging hours.
Putting staging on a weekday schedule (about 264 hours a month instead of 730) drops the total to about $314, a 36 percent cut worth roughly $2,150 a year.
Read before you copy this
Where this math
bends the other way.
A 1-year RI trims the RDS instance rate by roughly a third in exchange for a commitment. It does not touch Proxy, backup storage, monitoring or a staging box running nights and weekends and it locks the shape for a year. We compare against on-demand because that is what this team, like most small teams without a DBA, was actually paying.
The app reaches the database over its public endpoint with IP whitelisting; result-set traffic bills at $0.15/GB. A CRUD workload moving tens of GB a month adds five to fifteen dollars, which is inside the rounding above but belongs on the table.
If you need Aurora-style storage autoscaling to tens of TB, cross-region read replicas from a console or a compliance package on paper, RDS is the deeper platform. This stack needed none of those.
Want this table for your own bill?
Two clicks get you our verified numbers for your shape. Add your setup and a founder replies personally, usually within about two working days, with the same line-by-line format you just read.
Based on this page: ยท
On now or still deciding?
What's the bill you're looking at?
Roughly how much a month, all in?
Matched to RDS, we bill 3.0x less in ap-south-1 (Mumbai) and 2.1x less in us-east-1.
2 vCPU / 4 GB with 20 GB: $24.54/mo in Mumbai, $35.27/mo in us-east-1, against an estimated $73.75/mo on RDS.
See a real RDS bill, before and after →Neon meters compute hours and sleeps. We bill one fixed hourly rate and never sleep.
{price} Same number in a quiet month and a launch month.
Price your size →Two ways off the Supabase bill and you can keep the Supabase stack.
Self-host Supabase on a project server from about $0.02/hr or move just the database to a dedicated Postgres. {price}
How self-hosted Supabase works here →An enterprise client is moving production ClickHouse to us at up to 60% less.
Worked example: off ClickHouse Cloud Scale to always-on managed ClickHouse, $891.86 to $364.03 a month, 59%.
See the ClickHouse bill, before and after →A PaaS bills per service. A project server is one bill for everything on it.
Worked example: a studio consolidated client hosting onto project servers, $390.00 to $82.66 a month, 78%.
See that bill, before and after →A managed database for as low as $5 a month. Dedicated Postgres or MySQL on AWS, with restore, pooling and Multi-AZ failover when you want it.
{price} Postgres and MySQL price the same.
Price your size →A managed database for as low as $5 a month. Dedicated Postgres or MySQL on AWS, with restore, pooling and Multi-AZ failover when you want it.
{price}
Price your size →A managed database for as low as $5 a month. Dedicated Postgres or MySQL on AWS, with restore, pooling and Multi-AZ failover when you want it.
{price} Pay-as-you-go credits, top up from $5, no plan tiers.
Price your size →Most setups map onto two shapes: dedicated databases on AWS and a project server for everything else.
{price} Project servers from about $0.02/hr.
Price your size →Under $200 a month, the calculator beats a human reply. Price it there first.
What's it for?
Where do your users mostly sit?
Dedicated managed Postgres or MySQL, with point-in-time restore, pooling and Multi-AZ failover when you want it.
{region} If you need scale-to-zero or instant branching, Neon fits better than we do.
What managed Postgres includes →Managed ClickHouse for events at volume or TimescaleDB on managed Postgres for time-series next to your app data.
Worked example: off ClickHouse Cloud Scale, $891.86 to $364.03 a month, 59%. {region}
See the ClickHouse bill, before and after →pgvector on managed Postgres: one database instead of a second vendor.
{region} TimescaleDB is one click away on the same instance if you also have time-series.
When a dedicated vector DB is worth it →A project server from about $0.02/hr: push to GitHub and it deploys, several apps and their databases on one box.
Auto-deploy on push, PR previews, custom domains. The $5 welcome credit covers the start of it, no card and you can pause it to $0.
How Projects work →Project servers: many sites per server, one bill.
Worked example: a studio consolidated client hosting, $390.00 to $82.66 a month, 78%.
See that bill, before and after →Most things fit dedicated databases on AWS plus a project server for the apps.
{region}
See it in the live demo →What are you trying to do?
Which editor?
We migrate you, free, on every plan size.
An engineer runs it with you: match the instance, replicate or dump and restore, test the restore, cut over.
See one migration, step by step →The Supabase stack, one click, on a server of your own.
One click from the template, on a project server from about $0.02/hr. Nothing to build or wire up.
The Supabase deploy guide →Paste one config and your editor can run the whole backend.
Run it once, sign in when the browser opens and all 189 tools register.
An hourly instance you pause when done.
Restore a snapshot into a second instance, point staging at it, pause it when idle.
Price a small instance →Push to GitHub and it's live: auto-deploy, PR previews, custom domains.
A project server from about $0.02/hr runs several apps and their databases.
Deploy guides by framework →The one that matters most:
A managed database for as low as $5 a month. Project servers from about $0.02 an hour.
The smallest dedicated Postgres, a t4g.nano with 1 GB, is about $5.34 a month in ap-south-1 (Mumbai) and about $6.41 in us-east-1 and the $5 welcome credit covers its first days. Pay-as-you-go credits, top up from $5, no tiers.
Price your size →When production needs help, you talk to the engineers who run it and a founder reads every request.
Outages, restores, performance issues and migrations reach the people operating the platform. No response-time promise or uptime percentage we cannot prove.
How support and recovery work →Failover, point-in-time restore and backups cover the common ways a database fails.
Multi-AZ failover is a toggle on every engine, Postgres and MySQL add point-in-time restore and all engines get automated backups, live metrics and alerts.
The reliability and recovery details →We migrate you, free. An engineer plans and runs the move with you.
Match the instance, replicate or dump and restore, test the restore, cut over. Any plan size, no extra cost.
See one migration, step by step →Run it in your own AWS account with BYOC, in the region you need.
Encryption in transit and at rest on every managed instance. We do not hold SOC 2 or HIPAA today and we will say so before you spend an hour.
What we can and cannot certify →Fair enough. The live demo is the fastest way to see it.
Or claim $5 to start, no card needed.
Watch the live demo →Our founder
You've already sent us your setup from this browser. A founder will reply to it; no need to send it twice.
Got it. I'll reply to within two working days, from my own inbox.
Noted. One note when it changes, nothing else.
Methodology
-
AWS rates are public on-demand list prices for us-east-1 from the AWS RDS pricing page, checked August 2026 and quoted per line above.
-
Selfhost.dev rates are our all-in billed rates, reproducible in the pricing calculator. Both stacks are priced at 730 hours a month, in USD.
-
Comparison is deliberately strict: Multi-AZ against Multi-AZ, same region, same storage class. Smaller stacks tend to see a larger percentage gap; see the full RDS comparison for three worked sizes.
Frequently asked questions
Would Reserved Instances have closed the gap?
Is the hardware actually comparable?
What does the migration involve?
What is included in the Selfhost.dev price and what is metered?
In short: a 14-person SaaS moved PostgreSQL from AWS RDS to Selfhost.dev managed PostgreSQL in us-east-1, Multi-AZ to Multi-AZ and the monthly database bill went from about $493 to about $335, a 32 percent reduction at list rates, reaching 36 percent once staging ran on a weekday schedule. Connection pooling, monitoring, alerts and PITR moved from paid add-ons to included features and every number is reproducible from public price sheets dated August 2026.