AWS Database
이 문서에서는 AWS Solutions Architect Associate 시험에서 자주 등장하는 데이터베이스 서비스들을 정리합니다. 다음 용어와 개념들에 대해 간략히 알아보겠습니다.
- RDS (관계형 DB)
- Aurora (고성능 관계형 DB)
- DynamoDB (NoSQL)
- ElastiCache (In-memory Caching)
- Redshift (Data Warehouse)
- DocumentDB, Neptune, Timestream, QLDB 등
RDS (Relational Database Service)
AWS에서 제공하는 관리형 관계형 데이터베이스(RDBMS) 서비스
- 지원 엔진: MySQL, PostgreSQL, MariaDB, Oracle, SQL Server
- 특징: 전통적인 RDBMS 기능(SQL, 트랜잭션 등)을 그대로 사용하면서, 하드웨어 프로비저닝, 데이터베이스 설정, 패치 및 백업과 같은 운영 작업을 AWS가 관리합니다.
RDS 스토리지 유형
| 유형 | 설명 | 주요 사용 사례 |
|---|---|---|
| 범용 SSD (gp2, gp3) | 비용 효율적이며 일반적인 워크로드에 적합 | 개발/테스트 환경, 중소규모 웹 서비스 |
| 프로비저닝된 IOPS SSD (io1, io2) | 고성능, 낮은 지연 시간, 일관된 처리량이 필요한 경우 | 대규모 트랜잭션 처리, 금융 시스템 |
주요 기능 및 아키텍처 패턴
-
다중 AZ 배포 (Multi-AZ Deployment)
- 목적: 고가용성 (High Availability) 및 장애 조치(Failover).
- 동작: 기본 DB 장애 시 대기(Standby) DB로 자동 전환(Failover).
- 특징: 동기식 복제가 이루어지며, 대기 DB는 읽기/쓰기 용도로 사용할 수 없음(단순 대기). 성능 향상 목적 아님.
-
읽기 전용 복제본 (Read Replica)
- 목적: 읽기 성능 향상 (Scalability) 및 부하 분산.
- 동작: 기본 DB의 데이터를 비동기식으로 복제.
- 특징: 애플리케이션에서 읽기 트래픽을 이 복제본으로 분산시켜야 함. 필요 시 승격(Promote)하여 기본 DB로 사용 가능.
-
리전 간 읽기 전용 복제본 (Cross-Region Read Replica)
- 목적: 재해 복구 (DR) 및 글로벌 서비스의 읽기 지연 시간 단축.
-
RDS Proxy
- 애플리케이션과 DB 사이에서 **커넥션 풀(Connection Pool)**을 관리하여 DB 부하를 줄이고, 장애 조치 시간을 단축(Failover 시간 감소)하는 서비스입니다. Lambda와 함께 자주 사용됩니다.
Aurora
MySQL 및 PostgreSQL과 호환되는 AWS 클라우드 네이티브 고성능 RDBMS
- 특징: RDS보다 성능이 3~5배 빠름, 스토리지가 10GB에서 128TB까지 자동으로 확장됨.
- 고가용성: 기본적으로 3개의 AZ에 6개의 데이터 사본을 저장합니다.
주요 기능
- Aurora Serverless: 트래픽에 따라 DB 용량을 자동으로 조절(Auto Scaling). 비정기적인 워크로드에 적합.
- Global Database: 하나의 리전에서 쓰기를 하고, 전 세계 여러 리전에서 낮은 지연 시간으로 읽기 가능 (DR 용도 포함).
- Auto Scaling: 읽기 트래픽이 증가하면 자동으로 읽기 전용 복제본(Reader)을 추가합니다.
DynamoDB
서버리스 Key-Value NoSQL 데이터베이스
- 특징: 밀리초(ms) 단위의 한 자릿수 지연 시간, 무제한 확장성, 스키마리스(Schema-less) 구조.
- 사용 사례: 모바일 백엔드, 게임 상태 정보, 쇼핑 장바구니, IoT 데이터 등 고성능/대규모 트래픽 처리가 필요한 경우.
주요 기능
- DynamoDB Streams: 테이블의 데이터 변경 사항(이벤트)을 실시간으로 캡처하여 Lambda 등으로 전달.
- DAX (DynamoDB Accelerator): DynamoDB 전용 인메모리 캐시. 응답 시간을 마이크로초(µs) 단위로 단축하여 읽기 성능을 극대화할 때 사용.
- Global Tables: 전 세계 여러 리전에 멀티 마스터(Multi-Master) 데이터베이스를 배포하여 글로벌 서비스 구축.
ElastiCache
완전 관리형 인메모리 데이터 저장소(캐시) 서비스 (Redis & Memcached)
- 목적: 데이터베이스 앞단에서 읽기 성능을 향상시키고, DB 부하를 감소시킴.
- 사용 사례: 세션 저장소, 리더보드, 실시간 분석, 캐싱.
- Redis vs Memcached:
- Redis: 복잡한 데이터 구조(Sorted Set 등), 지속성(Backup), 고가용성(Multi-AZ) 필요 시.
- Memcached: 단순한 키-값 캐싱, 멀티 스레드 성능이 중요할 때.
Redshift
페타바이트급 정형 데이터를 분석하기 위한 완전 관리형 데이터 웨어하우스(Data Warehouse)
- 특징: 컬럼 기반 스토리지(OLAP), SQL을 사용하여 대규모 데이터 분석, S3 데이터 레이크와 통합(Redshift Spectrum).
그 외 데이터베이스 서비스
- DocumentDB: MongoDB 호환 문서형 DB. JSON 데이터 처리에 적합.
- Neptune: 그래프 데이터베이스. 소셜 네트워크, 추천 엔진에 적합.
- Timestream: 시계열 데이터베이스. IoT 센서 데이터, 로그 데이터 처리에 적합.
- QLDB: 원장 데이터베이스. 데이터의 무결성과 변경 이력 검증이 필요한 금융/공급망 시스템에 적합.
DB 서비스 비교 (시나리오별 비교)
시험 문제에서 주어지는 요구사항(키워드)에 따라 적절한 DB를 선택해야 합니다.
| 시나리오 / 키워드 | 추천 서비스 (정답) | 설명 |
|---|---|---|
| "정형 데이터", "SQL", "전통적인 DB" | RDS | 가장 일반적인 RDBMS 선택지입니다. |
| "클라우드 네이티브", "고성능 RDBMS", "PostgreSQL/MySQL 호환" | Aurora | RDS보다 높은 성능과 가용성이 필요할 때 정답입니다. |
| "비정형 데이터", "Key-Value", "유연한 스키마", "초고속 성능(ms)" | DynamoDB | 스키마가 없거나 변경이 잦고, 빠른 속도가 중요한 NoSQL입니다. |
| "읽기 성능 개선", "인메모리", "마이크로초(µs) 응답", "캐싱" | ElastiCache 또는 DAX | RDBMS 앞단이면 ElastiCache, DynamoDB 앞단이면 DAX입니다. |
| "데이터 웨어하우스", "대규모 데이터 분석", "OLAP", "SQL 분석", "BI" | Redshift | 트랜잭션 처리가 아닌 '분석' 목적의 대용량 DB입니다. |
| "그래프 관계", "소셜 네트워크", "추천 시스템" | Neptune | 데이터 간의 관계가 복잡하게 얽혀 있을 때 사용합니다. |
| "시계열 데이터", "IoT 센서", "DevOps 모니터링" | Timestream | 시간 흐름에 따른 데이터를 저장하고 조회하는 데 최적화되어 있습니다. |
| "데이터 무결성", "불변성", "원장(Ledger)", "변경 이력 추적" | QLDB | 데이터 위변조 방지가 필수적인 금융/계약 시스템에 사용합니다. |
| "MongoDB 호환" | DocumentDB | MongoDB 워크로드를 AWS로 마이그레이션할 때 사용합니다. |
| "온프레미스 DB 마이그레이션", "최소한의 가동 중지 시간" | DMS (Database Migration Service) | DB 엔진 변경(Schema Conversion Tool 필요)이나 마이그레이션 시 사용합니다. |