Amazon Aurora, Aurora 아키텍처
Aurora #
고성능 상용 데이터베이스의 성능과 가용성에 오픈 소스 데이터베이스의 간편성과 비용 효율성을 결합하였으며 클라우드를 위해 구축된 MySQL 및 PostgreSQL 호환 관계형 데이터베이스다.
표준 MySQL 데이터베이스보다 최대 5배 빠르고 표준 PostgreSQL 데이터베이스보다 3배 빠르다.
1/10 비용으로 상용 데이터베이스의 보안, 가용성 및 안정성을 제공한다.
하드웨어 프로비저닝, 데이터베이스 설정, 패치 및 백업과 같은 시간 소모적인 관리 작업을 자동화하는 Amazon Relational Database Service (RDS)에서 Amazon Aurora의 모든 것을 관맇나다.
Aurora 아키텍처 #
Single-Master #

Multi-Master #

Aurora의 특징 #
MySQL/PostgreSQL 지원
두 가지 모드
- 다수의 노드로 읽기 쓰기가 가능한 Multi-Master
- 한 개의 쓰기 전용 노드와 다수의 읽기 전용 노드 (Aurora Replicas) 구성의 Single-Master
용량의 자동 증감: 10G 부터 시작하여 10GB 단위로 용량 증가 (최대 128TB)
연산 능력: 96vCPU와 768GB 까지 증가 가능(db.r5.24.xlarge)
데이터의 분산 저장: 각 AZ마다 2개의 데이터 복제본 저장 x 최소 3개이상의 AZ = 최소 6개의 복제본
- 3개 이상을 잃어버리기 전엔 쓰기 능력 유지
- 4개 이상을 잃어버리기 전에는 읽기 능력 유지
- 손실된 복제본은 자가 치유: 지속적으로 손실된 부분을 검사 후 복구
- Quorum 모델 사용
Sigle-Master 모드 #
한 대의 Writer 인스턴스와 다수의 읽기 전용 인스턴스로 구성
총 15개의 Replica 생성 가능
Async 복제
하나의 리전안에 생성 가능
Writer가 다운될 경우 자동으로 Replica중 하나가 Writer로 Failover -> 데이터 손실 없이 Failover시 메인으로 승격 가능
고가용성을 확보
Aurora Global Database #
전 세계의 모든 리전에서 1초내의 지연시간으로 데이터 엑세스 가능
재해복구용도로 활용 가능
- 유사시 보조 리전중 하나를 승격으로 메인으로 활용
- 1초의 RPO(복구 목표 지점)
- 1분 미만의 RTO(복구 목표 시간)
보조 리전에는 총 16개의 Read 전용 노드 생성 가능 (원래는 15개)

병렬 쿼리 #
다수의 읽기 노드를 통해 쿼리를 병렬로 처리하는 모드
- 빠름
- 부하 분산(CPU, Memory)
MySQL 5.6/5.7에서만 지원한다.
남은 인스턴스 (db.t2, db.t3등) 에서는 지원하지 않는다.
Aurora의 백업 #
읽기 복제본(Read Replica) 지원 (Aurora Replica와 다른 개념)
- MySQL DB의 Binary log 복제
- 단 다른 리전에서만 생성 가능
RDS와 마찬가지로 자동/수동 백업 가능
- 자동 백업의 경우 1~35일 동안 보관(S3에 보관)
- 수동 백업(스냅샷) 가능
- 백업 데이터를 복원할 경우 다른 데이터베이스를 생성
Aurora 데이터베이스 클로닝 #
기존의 데이터베이스에서 새로운 데이터베이스를 복제
- 스냅샷을 통해 새로운 데이터베이스를 생성하는 것 보다 빠르고 저렴함
Copy-On-Write 프로토콜 사용
- 기존 클러스터를 삭제해도 제대로 동작
Backtrack #
기존의 DB를 특정 시점으로 되돌리는 것(새로운 DB가 아닌 기존 DB)
- DB관리의 실수를 쉽게 만회 가능(예: Where 없는 Delete)
- 새로운 DB를 생성하는 것 보다 훨씬 빠름
- 앞 뒤로 시점을 이동할 수 있기 때문에 원하는 지점을 빠르게 찾을 수 있음
Backtrack Window
- Target Backtrack Window
- 어느 시점 만큼 DB를 되돌리기 위한 데이터를 저장할 것인지
- 지정 시점 이전으로는 Backtrack 불가능
- 어느 시점 만큼 DB를 되돌리기 위한 데이터를 저장할 것인지
- Actual Backtrack Window
- 실제 시간을 얼만큼 되돌릴 것인지
- Target Backtrack Window보다 작아야한다.
Backtrack 활성화시 시간당 DB의 변화를 저장
- 저장된 용량만큼 비용 지불
- DB 변화가 많을수록 많은 로그 = 많은 비용
- DB 로그가 너무 많아 Actual Backtrack Window가 Target Backtrack Window 설정값 보다 작을 경우, 알림을 준다.
MySQL만 가능
Aurora 생성시 Backtrack을 설정한 DB만 Backtrack 가능
- 스냅샷을 복구하거나 Clone을 통해 기능 활성화 가능
Multi-Master 상태에서는 Backtrack 불가능
Multi-Master #
최대 4개의 노드가 읽기 쓰기를 담당
- 각 노드는 독립적: 정지/재부팅/삭제 등에 서로 영향을 받지 않음
지속적인 가용성을 제공
주로 Multitenant 혹은 Sharding이 적용된 애플리케이션에 좋은 성능