Amazon RDS: MySQL, PostgreSQL, MariaDB, Oracle, SQL Server, Db2 를 관리형으로 호스팅한다. 엔진은 그대로이고 패치·백업·복구·장애 조치를 서비스가 맡는다. 스토리지는 인스턴스에 붙은 EBS 볼륨이다.
Amazon Aurora: MySQL·PostgreSQL 호환의 클라우드 네이티브 엔진이다. 인스턴스(컴퓨팅)와 클러스터 볼륨(스토리지)이 분리되어 있다.
Aurora 클러스터 ├─ 라이터 인스턴스 1개 ─┐ ├─ 리더 인스턴스(최대 15)┼──► 클러스터 볼륨: 3개 AZ · 6개 스토리지 노드에 복제, 자동 확장 └─ ... ─┘ (인스턴스를 늘려도 데이터를 새로 복사하지 않는다)
축
RDS
Aurora
스토리지
인스턴스별 EBS, 용량을 지정(자동 확장 옵션)
공유 클러스터 볼륨, 쓴 만큼 자동 증감
복제본
엔진의 복제 기능으로 비동기 복제
같은 볼륨을 공유해 읽음
Read Replica 수
원본당 15개(쿼터)
15개
장애 조치
Multi-AZ 대기 인스턴스로 전환
리더 중 하나를 라이터로 승격
최대 스토리지
엔진·스토리지 유형에 따름
클러스터 볼륨 128TiB, 최신 엔진 버전은 256TiB
엔진
6종
MySQL·PostgreSQL 호환만
Aurora 클러스터 볼륨의 상한은 오래 128TiB 로 알려져 있었고, 현행 문서는 최신 엔진 버전(Aurora PostgreSQL 15.13·16.9·17.5 이상, Aurora MySQL 3.10 이상)에서 256TiB 로 적는다. 시험 자료에는 옛 값으로 나올 수 있다.
Aurora 스토리지는 쓴 만큼 과금되고, 데이터를 지우면 할당량도 줄어든다. 스토리지 구성은 Aurora Standard(I/O 요청 건수를 따로 과금)와 Aurora I/O-Optimized(I/O 요금 없음) 중에 고른다. I/O 지출이 전체 Aurora 비용의 25% 이상이면 I/O-Optimized 가 유리하다.
리더가 있으면 라이터 장애 시 리더가 승격되어 보통 60초 안에 복구된다. 리더가 하나도 없으면 인스턴스를 새로 만들어야 해서 훨씬 오래 걸린다.
💡 관련 이론: RDS/Aurora 는 행 기반 저장이다. 한 행의 모든 컬럼이 디스크에 붙어 있어 "주문 한 건을 읽고 고친다"에는 최적이지만, "1억 행에서 금액 컬럼만 합산"하려면 필요 없는 컬럼까지 전부 읽어야 한다. 컬럼형인 Redshift·Parquet 은 정반대다. 스토어 선택의 첫 질문이 "행을 다루는가, 컬럼을 집계하는가"인 이유다.
제로 ETL 통합은 원천의 데이터를 파이프라인을 만들지 않고 Redshift 로 복제한다. 초기 적재와 이후의 변경 복제, 상태 감시와 복구를 AWS 가 맡는다.
Aurora MySQL / Aurora PostgreSQL / RDS / DynamoDB ... │ (제로 ETL 통합 — 초기 적재 후 변경분을 계속 복제) ▼Amazon Redshift (Serverless 또는 RA3 계열 프로비저닝) └─ 통합에서 만든 "대상 데이터베이스" — 읽기 전용 └─ 다른 데이터베이스의 머티리얼라이즈드 뷰·교차 DB 쿼리로 가공
항목
내용
소스
Aurora MySQL, Aurora PostgreSQL, RDS for MySQL·PostgreSQL·Oracle, DynamoDB, 그 밖에 SaaS 애플리케이션과 자체 관리 DB
타깃
Redshift Serverless 또는 RA3 계열 프로비저닝 클러스터(프로비저닝은 암호화 필요), 대소문자 구분 활성화 필수
그 밖의 타깃
Aurora 는 SageMaker 레이크하우스, DynamoDB 는 OpenSearch Service 로도 통합
지연
Aurora·RDS 는 거의 실시간. DynamoDB 는 증분 export 방식이라 최소 15분
변환
없다. 원천 그대로 복제한다. 가공은 Redshift 안에서 한다
대상 데이터베이스
읽기 전용. 그 안에 테이블·뷰를 만들 수 없다
범위 지정
데이터 필터링으로 복제할 테이블을 포함·제외
알아 둘 제약은 다음과 같다.
원천 테이블에 기본 키가 있어야 한다. 없는 테이블은 복제되지 않는다.
원천 클러스터와 타깃은 같은 리전이어야 한다.
원천에서 ALTER TABLE 같은 DDL 을 실행하면 그 테이블이 재동기화되며, 그동안 Redshift 에서 조회하지 못할 수 있다.
처음 통합을 만들 때와 재동기화 때 초기 적재에 20~25분 이상이 걸릴 수 있다.
Aurora MySQL 통합은 바이너리 로그(binlog)에 의존한다. Aurora PostgreSQL 은 데이터 필터를 최소 하나(데이터베이스 단위) 지정해야 한다.
⚠️ 함정: "제로 ETL"은 T(변환)가 없다는 뜻에 가깝다. 정규화된 운영 스키마가 그대로 Redshift 에 온다. 스타 스키마로 바꾸거나 집계 테이블을 만들려면 Redshift 안에서 머티리얼라이즈드 뷰나 SQL 로 가공해야 한다. 지문이 "복제 도중 컬럼을 마스킹·변환"을 요구하면 제로 ETL 이 아니라 DMS 의 변환 규칙이나 Glue 다.
① 한 건을 읽고 쓰는가, 많은 행을 집계하는가? ├─ 한 건(트랜잭션) ──► ②로 └─ 집계(분석) ───────► ③으로② 관계와 조인, 여러 행에 걸친 트랜잭션이 필요한가? ├─ 필요 ─────────────► RDS / Aurora └─ 키로만 찾는다, 규모·동시성이 크다 ──► DynamoDB③ 얼마나 자주, 얼마나 무겁게 분석하는가? ├─ 상시·반복, 복잡한 조인, 빠른 응답 ──► Redshift ├─ 가끔, S3 에 있는 데이터를 바로 ─────► Athena └─ 웨어하우스 + S3 이력을 함께 ────────► Redshift Spectrum④ 형태가 특수한가? ├─ 전문 검색, 로그 탐색 ───► OpenSearch Service ├─ 마이크로초 캐시·세션 ───► ElastiCache / MemoryDB ├─ 관계 탐색(그래프) ──────► Neptune ├─ 시계열 지표 ────────────► Timestream └─ JSON 문서(MongoDB 호환) ─► DocumentDB