Currently viewing the human version
Switch to AI version

Why RDS Exists (And When You Actually Need It)

AWS RDS Multi-AZ Setup

I've been running databases on RDS for 4 years now, and here's the reality: RDS is what you use when you want to sleep at night instead of getting paged about database issues.

The Problem RDS Actually Solves

Look, running your own database on EC2 seems cheaper until your primary goes down at 2am on a Saturday and you realize you never properly tested your failover scripts. Been there, done that, got the therapy bills.

RDS handles the shit you forget about:

  • OS patches that break everything: They test compatibility first
  • Backups that actually work: Unlike my "clever" cron job that failed silently for 3 months
  • Failover that doesn't suck: Multi-AZ actually works (usually under 60 seconds)
  • Storage that doesn't fill up: Auto-scaling saved my ass more times than I'll admit
  • Security patches: Applied during maintenance windows instead of emergency 3am deploys

The catch? It costs about 40% more than doing it yourself. But unless you enjoy explaining to your CTO why the database is down, it's worth it.

What Databases You Can Actually Run

RDS supports six engines, but here's what I've learned using them in production:

AWS Aurora Icon

Aurora - AWS's custom MySQL/PostgreSQL. Expensive as hell but fast. The storage auto-scales so you won't wake up to a full disk, and failover actually works. Don't use Aurora Serverless v1 - it's garbage. v2 is decent but still has cold start issues.

PostgreSQL Elephant Logo

PostgreSQL - The good choice. Handles JSON like a champ, has sane defaults, and version 16 finally fixed the parallel query issues. Avoid versions 12-13 if you can - they have memory leak problems under heavy load.

MySQL - Works fine for most stuff. Don't upgrade to 8.4 yet - it breaks half the ORMs. Stick with 8.0 for now. The binary logging changes in 8.4 will fuck up your replication.

MySQL Dolphin Logo

MariaDB - MySQL but better. Columnstore is actually useful for analytics. If you're stuck on MySQL, consider this instead.

Oracle - Expensive but bulletproof. Licensing costs more than your car payment. Only use if you're already committed to the Oracle ecosystem or have compliance requirements.

SQL Server Logo

SQL Server - Decent if you're in Microsoft-land. Express edition is fine for small apps, but you'll hit the 10GB limit faster than you think.

How RDS Actually Works (The Shit They Don't Tell You)

There are three ways to run RDS, and each has gotchas:

Single-AZ - One database in one data center. Cheap but risky. When AWS has an outage (and they will), you're fucked. Good for dev/test, terrible for anything that matters. I learned this the hard way when us-east-1 went down and took our staging environment with it.

Multi-AZ - Two databases, one active, one standby. Costs double but actually works. Failover usually takes 60-120 seconds, not the "seconds" AWS claims. The standby is invisible - you can't read from it, which is annoying. But when your primary goes down, you'll be glad it exists.

Multi-AZ DB Clusters - The new hotness with readable standbys. Faster failover (actually under 35 seconds) and you can read from the standbys. Costs even more but worth it for critical workloads. Only available for MySQL and PostgreSQL, Oracle users are still stuck with regular Multi-AZ.

Performance Reality Check

RDS performance depends on three things: instance size, storage type, and whether you configured it right:

Instance Classes - Start with r6i for anything serious. r7i is newer but costs 20% more for marginal gains. Don't use t3/t4g instances for production - they're burstable, which means unpredictable performance when you need it most. Learned this during Black Friday when our t3.large started throttling.

Storage Types - gp3 is the default choice. It's fast enough and cheaper than the old gp2. Don't use io2 unless you're actually hitting IOPS limits - it's expensive and most apps don't need 256k IOPS. Magnetic storage is deprecated for good reason - it's slow as shit.

Read Replicas - Up to 15 replicas sounds great until you realize replication lag can be 200ms+ during heavy writes. Cross-region replicas are worse - expect 500ms+ lag. Don't route critical reads to replicas unless you can handle stale data. PostgreSQL logical replication is better but requires more setup.

Security (And the Gotchas You'll Hit)

RDS security is pretty good out of the box, but there are things that'll bite you:

Network Setup - Always put RDS in private subnets. If your database is internet-accessible, you fucked up. Security groups are your friend - default deny everything, then open specific ports. Don't use 0.0.0.0/0 unless you enjoy explaining data breaches to your boss.

Encryption - Enable it from day one. You can't encrypt an existing database without a migration. KMS keys cost pennies, but forgetting encryption will cost you compliance headaches later. SSL/TLS is on by default but your app still needs to use it.

Access Control - IAM database authentication sounds cool but it's a pain to set up. Most people stick with database passwords stored in Secrets Manager. Auto-rotation works but test it first - I've seen it break apps that cache connections.

Compliance - RDS covers SOC, PCI, HIPAA, etc. but YOU still need to configure it right. AWS gives you the tools, not the implementation. Passed a SOC audit last year - the auditors care more about your processes than AWS's certifications.

Pro tip: auditors will ask for your encryption key rotation logs. Set up CloudTrail for KMS events before your audit, not during.

2025 Reality Check - Performance Insights is getting killed on November 30, 2025. AWS is pushing everyone to CloudWatch Database Insights instead. Start planning the migration now because the replacement costs more.

Bottom line: RDS handles the infrastructure security so you can focus on screwing up the application security instead.

RDS vs The Competition (Reality Check Edition)

Feature

AWS RDS

Google Cloud SQL

Azure SQL Database

Oracle Cloud

Reality Check

Database Engines

Aurora, PostgreSQL, MySQL, MariaDB, Oracle, SQL Server

MySQL, PostgreSQL, SQL Server

SQL Server, MySQL, PostgreSQL

Oracle, MySQL

AWS has the most options but Aurora costs 2x regular RDS

Multi-AZ/HA

Multi-AZ instances + clusters

Regional persistent disks

Availability Zones + replicas

Data Guard

AWS Multi-AZ works but costs double. Google's is simpler

Read Replicas

Up to 15 per source

Up to 10 per source

Up to 5 per source

Up to 30 per source

More replicas = more lag. 5 is usually enough

Backup Retention

0-35 days

1-365 days

7-35 days

1-60 days

Google wins here. AWS 35-day limit is annoying

Instance Scaling

Manual (vertical)

Manual + auto

Serverless options

Manual

Azure's serverless actually works. AWS Aurora Serverless v1 sucked

Storage

gp3, io2

SSD, HDD

Premium, Standard, Ultra

Block, file, object

AWS gp3 is solid. Don't pay for io2 unless you need it

Max Storage

128 TB

64 TB

4 TB (single DB)

32 TB

Azure's 4TB limit will bite you. AWS/Google better for big DBs

Failover Time

60-120 seconds

60-120 seconds

30-60 seconds

30-60 seconds

These are marketing numbers. Add 30-60s to whatever they claim

Performance Tools

Insights (dying Nov 2025)

Built-in

Built-in

Built-in

AWS killing Performance Insights is bullshit

Cost

Expensive

Cheaper for small DBs

Complex pricing

Expensive

Google is cheapest. Oracle will bankrupt you

The Cost Reality and Migration Horror Stories

RDS Architecture Diagram

RDS Pricing Will Surprise You (Not in a Good Way)

RDS looks cheap until you actually deploy it. Here's what a real production setup costs:

What AWS Marketing Shows:

  • db.t4g.micro: $13/month
  • "Only pay for what you use!"
  • "Cost-effective managed service!"

What You Actually Pay:

  • db.r6i.large (real production size): $165/month base
  • Multi-AZ (because you're not stupid): Double it to $330/month
  • 500GB gp3 storage: $60/month
  • Backup storage (you have backups, right?): $50/month
  • Total: $440/month for a medium database

And that's before data transfer costs. Cross-AZ traffic is $0.01/GB, which seems small until you realize your app hits the database a lot. My last bill had $200 in data transfer charges I didn't expect.

Ways to Not Go Broke:

Performance Reality (Forget the Marketing Benchmarks)

Vendor benchmarks are bullshit. Here's what I've seen in actual production:

PostgreSQL 16 on r6i.large (our setup):

  • Handles 500 concurrent users just fine
  • Simple queries: 2-5ms average (not sub-millisecond like they claim)
  • Complex reports that join 5+ tables: 100-500ms
  • Failover during last AWS outage: 90 seconds, not 35

Aurora MySQL (r6i.xlarge cluster):

  • Fast reads when you hit the buffer pool
  • Writes are slower than regular MySQL because of the storage layer
  • Storage auto-scaling is great until you see the bill
  • Failover works but prepared statements get dropped

The Real Performance Killers:

  • Connection limits: PostgreSQL maxes at 100 connections on small instances
  • gp3 IOPS burst limits: Your database slows down during busy periods
  • Cross-AZ latency: 1-2ms added to every query with Multi-AZ
  • Backup windows: I/O performance drops during automated backups

Migration Reality (AKA How to Ruin Your Weekend)

Migrating to RDS is never as simple as AWS makes it sound. Here's what actually happens:

"Simple" Lift-and-Shift (Same Database Engine):
AWS says it's easy. They lie. Even moving MySQL to MySQL RDS breaks things:

Real timeline: Plan 2 weeks, budget 6 weeks for debugging

Database Engine Migration (The Nightmare):

AWS DMS Architecture

AWS DMS and Schema Conversion Tool claim to automate everything. In reality:

  • SCT converts 80% of your schema automatically
  • That other 20% takes 80% of your time
  • Stored procedures get mangled beyond recognition
  • Every ORM query needs testing because SQL dialects differ

Real timeline: 6+ months. Seriously. Don't trust anyone who says less.

The Migration That Actually Worked:

  • Started with a read replica in RDS
  • Gradually moved read traffic over
  • Tested failover scenarios obsessively
  • Migrated writes during a planned maintenance window
  • Had a rollback plan (used it twice)

Production Gotchas (The Stuff That Breaks at 3am)

Running RDS in production teaches you things AWS docs don't mention:

Connection Pooling is Mandatory:
PostgreSQL on RDS defaults to 100 connections. Your app will die. Use pgbouncer or RDS Proxy (which adds 50ms latency but whatever).

Parameter Groups Will Save Your Ass:
Default parameters suck. Create custom parameter groups:

Monitoring That Actually Matters:

The Limitations They Don't Advertise

RDS solves a lot of problems but creates new ones:

You Can't Access the Underlying Server:
Forget about custom extensions, kernel tuning, or direct file access. Need a custom PostgreSQL extension? Too bad. Want to tune shared memory? Nope. You get what AWS gives you.

Maintenance Windows Suck:
OS patches require restarts. Database updates require restarts. AWS picks the time, you deal with the downtime. Blue/green deployments help but cost double during the migration.

Storage IOPS Throttling:
gp3 storage throttles after you burst your baseline IOPS. Your database slows down during busy periods and you won't know why. io2 storage costs 30% more but at least it's predictable.

Cross-AZ Costs Add Up:
Multi-AZ doubles your instance costs AND adds data transfer charges. Every query between AZs costs money. Put your app and database in the same AZ when possible.

2025 Updates (The Good and the Bullshit)

What's Actually Useful:

What's Annoying:

  • Performance Insights is dying November 30, 2025
  • Replacement "Database Insights" costs more and does less
  • Zero-ETL integration with Redshift exists but requires Aurora (expensive)

Version Deprecations to Watch:

  • Don't use t2/m4/r4 instances - they're being phased out
  • MySQL 5.7 support ends soon, upgrade to 8.0
  • PostgreSQL 12/13 have known memory issues, use 14+

Bottom line: RDS is still the least-bad option for managed databases. Just don't believe the marketing hype.

Questions Nobody Asks (But Should)

Q

Should I use RDS or just run my database on EC2?

A

Short answer:

Use RDS unless you have a really good reason not to. Real answer: I spent 2 years managing PostgreSQL on EC 2.

It sucked. RDS costs 40% more but saves you from:

  • Weekend maintenance windows
  • Manual backup disasters
  • Security patches that break everything
  • 3am phone calls when your database is down Only use EC2 if you need custom extensions, special kernel tuning, or you're really strapped for cash.
Q

Why is my RDS bill so damn high?

A

Because RDS pricing is designed to confuse you:

  • That $165/month r6i.large becomes $330 with Multi-AZ
  • 500GB storage costs $60/month
  • Backup storage (500GB × 7 days) = another $200/month
  • Data transfer between AZs = surprise $100 charges Total: $690/month for what AWS advertises as a "$165 database"
Q

Can I migrate without breaking everything?

A

Maybe. Here's what actually works:

  • Same database engine:

Usually fine, but test parameter differences

  • Different engines: Plan 6+ months and budget for pain
  • DMS works for simple schemas but chokes on complex stuff
  • Always have a rollback plan (you'll need it) (used mine twice in 6 months)
Q

What happens when RDS shits the bed?

A

Single-AZ: You're fucked for 10-15 minutes while AWS rebuilds your instance Multi-AZ: Failover "usually" works in 60-120 seconds, but I've seen 5+ minute outages during AWS region issues Aurora: Fastest recovery but costs twice as much. Still goes down during major AWS outages.

Q

How do I handle more traffic without going broke?

A

Vertical scaling: Easy but expensive and requires downtime Read replicas: Great for reads, useless for writes. Replication lag will bite you. Aurora auto-scaling: Works but the bills will surprise you Connection pooling: Use pgbouncer or RDS Proxy. RDS Proxy adds latency but handles failover better.

Q

Is RDS secure enough for healthcare/financial data?

A

Probably. RDS has the compliance checkboxes (SOC, PCI, HIPAA, etc.) but YOU still need to configure it right:

  • Put databases in private subnets (duh)
  • Enable encryption at rest from day one (can't add it later without migration)
  • Use SSL/TLS connections (not automatic in your app)
  • Security groups should deny everything by default Passed a HIPAA audit using RDS last year. Auditors care more about your procedures than AWS's certifications.
Q

Should I use Aurora or regular RDS?

A

Aurora if you can afford it, regular RDS if you can't. Aurora pros:

  • Actually faster (not 5x faster, but noticeably faster)

  • Storage auto-scales so no midnight disk-full alerts

  • Better failover times Aurora cons:

  • Costs 2x more than regular RDS

  • Aurora Serverless v1 was garbage (v2 is usable)

  • Vendor lock-in to AWS

Q

How long should I keep backups?

A

AWS lets you keep backups for 35 days max, which is usually enough.

The real question is cost

  • backup storage adds up fast:

  • 1TB database × 35 days = $3,300/month in backup storage

  • Most people use 7-14 days and rely on monthly manual snapshots

  • Cross-region backup copies cost even more

Q

Can I use RDS for analytics?

A

No. RDS sucks for data warehousing:

  • OLTP databases aren't designed for analytical queries
  • You'll kill your production performance running reports
  • Use Redshift for real analytics workloads Aurora has "parallel query" but it's marketing fluff for simple aggregations.
Q

What maintenance headaches should I expect?

A

AWS handles OS patches but you still get screwed:

  • Maintenance windows cause brief outages (plan for 5-10 minutes)
  • Major version upgrades require testing (they WILL break something)
  • Blue/green deployments work but cost double during migration
  • Parameter group changes require restarts Pro tip: Always test upgrades on a dev environment first.
Q

Do read replicas actually work?

A

Yes, but with gotchas:

  • Replication lag is 100-500ms in practice (not 50ms like AWS claims)
  • Cross-region replicas have even worse lag
  • Your app needs to handle stale data
  • Failover to a replica takes manual intervention They're great for scaling reads, terrible for disaster recovery.

Resources That Don't Suck

Related Tools & Recommendations

pricing
Recommended

How These Database Platforms Will Fuck Your Budget

competes with MongoDB Atlas

MongoDB Atlas
/pricing/mongodb-atlas-vs-planetscale-vs-supabase/total-cost-comparison
100%
compare
Recommended

PostgreSQL vs MySQL vs MariaDB vs SQLite vs CockroachDB - Pick the Database That Won't Ruin Your Life

competes with cockroachdb

cockroachdb
/compare/postgresql-mysql-mariadb-sqlite-cockroachdb/database-decision-guide
85%
compare
Recommended

MongoDB vs PostgreSQL vs MySQL: Which One Won't Ruin Your Weekend

built on mysql

mysql
/compare/mongodb/postgresql/mysql/performance-benchmarks-2025
74%
tool
Recommended

Google Cloud SQL - Database Hosting That Doesn't Require a DBA

MySQL, PostgreSQL, and SQL Server hosting where Google handles the maintenance bullshit

Google Cloud SQL
/tool/google-cloud-sql/overview
65%
tool
Recommended

PlanetScale - MySQL That Actually Scales Without The Pain

Database Platform That Handles The Nightmare So You Don't Have To

PlanetScale
/tool/planetscale/overview
59%
pricing
Recommended

Our Database Bill Went From $2,300 to $980

alternative to Supabase

Supabase
/pricing/supabase-firebase-planetscale-comparison/cost-optimization-strategies
59%
alternatives
Recommended

Neon's Autoscaling Bill Eating Your Budget? Here Are Real Alternatives

When scale-to-zero becomes scale-to-bankruptcy

Neon
/alternatives/neon/migration-strategy
59%
tool
Recommended

Neon Database Production Troubleshooting Guide

When your serverless PostgreSQL breaks at 2AM - fixes that actually work

Neon
/tool/neon/production-troubleshooting
59%
tool
Recommended

Neon - Serverless PostgreSQL That Actually Shuts Off

PostgreSQL hosting that costs less when you're not using it

Neon
/tool/neon/overview
59%
alternatives
Recommended

Your MongoDB Atlas Bill Just Doubled Overnight. Again.

competes with MongoDB Atlas

MongoDB Atlas
/alternatives/mongodb-atlas/migration-focused-alternatives
56%
tool
Recommended

MongoDB Atlas Vector Search - Stop Juggling Two Databases Like an Idiot

competes with MongoDB Atlas Vector Search

MongoDB Atlas Vector Search
/tool/mongodb-atlas-vector-search/overview
56%
integration
Recommended

Supabase + Next.js + Stripe: How to Actually Make This Work

The least broken way to handle auth and payments (until it isn't)

Supabase
/integration/supabase-nextjs-stripe-authentication/customer-auth-payment-flow
56%
tool
Recommended

Supabase - PostgreSQL with Bells and Whistles

alternative to Supabase

Supabase
/tool/supabase/overview
56%
tool
Recommended

Supabase Auth: PostgreSQL-Based Authentication

alternative to Supabase Auth

Supabase Auth
/tool/supabase-auth/authentication-guide
56%
tool
Recommended

Datadog Cost Management - Stop Your Monitoring Bill From Destroying Your Budget

integrates with Datadog

Datadog
/tool/datadog/cost-management-guide
56%
pricing
Recommended

Datadog vs New Relic vs Sentry: Real Pricing Breakdown (From Someone Who's Actually Paid These Bills)

Observability pricing is a shitshow. Here's what it actually costs.

Datadog
/pricing/datadog-newrelic-sentry-enterprise/enterprise-pricing-comparison
56%
pricing
Recommended

Datadog Enterprise Pricing - What It Actually Costs When Your Shit Breaks at 3AM

The Real Numbers Behind Datadog's "Starting at $23/host" Bullshit

Datadog
/pricing/datadog/enterprise-cost-analysis
56%
news
Popular choice

Anthropic Raises $13B at $183B Valuation: AI Bubble Peak or Actual Revenue?

Another AI funding round that makes no sense - $183 billion for a chatbot company that burns through investor money faster than AWS bills in a misconfigured k8s

/news/2025-09-02/anthropic-funding-surge
56%
news
Popular choice

Docker Desktop Hit by Critical Container Escape Vulnerability

CVE-2025-9074 exposes host systems to complete compromise through API misconfiguration

Technology News Aggregation
/news/2025-08-25/docker-cve-2025-9074
53%
tool
Popular choice

Yarn Package Manager - npm's Faster Cousin

Explore Yarn Package Manager's origins, its advantages over npm, and the practical realities of using features like Plug'n'Play. Understand common issues and be

Yarn
/tool/yarn/overview
51%

Recommendations combine user behavior, content similarity, research intelligence, and SEO optimization