수십억 건·수십 TB 규모의 배민 푸드 주문 CQRS read model을 MongoDB에서 Amazon DocumentDB로 서비스 중단과 데이터 유실 없이 옮긴 여정을 다룬다. 무중단·무유실이라는 최우선 목표를 어떻게 이관 전략과 검증 장치로 담보했는지가 핵심이다.
핵심 포인트- 변경이 끝난 과거 구간은 dump·restore로 빠르게, 계속 바뀌는 최신 구간은 Kafka Connect CDC로 겹쳐 이관해 누락 가능성을 줄이고, document id를 message key로 고정해 같은 주문의 insert·update 순서를 보장
- 실제 string인 날짜를 date로 비교해 dump 일부가 빠지고 chunk migration 중 backup에서 document가 누락되는 함정을 type 조건·실행 시간 수정으로 재이관, 대형 compound index의 local storage 소진·planner 오선택·병렬 index 중복 bug는 optimizer v2·engine patch로 해결
- MongoDB 전용 operator·retryWrites·10분 cursor timeout·read preference 차이를 쿼리 전반에서 조사하고, instance 사양 상향과 application retry·작은 batch paging으로 동등 처리량 확보
- MongoTemplate을 감싼 verify template으로 일부 traffic에서 두 DB를 함께 읽어 결과 일치 시만 DocumentDB 응답 사용, 10·30·50·100% 점진 전환 후 CDC를 application dual write로 교체하고 reverse sync rollback까지 준비
왜 읽나대용량 프로덕션 DB를 무중단으로 마이그레이션해야 하는 팀에게, 겹친 이관·타입/인덱스 함정·dual read 검증·점진 전환·롤백을 한 흐름으로 엮어 약 45% 비용 절감까지 이룬 실전 기록.