You're on RDS PostgreSQL and your DBA just asked whether you should migrate to Aurora. The 5x faster writes claim sounds compelling, but Aurora PostgreSQL costs 20–40% more per vCPU and the storage pricing model changes entirely. Here's the honest breakdown for 2025.
- Aurora PostgreSQL uses a custom distributed storage layer — 6 copies across 3 AZs, instant failover (<30s)
- RDS PostgreSQL uses standard EBS storage with Multi-AZ replica — failover takes 60–120s
- Aurora costs 20–40% more per instance but storage costs $0.10/GB vs RDS gp3 at $0.115/GB
- Aurora wins on: HA requirements, read replica scale, Global Database; RDS wins on: cost, Postgres version flexibility
Architecture Differences
RDS PostgreSQL Storage
RDS uses Amazon EBS (gp3 or io1/io2) volumes attached to the EC2 instance. Multi-AZ RDS maintains a standby replica in another AZ with synchronous EBS mirroring. Failover requires promoting the standby: DNS update + application reconnection typically takes 60–120 seconds.
Aurora PostgreSQL Storage
Aurora separates compute from storage. The storage layer maintains 6 copies of data across 3 Availability Zones automatically. Writes are acknowledged when 4 of 6 copies confirm. Failover promotes a read replica to primary — typically in under 30 seconds because the new primary already has access to all data via the shared storage volume.
Feature Comparison
| Feature | RDS PostgreSQL | Aurora PostgreSQL |
|---|---|---|
| Engine versions | All community PG versions | Subset (typically 1-2 versions behind) |
| Failover time | 60–120s (Multi-AZ) | <30s (in-cluster replica) |
| Read replicas | Up to 5 | Up to 15 |
| Max storage | 64TB (gp3) | 128TB (auto-grows) |
| Storage autoscaling | Opt-in | Automatic, always-on |
| Global Database | No | Yes (multi-region, <1s replication) |
| Serverless option | No | Aurora Serverless v2 |
| Backtrack (undo commits) | No | Yes (up to 72h) |
Cost Comparison (db.r8g.xlarge, us-east-1, 500GB)
| Component | RDS PostgreSQL | Aurora PostgreSQL |
|---|---|---|
| Instance (On-Demand) | $0.440/hr | $0.519/hr |
| Multi-AZ standby instance | $0.440/hr | Included in storage |
| Storage (500GB) | $57.50/mo (gp3) | $50.00/mo ($0.10/GB) |
| I/O costs | None (gp3 included) | $0.20 per 1M I/O requests |
| Monthly estimate | ~$695 | ~$420 + I/O |
Aurora's per-I/O pricing adds up quickly for write-heavy workloads. A database doing 1,000 writes/second adds $1,728/month in I/O charges alone ($0.20 per 1M requests * 86.4M requests/day * 30 days). Always model I/O costs before migrating write-heavy workloads to Aurora standard (not Aurora Serverless v2 which has no per-I/O charges).
When to Choose Aurora
- You need failover under 30 seconds (SLA requirements)
- You need more than 5 read replicas for read scaling
- You need cross-region replication with Aurora Global Database
- Your storage grows unpredictably and you want automatic scaling
- You need Aurora Serverless v2 for variable-load workloads
When to Stick with RDS
- You need a specific PostgreSQL version Aurora doesn't support yet
- Your workload is write-heavy and per-I/O costs would be significant
- 60–120 second failover is acceptable for your SLA
- You want the simplest, most predictable cost model
- Aurora wins on HA (<30s failover), read scalability (15 replicas), and Global Database — but costs 18% more per instance.
- Aurora's per-I/O pricing makes write-heavy workloads significantly more expensive — always model I/O before migrating.
- RDS gp3 storage is simpler to cost-model and better for write-heavy workloads; Aurora storage auto-grows with no provisioning required.
- For new greenfield deployments needing HA, Aurora PostgreSQL is often the better default. For migrations, model the I/O cost first.
Working with JusDB on RDS and Aurora
JusDB evaluates RDS vs Aurora for engineering teams planning PostgreSQL deployments on AWS. We model your actual I/O patterns, failover requirements, and cost projections to make the right infrastructure choice — and handle the migration if you're switching.