AWS DVA-C02 마스터 노트 시리즈 4편. RDS 6엔진과 Read Replica vs Multi-AZ 차이, Aurora 5리전 글로벌 DB와 6복사본, ElastiCache Redis vs Memcached 결정적 차이, DynamoDB 파티션 키 설계와 GSI vs LSI, DAX 캐싱·Streams·TTL까지 자격증 시험 단골 토픽을 한 흐름으로.
이 글은 AWS DVA-C02 마스터 노트 시리즈의 네 번째 편입니다. 3편(스토리지)에서 정적 데이터를 잡았다면, 이번엔 동적 데이터 — RDS·Aurora·ElastiCache·DynamoDB 4가지.
DynamoDB는 자격증 시험 단골 중의 단골이에요. 파티션 키 설계·GSI·DAX·Streams 모두 시나리오 문제로 자주 등장.
RDS — 관계형 DB
회사 비유 — AWS가 운영을 대신 봐 주는 관계형 DB. 백업·패치·HA를 AWS가 처리.
6 엔진
| 엔진 | 비고 |
|---|---|
| MySQL | 가장 많이 쓰임 |
| PostgreSQL | 고급 기능·표준 |
| MariaDB | MySQL 포크 |
| Oracle | 라이선스 BYOL |
| SQL Server | 라이선스 BYOL |
| Aurora | AWS 자체 (별도 토픽) |
Read Replica vs Multi-AZ — 결정적 차이
| 구분 | Read Replica | Multi-AZ |
|---|---|---|
| 목적 | 읽기 확장 | 고가용성 (HA) |
| 동기화 | 비동기 | 동기 |
| 사용 가능 | 읽기 쿼리 가능 | 쿼리 불가 (대기) |
| Failover | X | 자동 (장애 시 60-120초) |
| 다른 리전 | 가능 | 같은 리전 다른 AZ |
| 개수 | 최대 5 (DB당, MySQL/PostgreSQL) | 1 (Standby) |
여기서 정말 중요한 시험 함정 — Multi-AZ Standby는 쿼리 불가입니다. 단지 대기 상태로 장애 시 자동 전환. 읽기 부하 분산을 원하면 Read Replica.
비유로 잡기
- Multi-AZ = "보험. 본사 건물 터지면 백업 사옥으로 즉시 전환. 평시엔 아무도 안 들어감."
- Read Replica = "분점. 본사 + 분점 5개. 손님이 분점에서 책 읽기 가능 (수정은 본사만)."
백업
- 자동 백업 — 일일 스냅샷 + 트랜잭션 로그, 1~35일 보존
- 수동 스냅샷 — 사용자 트리거, 영구 보존
PITR (Point-In-Time Recovery) — 5분 단위 시점 복구.
보안
- 저장 암호화 (KMS)
- 전송 암호화 (SSL/TLS)
- IAM 인증 (MySQL·PostgreSQL)
- VPC Security Group
Aurora — AWS 자체 엔진
MySQL·PostgreSQL 호환. AWS가 클라우드 네이티브로 다시 짠 DB.
결정적 특징
- 6 복사본 — 3개 AZ에 각 2개 (자동, 비용에 포함)
- 15 Read Replica (RDS는 5)
- 64TB 자동 스케일 (RDS는 사전 할당)
- Failover < 30초 (Multi-AZ보다 빠름)
- Backtrack — 백업 없이 시간 되돌리기
Aurora Serverless
자동 시작·정지·스케일. 사용한 만큼 과금. 워크로드 예측 어려울 때.
Aurora Global Database
여러 리전에 글로벌 DB.
Primary (서울) ←→ Replica (도쿄, 1초 지연)
←→ Replica (싱가포르)
←→ Replica (도쿄·런던 등 최대 5 리전)
리전 장애 시 다른 리전을 1분 안에 Primary로 승격.
여기서 정말 중요한 시험 함정 — Aurora의 6복사본 = "3개 도시에 두 부씩 보관". 한 AZ 통째로 날아가도 데이터 손실 X.
ElastiCache — 인메모리 캐시
회사 비유 — 공용 사물함. DB 부하를 줄이는 캐시.
Redis vs Memcached — 결정적 차이
| 구분 | Redis | Memcached |
|---|---|---|
| 데이터 구조 | 풍부 (List·Set·Hash·Sorted Set) | 단순 (key/value) |
| 영속성 | AOF·RDB 백업 가능 | 없음 (휘발) |
| 복제·HA | Multi-AZ + 자동 Failover | 없음 |
| Pub/Sub | 지원 | X |
| 멀티 스레드 | X (단일 스레드) | O |
| 적합 | 캐시·게임 리더보드·세션 | 단순 캐시 |
여기서 정말 중요한 시험 함정 — Redis = 영속성·HA, Memcached = 멀티 스레드 단순 캐시. 시나리오 키워드로 분기.
캐싱 전략
| 패턴 | 설명 |
|---|---|
| Lazy Loading (Cache-Aside) | 캐시 miss → DB 조회 → 캐시 저장 |
| Write-Through | 쓰기 시 DB와 캐시 동시 |
| Write-Behind | 캐시만 쓰고 DB는 비동기 |
# Lazy Loading 예시
def get_user(user_id):
user = cache.get(user_id)
if not user:
user = db.query(user_id)
cache.set(user_id, user, ttl=3600)
return user
TTL (Time-To-Live)
캐시 자동 만료. Stale 데이터 방지.
DynamoDB — NoSQL의 핵심
회사 비유 — 자판기 단지. 사번(파티션 키) 입력하면 즉시 정보 나옴. 자동 분산·확장.
핵심 특징
- 완전 관리형 NoSQL
- 단일 자릿수 ms 지연
- 무제한 확장 (자동)
- HTTP API (다른 DB는 별도 프로토콜)
키 설계
Primary Key:
- Partition Key (HASH) — 필수
- Sort Key (RANGE, 선택) — 같은 파티션 내 정렬
여기서 정말 중요한 시험 함정 — 파티션 키는 균등 분산되어야 합니다. 한 키에 트래픽 몰리면 hot partition으로 throttle. 사용자 ID·UUID처럼 균등 분포한 값이 좋고, 날짜·"All" 같은 단일 값은 X.
용량 모드
| 모드 | 설명 |
|---|---|
| Provisioned | RCU·WCU 미리 예약, Auto Scaling 가능 |
| On-Demand | 사용량 기반, 트래픽 예측 어려울 때 |
RCU·WCU = Read·Write Capacity Units.
인덱스
| 종류 | 설명 |
|---|---|
| GSI (Global Secondary Index) | 다른 파티션 키 가능, 별도 RCU/WCU |
| LSI (Local Secondary Index) | 같은 파티션 키, 다른 정렬 키, 테이블 생성 시만 |
여기서 시험 함정이 하나 있어요. LSI는 테이블 생성 시만 만들 수 있어요. 나중에 추가 X. GSI는 언제든.
DAX — DynamoDB 캐시
DynamoDB 전용 캐시. 마이크로초 지연. 코드 변경 없이 적용.
앱 → DAX (캐시) → DynamoDB
여기서 시험 함정이 하나 있어요. DAX는 DynamoDB 전용입니다. 다른 DB에 못 씀. ElastiCache와 차이.
Streams
테이블 변경(INSERT·UPDATE·DELETE)을 실시간 스트림.
DynamoDB Streams → Lambda → 다른 시스템 동기화
24시간 보존. CDC(Change Data Capture)에 사용.
TTL
특정 컬럼 시간 기준으로 자동 삭제.
expirationTime: 1735689600 (2025-01-01 00:00 UTC)
→ 시간 도달 시 자동 삭제
세션·임시 데이터에 유용.
Transactions
여러 항목·테이블 ACID 보장.
TransactWriteItems — 최대 25 항목
TransactGetItems — 최대 25 항목
여기서 시험 함정이 하나 있어요. 트랜잭션은 일반 쓰기 RCU/WCU의 2배 소비. 비용 인식.
DocumentDB
MongoDB 호환. 일반 시나리오엔 DynamoDB가 우선이지만 MongoDB 코드 그대로 쓰고 싶을 때.
Neptune
그래프 DB. 소셜 네트워크·추천·지식 그래프.
Redshift
데이터 웨어하우스 (OLAP). 분석용. OLTP는 RDS·Aurora.
RDS·Aurora·DynamoDB·ElastiCache 비교
| 구분 | RDS | Aurora | DynamoDB | ElastiCache |
|---|---|---|---|---|
| 타입 | RDB | RDB (AWS) | NoSQL | 인메모리 |
| 스케일 | 수직 | 수직+수평 (Read) | 수평 (자동) | 수직+수평 |
| HA | Multi-AZ | 6복사본 자동 | 자동 분산 | Redis Multi-AZ |
| 적합 | 표준 OLTP | 클라우드 OLTP | 단순 키 조회 | 캐시·세션 |
시험 직전 한 번 더 — 자주 헷갈리는 함정 모음
여기까지가 4편의 핵심입니다. 시험 직전 또는 실무에서 헷갈릴 때 다시 펼쳐 볼 수 있게 압축 노트로 마무리할게요.
- RDS 6 엔진 — MySQL / PostgreSQL / MariaDB / Oracle / SQL Server / Aurora
- Multi-AZ = 보험 (쿼리 불가) / Read Replica = 분점 (읽기 가능)
- Multi-AZ 동기 / Read Replica 비동기
- Read Replica 최대 5 (DB당)
- 자동 백업 1~35일 / PITR 5분 단위
- Aurora 6복사본 — 3 AZ × 2개 (3개 도시 두 부씩)
- Aurora Read Replica 최대 15 / 64TB 자동 스케일
- Aurora Failover < 30초 / Backtrack 백업 없이 되돌리기
- Aurora Global DB — 5 리전 / 1초 지연 / 1분 Failover
- ElastiCache Redis vs Memcached 결정적 차이
- Redis = 영속성·HA·자료구조 / Memcached = 멀티 스레드·단순
- 캐싱 전략 — Lazy Loading / Write-Through / Write-Behind
- TTL = 자동 만료
- DynamoDB = 완전 관리형 NoSQL, ms 지연, HTTP API
- 파티션 키 = HASH (균등 분산 필수)
- Hot Partition 방지 — 단일 값·날짜 X, UUID·user_id ◯
- 용량 — Provisioned (예약) / On-Demand (사용량)
- GSI = 다른 파티션 키 / LSI = 같은 파티션, 다른 정렬
- LSI는 테이블 생성 시만 / GSI는 언제든
- DAX = DynamoDB 전용 캐시, μs 지연
- Streams = 변경 캡처, Lambda 트리거, 24h 보존
- TTL = 특정 시간 도달 시 자동 삭제
- Transactions — 25 항목, RCU/WCU 2배 비용
- DocumentDB (MongoDB) / Neptune (그래프) / Redshift (DW·OLAP)
시리즈 다른 편
- 1편 — IAM·STS·Cognito
- 2편 — 컴퓨팅 (EC2·Lambda·Beanstalk)
- 3편 — 스토리지 (S3·EBS·EFS)
- 4편 — 데이터베이스 (현재 글)
- 5편 — 네트워킹 (VPC·CloudFront·API Gateway)
- 6편 — 메시징 (SQS·SNS·Kinesis)
- 7편 — 서버리스 (Lambda·SAM·Step Functions)
- 8편 — CI/CD
- 9편 — 모니터링
- 10편 — 보안·암호화
- 11편 — 컨테이너
- 12편 — 개발자 도구
공식 문서: AWS DynamoDB Developer Guide에서 더 깊이 갈 수 있어요.
다음 글(5편)에서는 네트워킹 — VPC 서브넷·IGW·NAT, CloudFront 엣지 캐싱, API Gateway 인증·Throttling, Route 53 라우팅 정책 7종까지 풀어 갑니다.