6개월 만에 연간 수십조를 처리하는 DB CDC 복제 도구 무중단/무장애 교체하기
아키텍처
6개월 만에 연간 수십조를 처리하는 DB CDC 복제 도구 무중단/무장애 교체하기
두줄요약
네이버페이 주문의 DB CDC 복제 도구를 ergate로 전환한 경험을 공유했습니다. Flink와 Spring으로 복제, 검증, 복구를 분리해 성능과 운영 편의성을 개선했습니다.
핵심 내용
- 네이버페이 주문의 DB CDC 복제 도구를 기존 mig-data에서 ergate로 전환한 개발 경험 공유
- 백엔드 개발자가 유지 보수하기 쉬운 구조를 목표로 복제, 검증, 복구 기능을 재구성
- Apache Flink와 Spring Framework를 조합해 복제 성능, 스키마 변경 대응, 운영 복구 편의성을 개선
구조와 흐름
- 복제: nbase-cdc가 발행한 Kafka 레코드를 Flink JdbcSink가 읽어 Target DB 반영
- 검증: 지연 컨슈밍으로 원본과 대상 데이터를 비교하고 불일치 시 DLQ와 상태 DB로 전달
- 복구: 자동 복구와 수동 복구를 분리해 재검증 후 실제 불일치만 업데이트
선택 이유
- Flink: 저지연 대용량 처리, Kafka 연동 용이성, HA와 확장성 기대
- 세션 모드: 하나의 UI에서 여러 job 상태 확인, 다수 job 배포 시간 단축
- Spring 분리: 복잡한 복구 로직을 격리하고 백엔드 개발 친화적으로 유지
성능/운영 포인트
- DDL 순서 의존성 완화: 칼럼 캐싱과 스키마 갱신으로 추가 순서 문제 완화
- 스키마/PK 예외 대응: Oracle의 논리 PK를 별도 설정으로 보완
- 동적 batch size와 비동기 검증으로 처리량과 내결함성 개선
