B마트와 장보기·쇼핑에 각각 발전한 가격 할인 promotion을 공통 platform으로 옮기면서, consumer마다 다른 전환 일정과 legacy 유지·무중단·빠른 rollback 요구를 해결한 사례다. 수많은 지점과 상품 가격을 다루는 핵심 기능이라 service 중단과 data 유실이 절대 없어야 했던 제약에서 출발한다.
핵심 포인트- 새 요구마다 A·B·C안을 원점에서 재비교하는 낭비를 막고자 context·alternatives·decision·consequence를 담는 ADR을 채택해 기각한 선택의 이유까지 추적, 미래 담당자와 AI coding tool에 code 밖 policy를 context로 제공
- 배포 가능일이 module마다 다르고 legacy admin을 3주 더 써야 해 big-bang을 기각, B마트·promotion 양쪽에 proxy를 두고 feature flag로 활성 server를 골라 어느 endpoint로 와도 같은 logic을 실행하며 consumer group도 flag에 따라 한쪽만 처리
- 6년치 price history와 복잡한 join을 옮기면서 admin·transaction이 계속 동작해야 해, 누락 query 하나로 장애를 낼 수 있는 big-bang과 eventual consistency를 직접 보장해야 하는 Spring Batch 방식 대신 CDC를 중심 대안으로 검토
- Debezium source connector와 Kafka JDBC sink로 기존·신규 data를 복제하고, 전환 시 flag를 100% 새 service로 바꾼 뒤 CDC 방향을 뒤집어 QA보다 짧은 한 시간 내에 무중단·무유실 cutover 완료
왜 읽나무중단·무유실이 필수인 legacy DB 이관을 앞둔 엔지니어에게, ADR 의사결정·양방향 proxy·CDC 방향 전환을 엮은 안전한 cutover 설계를 제시하는 레퍼런스.