coredot.today
Amazon Aurora 완전 정복: AWS가 관계형 데이터베이스를 '재발명'한 방법
블로그로 돌아가기
AuroraAWS데이터베이스PostgreSQLMySQL서버리스클라우드

Amazon Aurora 완전 정복: AWS가 관계형 데이터베이스를 '재발명'한 방법

MySQL의 5배, PostgreSQL의 3배 성능. 6개 복제본 자동 유지. 128TB 자동 확장. RDS의 편리함 위에 '클라우드 네이티브' 스토리지를 올린 Aurora — 왜 만들어졌고, 어떻게 다르며, 언제 써야 하는지를 SIGMOD 논문부터 실전 사례까지 풀어본다.

코어닷투데이2026-03-1226

들어가며: RDS가 있는데 왜 Aurora를 만들었나?

이 시리즈의 RDS 글에서 관리형 데이터베이스의 편리함을 다뤘다. 패치, 백업, 복구, 스케일링을 AWS가 알아서 해준다. 충분히 좋다.

그런데 AWS는 2014년, RDS와 별도로 Aurora를 만들었다. 같은 회사가 같은 문제를 왜 다시 풀었을까?

답은 RDS의 구조적 한계에 있다. RDS는 기존 오픈소스 DB(MySQL, PostgreSQL)를 그대로 클라우드에 올린 것이다. DB 엔진 자체는 수십 년 전에 단일 서버를 위해 설계됐다. 이 엔진을 관리형으로 만든 것은 혁신이지만, DB 엔진의 근본 구조는 바뀌지 않았다.

RDS Multi-AZ 비용 Standby에도 동일 인스턴스 비용
~60초 RDS 페일오버 시간 DNS 전환 포함
5개 RDS Read Replica 최대 읽기 확장의 한계

RDS의 한계:

  • 스토리지가 인스턴스에 종속: EBS 볼륨이 EC2에 붙어 있으므로, 인스턴스를 바꾸면 데이터 복사 필요
  • 복제 오버헤드: Multi-AZ에서 전체 데이터를 동기적으로 복제 → 쓰기 성능 저하
  • 느린 페일오버: DNS 전환 방식이라 60초 이상
  • 제한된 읽기 확장: Read Replica 최대 5개

"DB 엔진의 상위 호환 API를 유지하면서, 스토리지를 클라우드에 맞게 완전히 새로 설계하면 어떨까?"

이것이 Aurora의 핵심 아이디어다.


1. Aurora의 탄생: SIGMOD 2017 논문

"클라우드를 위해 재설계한 관계형 데이터베이스"

Aurora의 기술적 혁신은 2017년 ACM SIGMOD(데이터 관리 분야 최고 학회)에서 발표된 논문으로 공개됐다:

"Amazon Aurora: Design Considerations for High Throughput Cloud-Native Relational Databases" (Verbitski 등, 2017)

이 논문의 핵심 통찰:

"기존 데이터베이스의 병목은 더 이상 컴퓨팅이 아니라 네트워크다. 클라우드 환경에서 DB 인스턴스와 스토리지 사이의 네트워크 트래픽이 성능을 결정한다."

전통적 DB에서 데이터를 쓸 때, DB 엔진은 스토리지에 여러 종류의 데이터를 보낸다:

  • 데이터 페이지
  • 트랜잭션 로그 (WAL/redo log)
  • 더블라이트 버퍼
  • 바이너리 로그
  • FRM 파일

이 모든 것이 네트워크를 통해 EBS로 전송된다. Multi-AZ에서는 이것이 2배로.

Aurora의 혁명: "스토리지에 로그만 보낸다." 데이터 페이지 재구성은 스토리지 레이어가 직접 한다. 네트워크 트래픽이 기존 대비 약 1/6으로 감소.

💡
논문의 핵심 한 문장: "The log is the database." — Aurora에서 스토리지에 전달되는 것은 로그(redo log)뿐이다. 데이터 페이지는 스토리지가 로그를 적용하여 스스로 재구성한다. 이것이 네트워크 I/O를 극적으로 줄이고, 복제를 효율적으로 만든 핵심.

2. Aurora의 아키텍처: 스토리지와 컴퓨팅의 분리

기존 RDS vs Aurora

RDS vs Aurora 아키텍처
RDS
DB 인스턴스
EBS 볼륨 (1 AZ) 인스턴스에 종속
Multi-AZ: 전체 복제 (동기)
Standby EBS (다른 AZ)
Aurora
Writer 인스턴스
분산 스토리지 볼륨 3 AZ × 2 = 6 복제본, 자동 복구
로그만 전송. 6개 복제본 자동

6개 복제본과 쿼럼

Aurora는 데이터를 3개 AZ에 걸쳐 6개 복제본으로 자동 저장한다. 쿼럼 기반으로 작동:

  • 쓰기: 6개 중 4개에 성공하면 쓰기 완료
  • 읽기: 6개 중 3개에서 읽으면 읽기 완료

이것이 의미하는 바:

  • 1개 AZ 전체가 사라져도 (2개 복제본 손실) → 쓰기/읽기 모두 정상
  • 1개 AZ 사라지고 + 1개 노드 추가 장애 (3개 복제본 손실) → 읽기는 정상, 쓰기는 일시 중단
  • 자동 복구: 손상된 복제본은 10초 이내에 다른 복제본에서 자동 재생성
6개 자동 데이터 복제본 3 AZ × 2, 추가 비용 없음
~10초 손상 복제본 복구 자동, 관리자 개입 불필요
128TB 스토리지 자동 확장 용량 계획 불필요

Read Replica: 최대 15개

RDS의 Read Replica가 최대 5개인 반면, Aurora는 최대 15개. 그리고 결정적 차이:

  • RDS Replica: Primary와 별도의 EBS 스토리지를 가짐. 비동기 복제로 지연(replica lag) 발생
  • Aurora Replica: 같은 분산 스토리지를 공유. 데이터 복사가 아니라 스토리지를 읽기만 하므로 replica lag가 보통 20ms 미만
💡
같은 스토리지를 공유한다는 의미: Aurora Replica를 추가해도 스토리지 비용이 늘지 않는다. RDS는 Replica마다 EBS가 복제되므로 스토리지 비용이 N배. Aurora는 Writer와 모든 Replica가 하나의 분산 스토리지를 공유한다.

3. Aurora vs RDS: 무엇이 어떻게 다른가

기준RDS (MySQL/PostgreSQL)Aurora (MySQL/PostgreSQL 호환)
스토리지EBS 볼륨 (인스턴스 종속)분산 스토리지 (독립, 3 AZ)
복제본최대 5개최대 15개
복제 지연수 초~수십 초보통 < 20ms
페일오버 시간~60초~30초 (Replica가 있으면 더 빠름)
스토리지 최대64TB (수동 확장)128TB (자동 확장)
성능표준 MySQL/PostgreSQLMySQL 5배, PostgreSQL 3배
백업자동 스냅샷 + PITR연속 백업 (S3에 자동)
서버리스Aurora Serverless v2
글로벌 DBCross-Region ReplicaAurora Global Database (~1초 지연)
비용저렴 (인스턴스 + EBS)RDS 대비 ~20% 높음
선택 기준 한 줄: "비용이 최우선이고 성능이 충분하다" → RDS. "고가용성, 읽기 확장, 자동 스토리지가 중요하다" → Aurora. 실무에서는 프로덕션은 Aurora, 개발/테스트는 RDS로 분리하는 패턴이 가장 흔하다.

4. Aurora Serverless v2: DB도 서버리스로

"사용한 만큼만 과금"되는 데이터베이스

2022년 GA 출시된 Aurora Serverless v2는 DB 용량을 ACU(Aurora Capacity Unit) 단위로 자동 조절한다.

  • 트래픽이 많으면: ACU 자동 증가 (수 초 내)
  • 트래픽이 적으면: ACU 자동 감소
  • 트래픽이 없으면: 최소 ACU(0.5)까지 축소
프로비저닝 (고정 인스턴스)
db.r6g.large 고정 → 24시간 과금
피크 대비 인스턴스를 선택해야 함
비피크에 유휴 자원 낭비
적합: 트래픽이 안정적이고 예측 가능
Serverless v2 (자동 조절)
0.5~128 ACU 범위에서 자동 스케일링
피크에 자동 확장, 비피크에 자동 축소
사용한 ACU만큼만 과금
적합: 트래픽 변동이 크거나 예측 어려움
Serverless v2의 킬러 유스케이스: 개발/테스트 환경. 업무 시간에만 사용하고 밤에는 0.5 ACU로 자동 축소. 프로비저닝 인스턴스 대비 60~80% 비용 절감. "개발 DB 비용이 너무 비싸다"는 팀이라면 Serverless v2로 즉시 전환을 검토하라.

5. Aurora Global Database: 전 세계를 하나의 DB로

글로벌 서비스의 데이터베이스 과제

글로벌 서비스를 운영하면: 서울에 DB가 있는데, 뉴욕 사용자가 접속하면 쿼리마다 300ms 지연. 각 리전에 DB를 따로 두면 데이터 동기화 문제.

Aurora Global Database의 해법: 한 리전에 Primary, 최대 5개의 다른 리전에 Secondary 클러스터를 자동으로 복제한다.

  • 리전 간 복제 지연: 보통 1초 이내
  • Secondary 리전에서 읽기 가능: 로컬 수준의 읽기 지연
  • Primary 리전 장애 시: Secondary를 1분 이내에 승격 가능

6. Aurora 보안

데이터베이스는 "왕관의 보석"

RDS 글에서 다룬 보안 원칙이 Aurora에도 동일하게 적용된다. 추가로 Aurora 고유의 보안 기능:

  • 연속 백업: 트랜잭션 로그가 S3에 지속적으로 백업. PITR로 35일 내 아무 시점으로 복원
  • 백트랙(Backtrack): Aurora MySQL 전용. DB를 과거 시점으로 "되감기". 새 인스턴스를 만들지 않고 현재 DB에서 직접. 실수로 DELETE를 실행한 경우 수 초 만에 복구
  • IAM 인증: DB 사용자/비밀번호 대신 IAM 토큰으로 인증. 비밀번호 관리 불필요
🔒
Backtrack의 마법: ALTER TABLE을 잘못 실행해서 데이터를 날렸다면? 기존 방식: 스냅샷에서 새 인스턴스를 만들어 데이터를 복구 (수십 분~수 시간). Backtrack: 현재 DB를 해당 시점으로 되감기 (수 초). 단, Backtrack 윈도우(최대 72시간) 안에서만 가능하므로 미리 활성화해야 한다.

7. Aurora 비용 구조

비용 구성

항목설명비고
인스턴스시간당 과금RDS 대비 ~20% 높음
스토리지$0.10/GB/월 (서울)사용한 만큼만. 10GB 단위 자동 증가
I/O읽기/쓰기 요청당 과금표준: $0.20/100만 I/O, I/O 최적화: 포함
백업스토리지 크기까지 무료초과분 $0.021/GB/월
Serverless v2ACU-시간당 과금$0.12/ACU-시간 (서울)

I/O 비용: Aurora의 숨겨진 함정

⚠️
I/O 비용에 주의: Aurora 표준 구성에서 I/O는 별도 과금이다. 쿼리가 많은 워크로드에서 I/O 비용이 인스턴스 비용을 초과하는 경우가 있다. 월간 I/O 비용이 인스턴스 비용의 25%를 넘으면 Aurora I/O-Optimized 구성으로 전환하라. I/O 비용이 0이 되고, 인스턴스 비용이 30% 증가하지만, 총비용은 줄어든다.

RDS vs Aurora 비용 시뮬레이션

db.r6g.large 기준 (서울 리전):

RDS PostgreSQLAurora PostgreSQL
인스턴스 (월)~$196~$235 (+20%)
스토리지 100GB~$12 (gp3)~$10 (사용량 기반)
Multi-AZ~$392 (인스턴스 2배)추가 비용 없음 (스토리지 복제 포함)
Read Replica 1개~196+EBS196 + EBS 12~$235 (스토리지 공유, 추가 비용 없음)
총 (Multi-AZ + 1 Replica)~$616/월~$470/월
💡
반전: Aurora의 인스턴스 단가는 RDS보다 20% 비싸다. 하지만 Multi-AZ에서 Standby 인스턴스 비용이 별도로 들지 않고(스토리지 복제는 무료), Read Replica가 스토리지를 공유하므로, 고가용성 + 읽기 확장이 필요한 프로덕션에서는 Aurora가 오히려 저렴한 경우가 많다.

8. 실제 사례

Samsung: 글로벌 IoT 플랫폼

Samsung SmartThings는 전 세계 수억 대의 IoT 기기 데이터를 Aurora Global Database로 관리한다. 미국 Primary + 유럽/아시아 Secondary로 구성하여, 각 리전에서 로컬 수준의 읽기 성능을 제공한다.

Airbnb: PostgreSQL → Aurora 마이그레이션

Airbnb는 자체 관리 PostgreSQL에서 Aurora PostgreSQL로 마이그레이션했다:

  • DB 관리 운영 부담 대폭 감소
  • 읽기 성능 향상 (Replica 확장)
  • 페일오버 시간 단축 (수 분 → 30초)

Dow Jones: 뉴스 서비스

Dow Jones(월스트리트저널 발행)는 Aurora를 사용하여 실시간 뉴스 서비스를 운영한다. 속보 발생 시 트래픽이 10배 이상 급증하지만, Aurora의 읽기 Replica와 자동 스케일링으로 대응한다.

Duolingo: Serverless v2로 비용 최적화

4억 명 이상의 사용자를 가진 Duolingo는 Aurora Serverless v2를 활용하여, 새벽에는 최소 용량, 피크 타임에는 자동 확장으로 DB 비용을 40% 절감했다.

한국 기업 사례

  • 쿠팡: 주문·결제 시스템에 Aurora MySQL 사용. Read Replica 15개로 상품 조회 분산
  • 토스: 금융 트랜잭션에 Aurora PostgreSQL. Multi-AZ 자동 복제로 데이터 안전성 확보
  • 당근마켓: RDS PostgreSQL에서 Aurora로 마이그레이션. 트래픽 증가에 따른 읽기 확장
  • 카카오뱅크: Aurora + Global Database로 재해복구(DR) 체계 구축

9. Aurora를 쓰지 말아야 할 때

상황이유대안
비용이 가장 중요, 고가용성 불필요Aurora가 RDS보다 비쌈RDS (단일 AZ)
MySQL/PostgreSQL 외의 DB 필요Aurora는 두 가지만 호환RDS (Oracle, SQL Server)
OLAP (대규모 분석)Aurora는 OLTP에 최적화Redshift
키-값 초고속 조회관계형 DB 오버스펙DynamoDB
완전 서버리스, 사용량 0일 때 비용 0원Serverless v2도 최소 0.5 ACUDynamoDB 온디맨드

10. Aurora의 미래

Aurora DSQL (2024 프리뷰)

RDS 글에서 언급한 Aurora DSQL은 여러 리전에 걸쳐 강력한 일관성을 보장하는 분산 SQL 데이터베이스다. Google Spanner에 대한 AWS의 대답:

  • 여러 리전에서 동시에 쓰기 가능
  • 글로벌 트랜잭션 (단일 DB처럼 사용)
  • PostgreSQL 호환

Aurora Limitless Database

수평 샤딩을 자동으로 해주는 Aurora의 확장. 기존 Aurora는 Writer가 1개뿐이라 쓰기 확장에 한계가 있었다. Limitless는 테이블을 자동으로 샤딩하여 여러 Writer에 분산한다.

AI 통합

  • Aurora ML: SQL 쿼리 안에서 SageMaker/Bedrock ML 모델을 직접 호출
  • pgvector: Aurora PostgreSQL에서 벡터 검색 지원. RAG 파이프라인의 벡터 DB로 사용 가능

마치며: Aurora는 "클라우드 네이티브"의 의미를 보여준다

RDS는 기존 DB를 클라우드에 올린 것이다. Aurora는 기존 DB를 클라우드를 위해 다시 만든 것이다.

차이는 스토리지 레이어에 있다. "The log is the database" — 로그만 전송하고, 스토리지가 스스로 데이터를 재구성하는 이 설계가 6개 복제본, 10초 복구, 128TB 자동 확장, 15개 Replica를 가능하게 했다.

이 시리즈에서 다룬 데이터베이스 선택 최종 가이드:

요구사항추천이유
간단한 CRUD, 비용 최우선RDS가장 저렴
프로덕션, 고가용성 필수Aurora6 복제본, 빠른 페일오버, Replica 확장
서버리스 DBAurora Serverless v2자동 스케일링, 유휴 비용 최소
초고속 키-값DynamoDBms 미만 응답
대규모 분석 (OLAP)Redshift컬럼나 스토리지, MPP
텍스트/벡터 검색OpenSearch역색인, k-NN

코어닷투데이의 프로덕션 데이터베이스는 Aurora PostgreSQL이다. AI 서비스의 메타데이터, 사용자 데이터, 추론 이력이 Aurora에 안전하게 저장되고, pgvector로 벡터 검색이 수행되며, 6개 복제본으로 데이터가 보호되고, Serverless v2로 비용이 최적화된다. "클라우드를 위해 재설계된 DB" — Aurora의 약속이 실현되는 현장이다.