CertNote/ 출퇴근 학습 노트
로드맵
KOEN
CLF-C02 · FoundationalCloud Practitioner - Foundational
DVA-C02 · AssociateDeveloper - Associate
  • Week 1
    • 1.개발자 시점에서 본 AWS: 리전, 인프라, 그리고 책임의 경계
    • 2.IAM의 4대 엔터티: User, Group, Role, Policy
    • 3.STS와 정책 조건: 임시 자격증명의 깊은 세계
    • 4.AWS CLI와 SDK: 자격증명 체이닝부터 SigV4까지
    • 5.Week 1 종합: 인프라와 IAM이 만드는 신뢰의 사슬
  • Week 2
  • Week 3
  • Week 4
  • Week 5
  • Week 6
  • Week 7
    • 1.RDS: 관리형 RDBMS의 두 얼굴, Multi-AZ와 Read Replica
    • 2.RDS의 보안·백업·모니터링: Capital One 사고가 남긴 교훈들
    • 3.ElastiCache: 인메모리 캐시는 어떻게 DB를 살리는가
    • 4.Aurora: AWS가 RDBMS의 스토리지 레이어를 다시 쓴 이야기
    • 5.Week 7 종합: 데이터 계층 의사결정의 모든 것
  • Week 8
  • Week 9
  • Week 10
  • Week 11
  • Week 12
  • Week 13
SAA-C03 · AssociateSolutions Architect - Associate
SOA-C02 · AssociateCloudOps Engineer - Associate
SAP-C02 · ProfessionalSolutions Architect - Professional
DOP-C02 · ProfessionalDevOps Engineer - Professional
SCS-C03 · SpecialtySecurity - Specialty
MLA-C01 · AssociateMachine Learning Engineer - Associate
AIF-C01 · FoundationalAI Practitioner - Foundational
DEA-C01 · AssociateData Engineer - Associate
MLS-C01 · SpecialtyMachine Learning - Specialty
합격 후기

© CertNote · 주간랩스

  • 소개
  • 수정 기록
  • 문의
  • 이용약관
  • 개인정보처리방침
← DVA-C02/Week 7/Day 5

기준: DVA-C02 시험 가이드·오류 제보

DVA-C02· AssociateWeek 7 · Day 5읽기 약 23분

Day 5 - Week 7 종합: 데이터 계층 의사결정의 모든 것

이번 주는 AWS의 데이터 계층 3대 축 — RDS, ElastiCache, Aurora — 를 통과했다. 각각이 다른 문제를 풀고, 다른 trade-off를 가진다는 걸 봤다. RDS는 관계형 DB의 운영 부담을 AWS에 위임하는 1세대 관리형 DB, Aurora는 그 한 단계 위에서 스토리지·복제 레이어를 클라우드 네이티브로 재설계한 2세대, ElastiCache는 그 둘 위에서 인메모리 캐시 계층을 제공하는 보완재다.

DVA-C02 시험의 데이터 영역 문제는 정해진 틀이 있다. "이런 요구사항(가용성, latency, 비용, 확장성, 일관성)이 주어졌을 때 어느 서비스를 어떻게 구성하나"를 시나리오로 묻는다. 오늘은 이번 주 내용을 시나리오 중심으로 다시 묶고, 12문항의 실전 시나리오로 종합 점검한다.

의사결정 프레임워크: 데이터 계층 선택 5단계

production에서 데이터 계층을 결정할 때 거치는 사고 흐름은 다음 5단계다. 시험 시나리오 분석에도 그대로 적용된다.

1단계: 데이터 모델
  └─ 관계형(JOIN, 트랜잭션 필요)        → RDS / Aurora
  └─ 키-값 (단일 entity 조회 위주)      → DynamoDB / ElastiCache
  └─ 문서·시계열·그래프 등             → DocumentDB / Timestream / Neptune

2단계: 일관성 요구
  └─ Strong consistency (ACID 필요)    → RDS / Aurora / MemoryDB
  └─ Eventual consistency 허용         → DynamoDB / ElastiCache Replica

3단계: latency 요구
  └─ μs (마이크로초)                   → ElastiCache / MemoryDB / DAX
  └─ ms (밀리초 한 자리)                → Aurora primary / DynamoDB
  └─ 수 ms ~ 수십 ms                   → RDS / Aurora Replica / S3

4단계: 가용성·DR 요구
  └─ Single AZ OK                      → 기본 RDS Single-AZ
  └─ AZ 장애 자동 복구 (RTO 분 단위)    → RDS Multi-AZ
  └─ Cross-region DR (RTO 분 단위)      → Aurora Global / DynamoDB Global Tables

5단계: 비용 모델
  └─ 안정 트래픽                       → Reserved Instance (~50-70% 절감)
  └─ 변동 트래픽                       → Aurora Serverless v2 / DynamoDB On-Demand
  └─ 개발/스테이징                     → Single-AZ + Reserved (or Serverless auto-pause)

RDS·ElastiCache·Aurora 비교: 같은 질문 다른 답

"고가용성"에 대한 세 서비스의 답

서비스메커니즘페일오버 시간RPO
RDS Multi-AZ Instance블록 동기 복제 (1 standby)60-120초~0
RDS Multi-AZ Cluster동기 quorum (2 readable standby)35초 이하~0
ElastiCache Redis Multi-AZPrimary-Replica + sentinel60초 이하replica lag
Aurora Multi-AZ6 사본 quorum30초 이하~0
Aurora Global Databaseredo log shipping (cross-region)수 분 (managed failover)1초 미만

"읽기 확장"에 대한 세 서비스의 답

서비스메커니즘최대 개수복제 lag
RDS Read Replicabinlog/WAL 비동기15 (MySQL/PG/MariaDB)초 ~ 분
ElastiCache Redis ReplicaRedis replication5 per shardms
Aurora Replicaredo log 알림 (공유 스토리지)15보통 100ms보다 훨씬 짧음

"비밀번호/키 관리"에 대한 답

도구보호 대상회전RDS 호환
AWS KMS데이터 암호화 키자동 (1년)✅ at-rest
Secrets Manager비밀번호, API 키자동 (Lambda 또는 native)✅
IAM DB Authentication비밀번호 자체 제거N/A (15분 토큰)✅ MySQL/PG
Parameter Store일반 설정값 (SecureString도 가능)수동△ (가능하지만 회전 없음)

시험 함정 15가지 정리

헷갈리기 쉬운 함정을 모았다.

  1. Multi-AZ Standby는 읽기 불가 — 단 Multi-AZ Cluster Deployment(2022~)는 readable standby 2개 제공
  2. 암호화 전환 = 스냅샷 → KMS copy → restore — direct modify 불가
  3. 자동 백업 0일 설정 시 PITR/Read Replica 생성 모두 차단
  4. IAM DB Auth 토큰 = 15분 SigV4, SSL 필수
  5. DB 삭제 시 자동 백업은 함께 삭제 (Final Snapshot 옵션 필수), 수동 스냅샷은 유지
  6. Read Replica 쓰기 직후 조회 = stale data (Read-Your-Writes 위반 가능)
  7. Aurora Replica 자동 페일오버 < 30초, RDS Multi-AZ는 60-120초
  8. Aurora 스토리지 = 3 AZ × 2 사본 = 6, W=4 R=3
  9. Aurora Serverless v1은 분 단위 + 콜드 스타트, v2는 세밀한 단위 + 스케일링 중 작업 중단 없음(auto-pause 재개 시 약 15초)
  10. Redis Cluster Mode Disabled는 단일 샤드 — 한 노드 메모리가 한도
  11. Memcached는 영속성·백업·Multi-AZ·복제 모두 없음
  12. Redis Sorted Set = 리더보드 정답 (ZADD/ZREVRANK O(log N))
  13. DAX는 DynamoDB 전용, ElastiCache는 범용 (서로 못 바꿈)
  14. RDS Proxy = Lambda + RDS connection storm 해결책 1순위
  15. Aurora Backtrack = MySQL only, 72시간 in-place (PITR과 다른 메커니즘)

⚠️ 함정 예시 1 — 자동 백업 보존 기간 0일: 자동 백업을 "끄고 싶다"는 의도로 보존 기간을 0일로 설정하면 그 순간 PITR이 불가능해지고 Read Replica 생성도 막힌다. 시험 문제: "Read Replica 생성 시도가 실패하는 원인은?" → 자동 백업 비활성화. 해결책: 보존 기간 1일 이상으로 설정.

⚠️ 함정 예시 2 — Aurora vs RDS Read Replica 최대 개수: Aurora 클러스터는 Aurora Replica 최대 15개이고, RDS도 MySQL/PostgreSQL/MariaDB/SQL Server는 소스당 최대 15개다. Oracle은 엔진별 문서를 따른다. 시험에서 "RDS Read Replica 최대 개수"라는 단순 문제가 나오면 엔진을 보고 답해야 한다.

실전 패턴: 시나리오 매핑

시나리오 키워드답
"Lambda + RDS + connection 폭증"RDS Proxy
"비밀번호 자동 회전 + 무중단"Secrets Manager rotation
"비밀번호 자체를 코드에서 제거"IAM DB Authentication
"DROP TABLE 즉시 복구 (Aurora MySQL)"Backtrack
"DROP TABLE 어제 데이터 복구"PITR
"DB 삭제 후에도 백업 유지"수동 스냅샷 / Final Snapshot
"쿼리 wait event 분석"Performance Insights
"OS 프로세스 단위 모니터링"Enhanced Monitoring
"리더보드/순위 캐싱"Redis Sorted Set
"여러 EC2 인스턴스 간 세션 공유"ElastiCache Redis
"DynamoDB 캐시"DAX
"글로벌 RDBMS + 1초 미만 lag"Aurora Global Database
"글로벌 NoSQL + 멀티 마스터"DynamoDB Global Tables
"간헐적 RDB 트래픽 + 자동 확장"Aurora Serverless v2
"PII 저장 + 감사 로그 1년"Audit log → CloudWatch Logs + KMS
"랜섬웨어 방어 백업"AWS Backup Vault Lock (WORM)
"Multi-AZ인데 standby에서 읽고 싶다"Multi-AZ Cluster Deployment
"Aurora replica 부하 한 노드에만 몰림"DNS TTL/connection 유지 문제, RDS Proxy 또는 cluster-aware client
"CA 인증서 만료로 connection 실패"RDS CA rotation, 트러스트 스토어 갱신
"마이크로초 latency + DB 수준 durability"MemoryDB for Redis

알아두면 좋은 cross-service 패턴

패턴 1: "고성능 OLTP + 분석 격리 + DR"

Production 서울:
  Aurora MySQL Multi-AZ
    ├── Writer endpoint → OLTP 트래픽
    ├── Reader endpoint → 일반 read
    └── Custom endpoint (큰 인스턴스 2개) → 분석 워크로드 격리

DR 도쿄:
  Aurora Global Database secondary
    └── Read-only, region 내 latency 최소화
    └── Primary region 다운 시 promote (RTO 수 분)

캐시 계층:
  ElastiCache Redis Cluster Mode Enabled (서울)
    ├── 세션 데이터
    ├── 인기 상품 정보 (Lazy Loading + TTL 5분)
    └── 리더보드 (Sorted Set)

비밀 관리:
  Secrets Manager + RDS Proxy (Lambda function 측)
  KMS CMK로 스토리지/스냅샷/Secrets 모두 암호화

이 한 구성에 이번 주 개념 대부분이 들어간다.

패턴 2: "스타트업 MVP에서 production까지 진화"

Phase 1 (MVP):
  RDS MySQL Single-AZ db.t3.micro + 로컬 in-memory 캐시 (라이브러리)

Phase 2 (트래픽 증가):
  RDS MySQL Multi-AZ db.t3.medium + ElastiCache Redis (세션, 인기 데이터)

Phase 3 (확장):
  Aurora MySQL Multi-AZ + Aurora Replica 3개 + ElastiCache Redis Cluster
  RDS Proxy 도입 (Lambda 함수가 늘어남에 따라)

Phase 4 (글로벌):
  Aurora Global Database (서울 + 도쿄)
  CloudFront + S3 static asset CDN
  ElastiCache Replica를 각 region에

패턴 3: "Compliance 강화 환경"

- RDS at-rest 암호화 (KMS CMK, 회사 소유 키)
- TLS 강제 (rds.force_ssl=1)
- IAM DB Auth + Secrets Manager (인간 사용자는 IAM, 애플리케이션은 Secrets Manager + RDS Proxy)
- Audit log → CloudWatch Logs (KMS 암호화) → 1년 보존 → S3 archive
- AWS Backup Vault Lock으로 백업 WORM 보호
- VPC private subnet only, NAT Gateway 없음 (egress 차단)
- CloudTrail 데이터 이벤트 활성화

HIPAA, PCI-DSS, ISO 27001 같은 인증을 받는 환경에서 쓰는 구성 예시다.

비용 관점: Reserved Instance와 Serverless의 손익분기

옵션약정 기간비용 절감
On-Demand없음0% (기준)
1년 Standard RI No Upfront1년약 30%
1년 Standard RI All Upfront1년약 38%
3년 Standard RI All Upfront3년약 60%
Aurora Serverless v2 (안정 트래픽)없음-20% (오히려 비쌈)
Aurora Serverless v2 (간헐 트래픽)없음50-80% (사용 안 할 땐 0 ACU)

"비용 최적화" 시나리오에서는 트래픽 패턴이 안정적이면 Reserved Instance, 변동적이면 Serverless가 답이다. 변동의 기준은 "사용량이 시간대별로 5배 이상 차이" 정도로 보며, 그 미만이면 RI가 유리하다.

CLI/SDK 빠른 참조

# RDS 생성 (Multi-AZ + 암호화 + IAM 인증)
aws rds create-db-instance \
  --db-instance-identifier prod-mysql \
  --db-instance-class db.r6g.large \
  --engine mysql --master-username admin \
  --master-user-password "$(aws secretsmanager get-random-password --output text --query RandomPassword)" \
  --allocated-storage 100 --storage-type gp3 \
  --multi-az --storage-encrypted \
  --enable-iam-database-authentication \
  --backup-retention-period 14 \
  --enable-cloudwatch-logs-exports '["audit","error","general","slowquery"]'
 
# Aurora Cluster 생성 (Global Database 준비)
aws rds create-global-cluster --global-cluster-identifier my-global \
  --engine aurora-mysql
aws rds create-db-cluster --db-cluster-identifier my-primary \
  --engine aurora-mysql --global-cluster-identifier my-global \
  --master-username admin --master-user-password ... 
aws rds create-db-instance --db-instance-identifier my-primary-instance \
  --db-cluster-identifier my-primary --db-instance-class db.r6g.large \
  --engine aurora-mysql
 
# Secondary region에 추가
aws rds create-db-cluster --region us-east-1 \
  --db-cluster-identifier my-secondary \
  --engine aurora-mysql --global-cluster-identifier my-global
 
# ElastiCache Redis Cluster Mode Enabled
aws elasticache create-replication-group \
  --replication-group-id prod-cache \
  --replication-group-description "production cache" \
  --engine redis --cache-node-type cache.r7g.large \
  --num-node-groups 3 --replicas-per-node-group 2 \
  --automatic-failover-enabled --multi-az-enabled \
  --at-rest-encryption-enabled --transit-encryption-enabled \
  --auth-token "$(aws secretsmanager get-random-password ...)"
 
# RDS Proxy 생성
aws rds create-db-proxy \
  --db-proxy-name my-proxy \
  --engine-family MYSQL \
  --auth '[{"AuthScheme":"SECRETS","SecretArn":"arn:aws:secretsmanager:..."}]' \
  --role-arn arn:aws:iam::123456789012:role/rdsproxyrole \
  --vpc-subnet-ids subnet-aaa subnet-bbb \
  --require-tls

정리

이번 주 내용은 두 가지로 압축된다.

  • "관계형 vs 키-값", "강일관성 vs 최종일관성", "동기 복제 vs 비동기 복제" 같은 분산 시스템의 근본 trade-off가 AWS 데이터 서비스 선택에 그대로 투영된다.
  • 같은 문제(가용성, 확장성, latency)에 RDS/Aurora/ElastiCache가 각자 다른 답을 가지며, 시험은 그 답들 중 "주어진 제약에서 가장 적절한 하나"를 묻는다.

다음 주는 NoSQL — DynamoDB — 로 넘어간다. DynamoDB는 RDS와 거의 정반대 철학(샤딩 자동, 강일관성 옵션, 무제한 확장, 관계형 모델 포기)을 가진 서비스다. 이번 주 RDS/Aurora를 이해하면 DynamoDB의 "왜 그렇게 다르게 설계됐나"가 훨씬 잘 보인다.


📝 Week 7 종합 실전 시나리오 12문항

📝 연습 문제

선택지를 클릭하면 정답·해설이 펼쳐집니다.

문제 1

한 SaaS 회사가 production RDS MySQL을 운영 중이다. Lambda 함수 500개가 burst 트래픽 시 동시 호출되어 "Too many connections" 에러가 발생하고, 동시에 보안팀이 "비밀번호를 코드에 두지 말 것 + 자동 회전 + connection 안정성" 세 요구를 모두 요구한다. 가장 적절한 구성은?

문제 2

한 핀테크 회사가 다음을 모두 만족하는 RDS 구성을 원한다: ① RPO ≈ 0 ② standby에서 분석 쿼리 실행 가능 ③ 페일오버 시간 < 60초. 가장 적합한 옵션은?

문제 3

ElastiCache Redis Cluster Mode Enabled에서 한 핫 키(인기 상품 ID)에 트래픽이 집중되어 한 샤드의 CPU가 100%이고 다른 샤드는 5%다. 가장 효과적인 해결책은?

문제 4

한 회사가 Aurora MySQL을 사용 중인데, 개발자가 production DB에 DELETE FROM orders WHERE created_at > '2024-01-01'를 실수로 실행했다. 가장 빠른 복구 방법은? (사고 직후 30분 이내)

문제 5

한 게임 회사가 글로벌 사용자를 대상으로 실시간 리더보드를 운영한다. 다음 요구를 모두 만족해야 한다: ① 1억 명 점수 정렬 ② 특정 유저 순위 조회 < 10ms ③ 점수 업데이트 초당 10만 회. 가장 적합한 구성은?

문제 6

한 의료 SaaS가 RDS PostgreSQL에 PHI(Protected Health Information)를 저장한다. HIPAA 감사 요건상 ① 저장 데이터 KMS 회사 키 암호화 ② TLS 강제 ③ "누가 어떤 쿼리를 실행했는지" 1년 보존 ④ 백업 WORM 보호. 누락된 것 한 가지는 무엇인가? 다음 중 적용해야 할 항목을 모두 선택: (A) pgaudit extension 활성화 + CloudWatch Logs export (B) rds.force_ssl=1 파라미터 (C) KMS CMK(고객 관리 키)로 인스턴스 암호화 (D) AWS Backup Vault Lock 활성화

문제 7

한 e-commerce가 Aurora MySQL에 ElastiCache Redis로 상품 정보 캐싱을 구현했다. Lazy Loading + 1시간 TTL을 사용. 그런데 운영팀이 "상품 가격을 변경해도 1시간 동안 옛 가격이 보인다"고 보고한다. 가장 적절한 해결책은?

문제 8

한 회사가 Aurora MySQL을 도쿄에서 운영 중이다. 글로벌 사용자가 늘면서 미국·유럽에서도 read latency가 50ms 이하여야 하고, 도쿄 region 다운 시 자동으로 다른 region으로 promote 가능해야 한다. 적절한 구성은?

문제 9

한 스타트업이 개발/스테이징 환경 RDS 비용을 줄이려 한다. 평일 9-18시만 사용하고 주말과 야간엔 사용하지 않는다. 가장 비용 효율적인 구성은?

문제 10

한 회사가 Multi-AZ RDS MySQL을 운영 중이다. 마이너 패치가 자동 실행되면서 평일 오전 트래픽 피크 시 4분 다운타임이 발생했다. 향후 같은 사고를 방지하는 방법으로 적절하지 않은 것은?

문제 11

한 회사가 ElastiCache Redis를 사용 중인데, 노드 한 대가 갑자기 다운되면서 캐시 전체가 비고, 그 순간 RDS로 트래픽이 폭증해 RDS까지 다운되는 cascading failure를 겪었다. 향후 같은 사고를 방지하는 가장 적절한 구성은?

문제 12

다음 시나리오 중 DAX(DynamoDB Accelerator)가 답이 아닌 경우는?

이전Aurora: AWS가 RDBMS의 스토리지 레이어를 다시 쓴 이야기Week 7 · Day 4다음 CodeCommit과 CodeBuild: AWS가 그린 CI/CD의 첫 두 칸Week 8 · Day 1

참고 공식 자료

  • DVA-C02 공식 시험 안내(새 탭에서 열림)
  • Amazon RDS · Aurora 공식 문서(새 탭에서 열림)
  • Amazon ElastiCache 공식 문서(새 탭에서 열림)
  • Amazon DynamoDB 공식 문서(새 탭에서 열림)
  • AWS Lambda 공식 문서(새 탭에서 열림)
  • AWS IAM 공식 문서(새 탭에서 열림)

이 페이지

  • 의사결정 프레임워크: 데이터 계층 선택 5단계
  • RDS·ElastiCache·Aurora 비교: 같은 질문 다른 답
  • 고가용성"에 대한 세 서비스의 답
  • 읽기 확장"에 대한 세 서비스의 답
  • 비밀번호/키 관리"에 대한 답
  • 시험 함정 15가지 정리
  • 실전 패턴: 시나리오 매핑
  • 알아두면 좋은 cross-service 패턴
  • 패턴 1: "고성능 OLTP + 분석 격리 + DR"
  • 패턴 2: "스타트업 MVP에서 production까지 진화"
  • 패턴 3: "Compliance 강화 환경"
  • 비용 관점: Reserved Instance와 Serverless의 손익분기
  • CLI/SDK 빠른 참조
  • 정리
  • Week 7 종합 실전 시나리오 12문항