Amazon Aurora는 MySQL과 PostgreSQL과 호환되는 AWS의 완전 관리형 관계형 데이터베이스 엔진이다. 상용 DB 수준의 성능과 가용성을 오픈소스 비용으로 제공한다.
Aurora vs RDS 비교
| 항목 | Aurora | RDS MySQL |
|---|
| 성능 | MySQL 대비 5배, PostgreSQL 대비 3배 | 표준 |
| 스토리지 | 자동 확장 (최대 128TiB) | 수동 확장 |
| 복제본 | 최대 15개 읽기 복제본 | 최대 5개 |
| 장애 복구 | 30초 이내 | 1-2분 |
| 비용 | RDS 대비 20-30% 높음 | 낮음 |
Aurora 아키텍처
쓰기 엔드포인트 → Primary Instance (읽기/쓰기)
읽기 엔드포인트 → 읽기 복제본 1~15 (로드밸런싱)
6개 데이터 복사본 → 3개 AZ (각 AZ에 2개)
스토리지는 Primary/Replica 모두 공유 (클러스터 볼륨)
Aurora Serverless v2
bash
# Terraform으로 Aurora Serverless v2 생성
resource "aws_rds_cluster" "aurora_serverless" {
cluster_identifier = "my-aurora-cluster"
engine = "aurora-postgresql"
engine_mode = "provisioned"
engine_version = "15.4"
database_name = "mydb"
master_username = "admin"
master_password = var.db_password
serverlessv2_scaling_configuration {
min_capacity = 0.5 # ACU
max_capacity = 64 # ACU
}
}
resource "aws_rds_cluster_instance" "writer" {
cluster_identifier = aws_rds_cluster.aurora_serverless.id
instance_class = "db.serverless"
engine = "aurora-postgresql"
}
Aurora Global Database
bash
# 글로벌 데이터베이스 생성 (다중 리전)
aws rds create-global-cluster --global-cluster-identifier my-global-db --source-db-cluster-identifier arn:aws:rds:ap-northeast-2:...
# 재해 시 보조 리전으로 승격
aws rds failover-global-cluster --global-cluster-identifier my-global-db --target-db-cluster-identifier arn:aws:rds:us-east-1:...
Aurora 성능 최적화
- •읽기 복제본 자동 스케일링: 읽기 부하에 따라 복제본 자동 추가/제거
- •Aurora 캐시 웜업: 재시작 후 버퍼 풀 자동 복원
- •병렬 쿼리: 대용량 분석 쿼리의 스토리지 레이어 분산 처리
- •RDS Proxy: 연결 풀링으로 Lambda/컨테이너 환경의 연결 폭주 방지