피드로 돌아가기
뱅크샐러드 기술블로그DevOps
원문 읽기
사용법과 함께 작성해본 좌충우돌 AWS DMS 사용기 - feat. RDS 통합 이야기
뱅크샐러드가 AWS DMS를 통해 50개의 RDS 클러스터를 7개 도메인 클러스터로 통합하며 클러스터 비용을 1/3로 감소
AI 요약
Context
뱅크샐러드는 마이크로서비스 아키텍처 기반으로 각 서비스마다 독립적인 RDS 클러스터를 운영 중이었으나, 약 50개의 클러스터 중 대다수가 t3.small 스펙으로 생성되었음에도 실제 사용률은 10% 미만이었다. 이로 인해 심각한 리소스 낭비 문제가 발생했다.
Technical Solution
- 업무 도메인별(curation, 건강, 자산, 가계부, 인증 등) RDS 클러스터 통합: 50개 클러스터를 7개의 도메인 단위 클러스터로 N:1 통합
- AWS DMS를 마이그레이션 도구로 선정: Full Dump와 CDC(Change Data Capture) 기능으로 무중단 데이터 이관 지원
- Source/Target 엔드포인트 설정: Source는 binary log를 읽을 수 있는 RW 권한 주소, Target은 FK 체크 비활성화(initstmt=SET FOREIGN_KEY_CHECKS=0)
- DMS 복제 인스턴스 고사양 운영: r5.8xlarge 스펙으로 구성하여 TB 단위 데이터를 7일 내에 Full Load 완료 가능하도록 설정
- 7단계 데이터 검증 프로세스: 야간 트래픽 차단 → Row Count 비교 → 1,000개 단위 Sampling 및 Row Diff 확인 → Connection 전환 후 Unit 테스트 → 전체 QA 및 통합 테스트
Impact
RDS 클러스터 운영 비용이 이관 전 대비 1/3로 감소했다.
Key Takeaway
TB 단위 대용량 데이터베이스 마이그레이션 시 DMS의 Source/Target 인스턴스와 DMS 복제 인스턴스 모두를 Peak 사용량의 2배 이상 스펙으로 스케일업한 후 진행해야 binary log 보존 기한 내 완료 및 서비스 안정성을 동시에 확보할 수 있다.
실천 포인트
다중 RDS 인스턴스를 통합해야 하는 DevOps 팀에서 AWS DMS를 도입할 때, Extra connection attributes에 initstmt=SET FOREIGN_KEY_CHECKS=0을 추가하여 FK 제약 조건 위반 에러를 사전에 방지하고, LOB 데이터 이관 시 NOT NULL 제약 조건을 임시로 해제했다가 이관 완료 후 복구하는 방식으로 적용하면 데이터 유실 없이 안정적인 마이그레이션을 진행할 수 있다.