Brex 데이터베이스 재해 복구
Source: Dev.to
소개
Brex는 기업 카드, 비용 관리, 여행, 청구 결제 및 은행 서비스를 제공하는 금융‑운영‑시스템 플랫폼입니다. 최근 AWS FSI Meetup에서 엔지니어링 매니저와 팀원들은 Amazon Aurora Global Database를 활용해 복원력을 높이고 국제 확장을 지원한 방법을 논의했습니다.
재해 복구의 중요성
팀은 인프라를 재해 상황에 대비하도록 준비하는 것이 필요하다고 강조했으며, 특히 데이터 계층에 초점을 맞추었습니다. 그들의 스택은 주로 PostgreSQL과 PgBouncer, 그리고 애플리케이션 및 분석 워크로드용 읽기 복제본을 사용합니다. 이전에는 재해 복구(DR) 프로세스가 수동적이고 시간이 많이 소요되었습니다.
DR 솔루션 목표
- Warm DR 솔루션을 구현해 **복구 시간 목표(RTO)**와 **복구 지점 목표(RPO)**를 모두 감소시킵니다.
- 메트릭, 현재 역량 및 광범위한 테스트를 분석해 허용 가능한 RTO/RPO 값을 정의합니다.
- 장애 조치 시 추가 지연이나 데이터 손실을 애플리케이션이 견딜 수 있도록 보장합니다.
Amazon Aurora Global Database 선택 이유
Aurora Global Database는 기존 아키텍처에 최소한의 변경만으로 필요한 기능을 제공했으며, 필요 시 보조 리전을 활용할 수 있게 해줍니다.
현재 구현상의 주의점
- 읽기 전용 워크로드를 위해 사용자 정의 DNS 엔드포인트를 사용했으며, 이는 애플리케이션과 분석 쿼리 모두에 서비스를 제공했습니다.
- PostgreSQL에서 Aurora로의 마이그레이션은 다운타임 위험을 수반했습니다.
마이그레이션 도전 과제 및 접근 방식
팀은 수동 단계를 최소화하기 위해 자동화에 집중했습니다:
- 각 마이그레이션 단계의 검증과 대상 환경 준비를 자동화하는 Temporal workflow를 구축했습니다.
- 워크플로우가 데이터베이스 상태를 확인한 후 Aurora Global로의 제어된 스위치오버를 수행했습니다.
- AWS가 제공하는 짧은 다운타임(2‑3 분)을 활용해 엔드포인트와 클라이언트 연결을 조정했습니다.
자동화를 위한 Temporal 워크플로우 사용
마이그레이션 전
- Application → PgBouncer → PostgreSQL primary & replica
마이그레이션 과정
- 제로 다운타임으로 Aurora 읽기 복제본을 생성했습니다.
- 복제본을 global writer 엔드포인트로 승격했습니다.
- PgBouncer를 Aurora global writer를 가리키도록 업데이트했습니다.
- 필요에 따라 다중 리전 구성을 위한 추가 클러스터를 프로비저닝했습니다.
추가 도구 및 프로세스
- Flux – GitOps를 통해 Kubernetes 클러스터를 동기화했습니다. 워크플로우는 미리 Flux 풀‑리퀘스트를 생성하고 수동 검증 후 병합했습니다.
- Terraform – Aurora 글로벌 클러스터 생성 및 리더 인스턴스 관리를 템플릿화했습니다.
- Internal CLI – 팀이 Aurora 클러스터의 장애 조치(예기치 않은 장애) 또는 스위치오버(계획된 유지보수)를 자체적으로 트리거할 수 있는 명령을 제공했습니다.
워크플로우 성능 개선
- 초기 엔드‑투‑엔드 자동화는 약 15 분이 소요되었습니다.
- 병렬 단계(예: 자격 증명 가져오기, Flux PR 생성)를 도입해 실행 시간을 약 10 분으로 단축했습니다.
- 비파괴 테스트를 위한 dry‑run 플래그를 추가했습니다.
- 사전 생성된 Flux PR 및 Git 작업 감소를 포함한 최종 최적화로 전체 시간을 3 분으로 줄였습니다.
교훈
- 프로덕션 마이그레이션 전에 스테이징에서 철저한 테스트가 필수적입니다.
- 자동화는 인적 오류를 감소시키고 다수의 데이터베이스에 걸쳐 반복 가능한 프로세스를 가능하게 합니다.
- Dry‑run 마이그레이션은 프로덕션에 영향을 주지 않고 워크플로우를 검증하는 데 도움이 됩니다.
- 매주 몇 개의 데이터베이스를 마이그레이션하는 반복적인 개선을 통해 팀은 프로세스를 지속적으로 다듬을 수 있었습니다.
이 글은 Amazon Aurora, Terraform, Flux, Temporal을 활용한 재해 복구 자동화에 관한 Brex 엔지니어링 팀 발표의 핵심 내용을 요약한 것입니다.