AWS Certified Solutions Architect - Associate (SAA-C03) #12 Domain 3-4 고성능 아키텍처: DB 선택
#11 스토리지에 이어, 고성능 도메인의 마지막으로 데이터베이스 선택을 다룹니다. SAA의 DB 문항에서 가장 자주, 가장 결정적으로 갈리는 지점은 RDS의 Multi-AZ와 읽기 복제본 차이입니다. 여기서부터 정리합니다.
RDS: 관리형 관계형 데이터베이스 #
RDS는 MySQL,PostgreSQL,MariaDB,Oracle,SQL Server를 관리형으로 제공합니다. 백업,패치,복구를 AWS가 맡습니다. 핵심은 두 가지 확장/가용성 메커니즘이고, 목적이 완전히 다릅니다.
| 항목 | Multi-AZ | 읽기 복제본(Read Replica) |
|---|---|---|
| 목적 | 고가용성/장애 전환 | 읽기 부하 분산 |
| 복제 방식 | 동기(synchronous) | 비동기(asynchronous) |
| 대기 인스턴스 | 평소엔 트래픽 안 받음(standby) | 읽기 트래픽을 받음 |
| 장애 시 | 자동 failover | 수동 승격(promote) 필요 |
| 교차 리전 | 보통 같은 리전 | 교차 리전 가능 |
- Multi-AZ. 다른 AZ에 동기 복제된 standby를 두고, 주 인스턴스 장애 시 자동으로 전환합니다. 고가용성을 위한 것이지 읽기 성능을 위한 것이 아닙니다. standby는 평소 트래픽을 받지 않습니다.
- 읽기 복제본. 비동기 복제본을 두어 읽기 쿼리를 분산합니다. 읽기 부하가 큰 워크로드의 확장 수단이며, 교차 리전에도 둘 수 있어 DR과 글로벌 읽기에도 활용됩니다. 단, 자동 failover는 아닙니다.
이 구분이 시험 단골입니다. “읽기 부하 분산“은 읽기 복제본, “고가용성/자동 failover“는 Multi-AZ입니다. 둘을 함께 써서 가용성과 읽기 확장을 동시에 잡기도 합니다.
Aurora: 클라우드 네이티브 관계형 #
Aurora는 AWS가 클라우드에 맞춰 다시 만든 관계형 DB로, MySQL,PostgreSQL과 호환됩니다. 특징은 다음과 같습니다.
- 스토리지 자동 확장. 데이터가 늘면 스토리지가 자동으로 커집니다.
- 6개 복제본을 3개 AZ에 분산 저장해 높은 내구성과 가용성.
- 최대 15개 읽기 복제본으로 읽기 확장.
- Aurora Global Database. 여러 리전에 1초 미만 지연으로 복제(#7 DR 활용).
- Aurora Serverless v2. 부하에 따라 용량을 자동 조절(변동,간헐 워크로드).
“MySQL/PostgreSQL 호환이면서 더 높은 성능과 자동 스토리지 확장"이 단서면 Aurora입니다.
DynamoDB: 관리형 NoSQL #
DynamoDB는 완전관리형 NoSQL key-value/document 데이터베이스입니다. 서버리스이며 사실상 무제한으로 확장되고, 한 자릿수 밀리초(DAX로 마이크로초) 응답을 냅니다.
- 용량 모드. On-Demand(트래픽 예측 불가,관리 불필요) vs Provisioned(예측 가능,비용 효율).
- 글로벌 테이블. 다중 리전 active/active 복제.
- DynamoDB Streams. 데이터 변경 이벤트를 캡처(예: Lambda 트리거).
- TTL. 항목 자동 만료.
- DAX. #10의 마이크로초 캐시.
“key-value, 밀리초 응답, 무제한 확장, 서버 관리 없음"이면 DynamoDB입니다. 다만 복잡한 조인이나 트랜잭션 중심 관계형 모델에는 부적합합니다. 그런 워크로드는 RDS/Aurora입니다.
목적별 데이터베이스 #
관계형,NoSQL 외에도 워크로드 전용 DB가 있습니다. 시험에 등장하는 것들입니다.
| 워크로드 | 서비스 |
|---|---|
| 분석/데이터 웨어하우스(OLAP) | Redshift |
| 인메모리 캐시 | ElastiCache(#10) |
| 그래프(관계 데이터) | Neptune |
| MongoDB 호환 문서 DB | DocumentDB |
| 시계열 | Timestream |
“대규모 데이터 분석/집계 쿼리(OLAP)“는 트랜잭션용 RDS가 아니라 Redshift입니다. 이 구분(OLTP vs OLAP)이 자주 나옵니다.
시험 출제 패턴 #
- “관계형 DB 읽기 부하 분산.” → 읽기 복제본(Read Replica)
- “관계형 DB 고가용성/자동 failover.” → Multi-AZ
- “MySQL 호환 + 고성능 + 스토리지 자동 확장.” → Aurora
- “다중 리전 active/active 관계형.” → Aurora Global Database
- “key-value, 밀리초, 무제한 확장, 서버리스.” → DynamoDB
- “트래픽 예측 불가 NoSQL, 용량 관리 회피.” → DynamoDB On-Demand
- “대규모 분석/데이터 웨어하우스.” → Redshift
자주 만나는 함정 #
1) Multi-AZ로 읽기를 확장하려 한다 #
Multi-AZ의 standby는 트래픽을 받지 않습니다. 읽기 확장은 읽기 복제본입니다.
2) 읽기 복제본으로 자동 failover를 기대 #
읽기 복제본은 비동기이며 자동 전환이 아닙니다. 자동 failover는 Multi-AZ입니다.
3) DynamoDB로 복잡한 조인을 처리 #
DynamoDB는 NoSQL입니다. 복잡한 관계형 조인,트랜잭션은 RDS/Aurora가 맞습니다.
4) 분석 쿼리를 RDS로 처리 #
대규모 분석(OLAP)은 RDS가 아니라 Redshift입니다. RDS는 트랜잭션(OLTP)용입니다.
정리 #
이번 글에서 잡은 것:
- RDS. Multi-AZ(고가용성,자동 failover) vs 읽기 복제본(읽기 확장,비동기,교차 리전 가능). 목적이 다름
- Aurora. MySQL/PostgreSQL 호환, 스토리지 자동 확장, Global, Serverless v2
- DynamoDB. NoSQL key-value, 서버리스,무제한 확장, On-Demand/Provisioned, 글로벌 테이블. 복잡한 조인엔 부적합
- 목적별: 분석은 Redshift(OLAP), 그래프는 Neptune, 문서는 DocumentDB
이것으로 **고성능 도메인(24%, #9~12)**을 마칩니다. 컴퓨팅 → 캐싱 → 스토리지 → 데이터베이스로 성능을 끌어올리는 선택지를 정리했습니다.
다음: Domain 4-1 비용 최적화 #
마지막 도메인은 **비용 최적화(20%)**입니다. 같은 결과를 더 싸게 내는 설계로 넘어갑니다.
#13 Domain 4-1 가격 모델에서는 EC2 구매 옵션의 비용 관점 재정리(Reserved,Savings Plans,Spot), S3,스토리지 비용 구조, 데이터 전송 비용, 그리고 비용을 줄이는 아키텍처 선택을 정리하겠습니다.