Amazon Aurora: AWS's PostgreSQL & MySQL on Steroids

TL;DR

Amazon Aurora is AWS’s cloud-native relational database — PostgreSQL and MySQL compatible but with 3x the performance and enterprise features like Global Database and Serverless v2. It’s the default choice for new applications on AWS: better performance than RDS, similar pricing, and features like instant cloning and continuous backup to S3. The catch: only PostgreSQL and MySQL (no SQL Server/Oracle), and some edge-case compatibility issues exist. For most new projects, choose Aurora over RDS.


What Is It?

Amazon Aurora is a fully managed, cloud-native relational database compatible with MySQL and PostgreSQL.

Architecture

┌─────────────────────────────────────────────────────────────┐
│                     Aurora Cluster                           │
│                                                              │
│   ┌─────────────────────────────────────────────────────┐   │
│   │              Shared Storage Layer                    │
│   │     (6-way replication across 3 AZs)                 │
│   │              10 GB → 128 TB auto-scale               │
│   └─────────────────────────────────────────────────────┘   │
│                          │                                   │
│          ┌───────────────┼───────────────┐                  │
│          ▼               ▼               ▼                  │
│   ┌──────────────┐ ┌──────────────┐ ┌──────────────┐       │
│   │   Writer     │ │  Reader 1    │ │  Reader 2    │       │
│   │   Instance   │ │  Instance    │ │  Instance    │       │
│   └──────────────┘ └──────────────┘ └──────────────┘       │
│                                                              │
│   Features:                                                  │
│   ├── Auto-scaling storage (10 GB → 128 TB)                 │
│   ├── Up to 15 read replicas                                │
│   ├── Instant failover (< 30 seconds)                       │
│   └── Continuous backup to S3                               │
└─────────────────────────────────────────────────────────────┘

Aurora Variants

Variant Engine Use Case
Aurora PostgreSQL PG 15, 14, 13 Enterprise apps
Aurora MySQL MySQL 8.0, 5.7 Web apps
Aurora Serverless v2 Both Variable workloads
Aurora Global Database Both Multi-region DR

Key Advantages Over RDS

Feature Aurora RDS
Performance 3x throughput Baseline
Storage scaling Auto (128 TB) Manual (64 TB)
Read replicas 15, sub-second lag 5, async
Failover <30 seconds 60-120 seconds
Backtrack Yes (rewind time) No

Pricing

On-Demand Pricing (db.r6g.large, us-east-1)

Component Price/Month
Instance ~$350
Storage $0.10/GB (auto-scaled)
I/O $0.20/million requests

Aurora Serverless v2

Resource Price
ACU ( Aurora Capacity Unit) $0.12/hour
1 ACU = 2 GiB memory + corresponding CPU  

Scaling: 0.5 ACU → 128 ACU (256 GB RAM)

Cost Comparison

Workload Aurora RDS
Steady-state Similar Similar
Variable/spiky Cheaper (Serverless) Expensive (over-provision)
High I/O More expensive Cheaper

GCP Alternative: Cloud SQL + AlloyDB

Feature Aurora AlloyDB Winner
Base PostgreSQL/MySQL PostgreSQL only Aurora
Columnar storage No Yes AlloyDB
Performance claim 3x PostgreSQL 4x PostgreSQL AlloyDB
Price Similar Similar Tie

AlloyDB Advantage


Azure Alternative: Azure SQL Database

Feature Aurora Azure SQL Hyperscale
Storage 128 TB 100 TB
Serverless Yes Yes
Multi-region Global Database Auto-failover groups
PostgreSQL Yes Flexible Server

Real-World Use Cases

Use Case 1: High-Traffic Web App

Challenge: 100K queries/second, global users

Architecture:

Global Users → Route 53
                    ↓
        ┌───────────┴───────────┐
        ↓                       ↓
   us-east-1               eu-west-1
   Aurora Global           Aurora Global
   (Primary)               (Secondary)
        ↓                       ↓
   Read replicas (5)      Read replicas (5)

Use Case 2: Variable Microservices

Challenge: Spiky traffic, can’t predict load

Solution:

Microservices → Aurora Serverless v2
                      ├── Scales 0.5-64 ACU
                      ├── Pay per second
                      └── No connection limits

Use Case 3: Instant Dev/Test Clones

Challenge: Fresh database for each PR

Solution:

Production Aurora ──→ Aurora Clone
                          └── Copy-on-write
                          └── Zero storage cost initially

The Catch

1. Limited Engine Support

2. I/O Costs

3. Compatibility Edge Cases

4. No Graviton for Some Versions


Verdict

Grade: A

Best for:

When to choose over RDS:

When to use RDS instead:


Researcher 🔬 — Staff Software Architect