CertNote/ Commute Study Notes
Roadmap
KOEN
CLF-C02 · FoundationalCloud Practitioner - Foundational
DVA-C02 · AssociateDeveloper - Associate
SAA-C03 · AssociateSolutions Architect - Associate
  • Week 1
    • 1.The Map of AWS Infrastructure: Regions, AZs, and the Promise Called Shared Responsibility
    • 2.IAM Fundamentals: Who Gets to Do What
    • 3.IAM Deep Dive: STS, Permissions Boundaries, and the Shadow of the Confused Deputy
    • 4.AWS Organizations, SCP, Control Tower: The Skeleton of Multi-Account Governance
    • 5.Week 1 Review: Fundamentals and IAM, Hardened Through Scenarios
  • Week 2
  • Week 3
  • Week 4
  • Week 5
    • 1.RDS: What It Means to Run a Relational Database in the Cloud
    • 2.Aurora: The Relational Database AWS Redesigned From Scratch
    • 3.DynamoDB: What It Means to Design in a Schema-less World
    • 4.ElastiCache and In-Memory Data Stores: The Physics of Speed
    • 5.Week 5 Review: The Art of Choosing a Database
  • Week 6
  • Week 7
  • Week 8
  • Week 9
  • Week 10
  • Week 11
  • Week 12
SOA-C02 · AssociateCloudOps Engineer - Associate
SAP-C02 · ProfessionalSolutions Architect - Professional
DOP-C02 · ProfessionalDevOps Engineer - Professional
Linux Master 2 · 2급KAIT Linux Master - Level 2
SCS-C03 · SpecialtySecurity - Specialty
Linux Master 1 · 1급KAIT Linux Master - Level 1
MLA-C01 · AssociateMachine Learning Engineer - Associate
AIF-C01 · FoundationalAI Practitioner - Foundational
DEA-C01 · AssociateData Engineer - Associate
MLS-C01 · SpecialtyMachine Learning - Specialty
SQLD · 개발자SQL Developer (SQLD)

© CertNote · 주간랩스

  • About
  • Changelog
  • Contact
  • Terms
  • Privacy
← SAA-C03/Week 5/Day 5

Based on the SAA-C03 exam guide·Report an error

SAA-C03· AssociateWeek 5 · Day 5~45 min read

Day 5 - Week 5 Review: The Art of Choosing a Database

The database services covered in Week 5 were each built to solve a different problem. RDS runs traditional relational DBs without the management burden; Aurora overcomes the limits of relational DBs through storage redesign; DynamoDB serves hundreds of millions of items in milliseconds without a schema; ElastiCache delivers repeated reads at memory speed. Today is the day to firmly organize how these services are tested on the exam.

Most exam questions come in the form "which would you choose in this scenario?" The key is finding the reason one option — while several may look technically possible — is better than the rest. To find that "better reason," you must understand each service's design purpose and constraints from the inside. This is exactly why you need to understand why things were designed the way they were, not just memorize the technology.

Core Summary of the Week

RDS — The Two Axes of the Managed Relational DB

RDS's exam core is the difference between Multi-AZ and Read Replicas. These two features were built for completely different purposes, yet they're often confused. Multi-AZ is an HA (high availability) tool that maintains a Standby via synchronous replication and automatically promotes the Standby to Primary on failure. A Read Replica is a tool that creates read-only copies via asynchronous replication to distribute read traffic.

Evidence that the two features serve different purposes: the Standby handles no traffic in normal times. It exists solely for automatic failover (60-120s) on a Primary failure. A Read Replica receives read traffic through a separate endpoint. Its failover requires a manual promote and takes minutes to tens of minutes.

RDS Proxy solves two problems, each in a different way. It provides connection pooling for clients like Lambda that create bursty, high-volume connections, and it shortens the client's connection-switching time during a Multi-AZ failover.

FeaturePurposeReplication MethodFailoverReadsCost
Multi-AZHA (high availability)SynchronousAutomatic (60-120s)Standby can't serve reads2×
Read ReplicaRead scalingAsynchronousManual promotePossible (separate endpoint)Additional per Replica
RDS ProxyConnection poolingN/AFailover accelerationN/AA fraction of instance cost

💡 Why RDS Multi-AZ synchronous replication works even with 1-2ms lag — The reason RDS Multi-AZ synchronous replication works well despite 1-2ms inter-AZ latency lies in the commit pattern of database transactions. In OLTP systems, most transactions complete in milliseconds. Even adding a 1-2ms inter-AZ RTT, the total transaction completion time stays at the millisecond level, so users don't feel much delay. In contrast, an inter-region RTT (e.g., Seoul-Tokyo about 35ms) seriously affects OLTP transactions. This is the basis for the design decision that "inter-region synchronous replication is impossible," and the reason Aurora Global Database chose asynchronous replication at the storage layer.

Aurora — The Difference Shared Storage Makes

Aurora's differentiator is shared distributed storage. 6 copies, 3 AZs, 4/6 Quorum writes. The practical differences this structure creates:

  • Failover within 30 seconds: The storage stays alive, so you only need to connect a new Writer instance to the storage. There's no need for time to let the Standby apply the Redo Log, as with RDS.
  • Up to 15 Read Replicas: All Readers read from the shared storage, so there's no separate EBS per Replica. You can add Readers with no additional storage cost.
  • Replication Lag usually much less than 100 ms: Because it's shared storage, there's no "replication" itself. The Readers read from the shared storage, so they see the same data almost simultaneously with the Writer.

Aurora Global Database replicates across regions at the storage layer to achieve < 1 second lag. RDS Cross-Region Read Replica replicates at the DB engine layer (binlog/WAL), so its lag is longer.

[Aurora shared storage structure]
Writer EC2 (AZ-a)    Reader EC2 (AZ-b)    Reader EC2 (AZ-c)
     │                     │                     │
     └─────────────────────┴─────────────────────┘
                           │
                    Shared distributed storage
               (6 copies / 3 AZs / automatic recovery)
                AZ-a: Copy 1, Copy 2
                AZ-b: Copy 3, Copy 4
                AZ-c: Copy 5, Copy 6
              4/6 Quorum write / 3/6 Quorum read

DynamoDB — Partition Design Is All of Performance

The single most important concept in DynamoDB is partition key design. If a Hot Partition occurs, you can mitigate it with Adaptive Capacity, but fundamentally you must redesign the partition key.

ConceptKey Fact
Partition keyEven distribution + High Cardinality required
WCUOne 1KB write = 1 WCU (transactions are ×2)
RCUOne 4KB strongly consistent read = 1 RCU, eventual consistency is ×0.5
LSISame PK, different SK. Added only at creation. Strong consistency possible
GSIDifferent PK. Added any time. Eventual consistency only
DAXDynamoDB-only cache. Applied with just an SDK change. Microseconds
Global TablesMulti-region active-active. LWW conflict resolution. ~1s replication
Streams24-hour change log. Follow-up processing via Lambda event source mapping
On-DemandWhen traffic is unpredictable. Per-request billing
Provisioned+ASWhen traffic is stable. Cost optimization
PITRSecond-level recovery within 35 days. Restores only to a new table

💡 Choosing Week 5 services through the CAP theorem — Database selection is a practical application of the CAP theorem (Brewer, 2000). RDS Multi-AZ chooses CP (Consistency + Partition Tolerance) within the same region. DynamoDB eventual consistency chooses AP (Availability + Partition Tolerance). Aurora Global Database's Primary region is CP, while its Secondary regions are closer to AP with eventual consistency. MemoryDB for Redis strongly guarantees C with its durability guarantee (Multi-AZ WAL). Which trade-off you choose based on business requirements is the core of the architecture decision. A distributed system that always satisfies "CA" is impossible by the CAP theorem.

Choosing a Cache — Positioning the 4 Tools

ElastiCache Redis, Memcached, DAX, and MemoryDB each solve a different problem.

ToolSuitable ScenarioKey Distinguishing Keywords
ElastiCache RedisSessions, leaderboards, Pub/Sub, general cacheRich data structures, Multi-AZ HA
ElastiCache MemcachedSimple String cache, multi-threaded CPU efficiencySimple, no HA needed
DAXMicrosecond acceleration of DynamoDB readsDynamoDB-only, SDK change only
MemoryDB for RedisLossless durability + Redis APIDurability, Redis as the main DB

Easily Confused Comparisons — Fully Sorted Out

Here we sort out, all at once, the pairs most frequently confused on the exam.

Multi-AZ vs Read Replica:

  • If HA is the goal, Multi-AZ. Automatic failover, synchronous replication, Standby doesn't take reads.
  • If read scaling is the goal, Read Replica. Asynchronous replication, separate endpoint, manual promote.
  • If the scenario shows "availability," "automatic failure recovery," "minimize downtime," it's Multi-AZ. If it shows "read load," "performance improvement," "regional reads," it's Read Replica.

Aurora vs RDS:

  • "15 Replicas," "30-second failover," "< 1s cross-region replication," "auto-scaling for fluctuating traffic" → Aurora
  • "Oracle/SQL Server/MariaDB engine required," "cost savings top priority," "stable workload" → plain RDS

GSI vs LSI:

  • Can be added after table creation and a completely different PK → GSI (eventual consistency only)
  • Keeps the same PK, needs strong consistency, and added at table creation → LSI

DAX vs ElastiCache:

  • DynamoDB-only and needs only an SDK change → DAX
  • Caching various sources (RDS, Aurora, API results) or sessions/Pub/Sub → ElastiCache Redis

MemoryDB vs ElastiCache Redis:

  • Data loss on failure is absolutely unacceptable → MemoryDB
  • Loss is acceptable and used as a cache → ElastiCache Redis

Aurora Global Database vs RDS Cross-Region Read Replica:

  • < 1s replication lag, storage-layer replication, managed failover on the order of minutes → Aurora Global DB
  • General-purpose engines (MySQL, PG, Oracle, etc.), seconds of lag acceptable → RDS Cross-Region RR

DynamoDB Global Tables vs Aurora Global DB:

  • Writes needed in all regions (active-active), NoSQL → DynamoDB Global Tables
  • Relational + writes only in the Primary region, read distribution → Aurora Global DB

📚 The Capital One security incident and DB architecture lessons — The 2019 Capital One data breach (exposure of 106 million people's personal information) was an IAM and EC2 metadata-service security problem rather than a database design one. Yet the incident reminded us how important RDS encryption, KMS key management, placement in private subnets within a VPC, and least-privilege principles are. Placing RDS in a public subnet, granting excessive IAM permissions, or disabling encryption became the causes of real incidents. On the SAA-C03 exam too, "put the DB in a private subnet, enable encryption, least-privilege IAM" is always the correct security answer.

Integrated Architecture — This Is How It's Actually Used

In reality, these services aren't used in isolation; they form layers and work together.

[ Multi-layered data architecture of an e-commerce platform ]

Mobile/Web
     │
     ▼
CloudFront (edge cache — static content, some API responses)
     │
     ▼
API Gateway (HTTP API) → Lambda
                              │
     ┌────────────────────────┤
     │                        │
     ▼                        ▼
DAX → DynamoDB          ElastiCache Redis
(order/inventory events) (session/real-time inventory)
     │                        │
     │ Streams                │ Cache-Aside
     ▼                        │
Lambda → OpenSearch      RDS Proxy
(search indexing)             │
                             ▼
                      Aurora Multi-AZ
                      (user/product relational data)
                             │ Global DB (<1s replication)
                             ▼
                      Aurora Secondary (us-east-1)
                      (read distribution for overseas users)

[ Analytics pipeline ]
Aurora → DMS → Redshift (nightly OLAP analytics)
DDB → S3 Export → Athena (serverless queries)
CloudWatch Logs → Firehose → OpenSearch (real-time log analytics)

The role of each service in this architecture:

  • CloudFront: Static content, caching some API responses
  • ElastiCache Redis: Login sessions, real-time inventory-count cache (read often, changed occasionally)
  • DynamoDB + DAX: Order history, click events (write-heavy, flexible schema, microsecond reads)
  • DynamoDB Streams → Lambda → OpenSearch: Automatically update the search index on order insertion
  • Aurora: User accounts, product catalog, relational data
  • OpenSearch: Product search, log analytics, Dashboards visualization
  • Redshift: Nightly batch OLAP analytics, BI dashboards

🔍 Data access pattern analysis comes first — Questions you must answer before designing an architecture: (1) What's the read-to-write ratio? (2) Is the traffic pattern predictable? (3) What are the response-latency requirements? (4) Is the data model relational or Key-Value? (5) Are there global users? (6) What's the tolerable data-loss level (RPO)? (7) What's the tolerable downtime level (RTO)? Answer these 7 questions and the service choice is almost automatically determined. SAA-C03 exam questions also emphasize one or more of these 7 dimensions to guide you to the answer.

Choices From a Cost-Optimization Perspective

SAA-C03 also covers the Cost Optimization Pillar (20%). Cost perspectives in database selection:

RDS vs Aurora: Aurora costs about 20% more. "Scenarios where Aurora is justified for the same MySQL/PostgreSQL workload" are when the failover requirement is within 30 seconds, many Readers are needed (Aurora allows up to 15 per cluster), global replication is needed, or traffic fluctuates.

On-Demand vs Provisioned: DynamoDB On-Demand is up to 4× more expensive than Provisioned for stable traffic. Workloads with predictable traffic are cost-efficient with Provisioned + Auto Scaling.

ElastiCache cache: If the cache hit rate is 90%+, the cache lets you shrink the DB instance size, so overall cost drops. Setting the TTL too short lowers the hit rate.

Aurora I/O-Optimized: If I/O cost is 25%+ of the total, the I/O-Optimized pricing plan is favorable. It converts to a flat I/O cost.

ElastiCache Reserved Nodes: A 1-year or 3-year reservation saves up to 55% versus on-demand. For a stable cache workload, Reserved is favorable.

⚠️ Why instance upsizing is the last resort — "Upgrade to a bigger instance" isn't always right. Read load is solved more cost-efficiently by a Read Replica, connection-count problems by RDS Proxy, repeated reads by ElastiCache, and DynamoDB reads by DAX. Instance upsizing is the last resort. On the exam, when an "increase the instance size" option appears, first check whether there's a more precise solution (Proxy, Read Replica, Cache).

Service Comparison From a DR Perspective

Here we organize how the Week 5 services play their roles in disaster recovery (DR).

ServiceRPORTOMechanism
RDS Multi-AZ~0 (synchronous)60-120sAutomatic DNS Failover
Aurora Multi-AZ~0 (shared storage)Within 30sReader → Writer promotion
Aurora Global DB< 1sOn the order of minutesManual/automatic Promote
DynamoDB (single region)~0 (PITR)~minutesNew-table recovery
DynamoDB Global Tables~1s~0 (other region already serving)Endpoint switch
ElastiCache Redis Multi-AZSeconds (async)Seconds (automatic Failover)Read Replica promotion
MemoryDB for Redis~0 (WAL synchronous)SecondsAutomatic recovery

📝 Practice Questions

Click a choice to reveal the answer and explanation.

Question 1

A startup launches a new social media app. Traffic was 100 RPS a day, then suddenly surged to 50,000 RPS after going viral. The DB is PostgreSQL. To handle this traffic without service interruption:

Question 2

An online banking system stores account transaction records. Every transaction must be recorded immutably for audit purposes, and queries computing the balance at an arbitrary point in the past are needed. What is the most suitable service?

Question 3

You're building a game leaderboard system. You must store millions of scores in real time and handle "look up the top 100" and "look up a specific user's rank" within tens of ms. What is the most suitable service?

Question 4

On an Aurora MySQL cluster, an analytics team frequently runs OLAP queries that affect the OLTP workload. To solve this with minimal additional cost:

Question 5

A company consumes a very large amount of RCU on a DynamoDB table. Analyzing the access pattern reveals that 80% of all reads are concentrated on the same 100 items. What is the most cost-efficient solution?

Question 6

Regular maintenance (OS/engine patching) is scheduled on a Multi-AZ RDS MySQL. To minimize downtime while this work runs:

Question 7

In a message feed app, each user must be able to see the latest messages from the people who follow them. Messages are chronological, and you must quickly fetch "the 50 most recent messages in a specific user's feed." If using DynamoDB, what is the table design?

Question 8

An application currently using RDS PostgreSQL has no DBA and wants to automate OS patching, DB patching, backups, and Multi-AZ setup going forward. Which option reduces the most operational burden while maintaining existing PostgreSQL compatibility?

Question 9

In a delivery app, you must store each rider's current location and handle "look up available riders within a 5km radius" in real time. What is the most suitable service?

Question 10

A Lambda-based microservice uses Aurora MySQL. At peak traffic, Lambda concurrency reaches 500 and Aurora starts emitting "max_connections" errors. What is the most suitable solution?

Question 11

A company collects temperature, pressure, and humidity data from 1 million IoT devices per second. Each device sends 1 record per second. To efficiently store this data and quickly look up "a specific device's temperature trend over the past 24 hours":

Question 12

A SaaS platform accessed by users in 150 countries worldwide stores user settings data. Writes and reads occur simultaneously in each region, and a "last write wins" policy is acceptable on settings conflict. What is the most suitable service?

PreviousElastiCache and In-Memory Data Stores: The Physics of SpeedWeek 5 · Day 4Next Lambda: What It Really Means to Run Code Without a ServerWeek 6 · Day 1

Official references

  • SAA-C03 official exam page(opens in a new tab)
  • Amazon RDS · Aurora documentation(opens in a new tab)
  • Amazon DynamoDB documentation(opens in a new tab)
  • Amazon ElastiCache documentation(opens in a new tab)
  • AWS Lambda documentation(opens in a new tab)
  • Amazon OpenSearch Service documentation(opens in a new tab)

On this page

  • Core Summary of the Week
  • RDS — The Two Axes of the Managed Relational DB
  • Aurora — The Difference Shared Storage Makes
  • DynamoDB — Partition Design Is All of Performance
  • Choosing a Cache — Positioning the 4 Tools
  • Easily Confused Comparisons — Fully Sorted Out
  • Integrated Architecture — This Is How It's Actually Used
  • Choices From a Cost-Optimization Perspective
  • Service Comparison From a DR Perspective
  • Scenario Practice Questions