핵심 요약
NAVER D2가 mig-data를 대체하는 ergate 프로젝트로 단방향 DB CDC를 Flink+Spring으로 재구현해 1초 내 복제 보장을 목표로 했으며, 초기 처리 시간이 200ms에서 캐싱과 최적화로 40ms까지 단축되었습니다. 또한 10배 이상 QPS 향상을 목표로 성능 개선에 집중했습니다.
구현 방법
- 아키텍처: Flink 2.0.0(LTS), Kubernetes 세션 모드, HA 구성, nbase-cdc와 Kafka 연동, Java 17/Kotlin 1.9 사용
- 핵심 구현: DDL 의존성 제거를 위한 칼럼 캐싱, 스키마 정보 캐시 및 PreparedStatement 재사용, findckey/columnreplace를 enum 기반으로 간소화
- 검증/복구: 지연 검증 및 DLQ를 위한 verifier, 상태 DB 기록, 자동/수동 복구 흐름, Oracle read-only 검증, 서킷 브레이커 도입
- 성능/운영: DynamicBatchSize를 통한 JdbcSink 확장, Async 검증, 네트워크 버퍼 비활성화
주요 결과
- 1건당 처리 시간 200ms → 40ms로 단축
- 1초 내 복제 보장을 위한 시스템 설계 강조
- 운영 편의성 및 확장성 향상 목표 달성


