Database Decisions: Serverless vs Server based

The choice between Serverless (e.g., DynamoDB, Aurora Serverless) and Provisioned (e.g., RDS PostgreSQL, Cassandra on EC2) is about traffic patterns and ops burden.

Serverless Databases (DynamoDB)

  • Model: Pay per request (RCU/WCU) or On-Demand.
  • Best For: spiky traffic, unpredictable workloads, “Scale to Zero”.
  • The Win: No OS patching, no version upgrades, infinite scaling.
  • The Cost: Complex queries (Joins) are impossible or expensive. You must design your schema access patterns upfront.

Provisioned / Server-based (RDS / EC2)

  • Model: Pay per hour for CPU/RAM.
  • Best For: Consistent baseload, complex relational queries (SQL), legacy migrations.
  • The Win: Full SQL power (Joins, Aggregations), predictable monthly bill.
  • The Cost: You pay for idle time. You manage capacity planning (scaling up takes time).

The “End-to-End” Reality

In a modern AWS architecture, we often mix them:

API

Session/Config

Transactions

User

Application

DynamoDB - Serverless

Aurora PostgreSQL - Provisioned

  • DynamoDB handles the massive volume of simple reads/writes (e.g., IoT telemetry or user sessions).
  • RDS handles business-critical relational data (e.g., billing, user accounts).