목차
이 강연을 선택한 이유
데이터베이스의 안정성과 가용성은 핵심적인 요소이다. 특히 서비스가 성장하고 글로벌 확장을 고려하게 된다면, 단일 리전의 장애를 넘어선 포괄적인 재해 복구(DR) 전략과 높은 수준의 복원력(Resilience) 확보에 눈을 돌리게 된다.
이번에는 데이터베이스, 특히 AWS의 대표적인 관계형 데이터베이스 서비스인 Amazon Aurora를 중심으로 어떻게 고가용성(HA)과 재해 복구(DR) 전략을 설계하고 구축하는지에 대한 구체적인 방법론이 궁금했다. 특히 RPO(복구 목표 지점)와 RTO(복구 목표 시간)를 최소화하면서 비즈니스 연속성을 확보하기 위한 Aurora의 다양한 기능과 실제 적용 사례, 그리고 글로벌 환경에서의 고려 사항들을 개념적으로만 알고 있었는데 이번 기회에 직접 확인해보고자 했다.
또한, "모든 것은 실패한다(Everything fails all the time)"는 Werner Vogels Amazon CTO의 말처럼, 예기치 않은 장애 상황에 대비하여 어떻게 시스템을 견고하게 만들고, 실제 장애 발생 시 어떻게 신속하게 복구할 수 있는지에 대한 Aurora의 심층적인 메커니즘과 설계 패턴을 이해하고자 이 강연을 선택했다.
요약
<aside>
💡
핵심 요약
본 문서는 2025 AWS Summit에서 진행된 '글로벌 복원력을 위한 Amazon Aurora HA/DR 설계 패턴' 강연 내용을 바탕으로, Amazon Aurora를 활용하여 단일 리전 내 고가용성(HA)부터 여러 리전을 아우르는 글로벌 재해 복구(DR) 전략까지 단계별로 구축하는 방법과 핵심 고려 사항을 분석합니다. 강연에서는 Aurora의 아키텍처 특징과 다양한 기능을 통해 비즈니스 연속성을 확보하는 실질적인 설계 패턴을 제시하며, RPO/RTO 최소화 방안을 강조합니다.
주요 핵심 내용:
- Aurora의 기본 HA/DR 구조 이해: Aurora는 스토리지와 컴퓨팅을 분리하고, 3개 가용 영역(AZ)에 걸쳐 6개의 데이터 복제본을 저장하여 내구성을 높입니다. 자동화된 백업 및 특정 시점 복구(PITR), 다중 AZ 배포를 통한 빠른 장애 조치(Failover) 기능을 제공합니다.
- 연결 관리 및 최적화: 라이터/리더 엔드포인트, JDBC 드라이버 래퍼, RDS Proxy를 활용하여 DB 연결을 효율적으로 관리하고, 장애 조치 시 애플리케이션의 영향을 최소화합니다. 특히 RDS Proxy는 커넥션 풀링, 피닝(Pinning) 현상 완화에 도움을 줍니다.
- Aurora Global Database를 통한 글로벌 DR: 스토리지 기반의 물리적 복제를 통해 1초 미만의 RPO와 분 단위의 RTO를 달성할 수 있습니다. 계획된 리전 전환(Switchover) 및 예상치 못한 장애 시 수동 장애 조치(Failover)를 지원하며, 글로벌 엔드포인트를 통해 애플리케이션 변경을 최소화합니다.
- 글로벌 읽기 확장 및 일관성 관리: 글로벌 데이터베이스 환경에서 보조 리전의 읽기 전용 복제본을 활용하여 읽기 성능을 향상시키고, 라이트 포워딩(Write Forwarding) 기능을 통해 보조 리전에서도 쓰기 요청을 프라이머리 리전으로 전달하여 처리할 수 있습니다. 세션, 최종, 글로벌 등 다양한 읽기 일관성 모드를 제공합니다.
- 단계적 복원력 강화 전략: 비즈니스 성장과 요구사항 변화에 따라 단일 리전 HA 구성에서 시작하여, 리전 간 스냅샷 복사, Aurora Global Database 도입, 대칭(Symmetric) 구성, 다중 리전 DR 및 교차 계정 백업 등으로 점진적으로 복원력 수준을 향상시키는 로드맵을 제시합니다.
</aside>
강연 내용
강연에서는 복원력(Resilience)의 기본 개념인 가용성(Availability)과 재해 복구(Disaster Recovery, DR), 그리고 RPO/RTO의 중요성을 설명하며 시작했습니다. 비즈니스 성장 단계에 따른 Aurora HA/DR 설계 패턴을 단계별로 소개했습니다.
1. 단일 리전 내 Aurora 고가용성(HA) 전략
단일 리전 내에서 Aurora의 안정성을 확보하기 위한 기본 구성과 기능들을 설명했습니다.
- Aurora 아키텍처:
- 최소 3개 가용 영역(AZ)에 걸쳐 6개의 데이터 복제본을 저장 (쓰기는 4개 성공 시 완료).
- 컴퓨팅 인스턴스와 스토리지 볼륨 분리 구조로, 인스턴스 장애 시에도 데이터는 안전.
- 스토리지 볼륨은 최대 128TB까지 자동 확장.
- 백업 및 복원:
- S3에 지속적인 증분 백업 (PITR 지원, 1~35일 보관).
- 볼륨 클로닝(Volume Cloning)을 통해 저비용으로 테스트 환경 구축 가능.
- 다중 AZ(Multi-AZ) 배포:
- 프라이머리 DB 인스턴스와 별도 AZ에 스탠바이 DB 인스턴스 배포.
- 공유 스토리지를 사용하므로 데이터 복제 지연 없음.
- 장애 발생 시 보통 30~60초 내 스탠바이로 자동 장애 조치(Failover), 데이터 손실 없음.
- 읽기 확장성 (Read Replicas):
- 최대 15개의 읽기 전용 복제본(Read Replica) 추가 가능.
- 읽기 부하 분산 및 장애 조치 시 승격 대상.
- 장애 조치 우선순위(Failover Tier) 설정 가능.
- 엔드포인트(Endpoints):
- 라이터(Writer) 엔드포인트, 리더(Reader) 엔드포인트 제공.
- 애플리케이션은 엔드포인트를 사용하여 DB 인스턴스 역할 변경에 동적으로 대응.
- 사용자 지정 엔드포인트(Custom Endpoint) 구성 가능.