백엔드
45분 배치에서 준실시간으로! 다수 도메인 데이터를 Kafka로 통합한 전환기
두줄요약
상품·쿠폰·증정·프로모션 데이터를 Kafka 기반 준실시간 구조로 전환한 사례입니다.\nRedis Pub/Sub, Aggregation Topic, Shadow Table로 정합성과 안전한 이관을 확보했습니다.
문제 상황
- 상품·쿠폰·증정·프로모션 혜택 데이터를 하나의 전시 화면에 통합해야 하는 구조
- 10년 이상 누적된 단일 프로시저 의존으로 최대 45분 지연, 전체 재계산에 따른 불필요한 I/O와 운영 리스크
- 도메인별 생명주기와 실시간성 요구가 달라 단순한 일괄 이벤트 전환이 어려운 상황
원인 분석
- 도메인 로직이 프로시저 안에 강결합되어 정책 변경 추적과 테스트가 어려운 상태
- 스트리밍과 배치가 같은 Row를 갱신하며 락, 경합, 덮어쓰기 가능성 존재
- Kafka 신호 유실과 메시지 중복, 처리 순서 비보장으로 정합성 확보 필요
해결 방법
- 도메인 특성에 따라 배치 발행과 이벤트 기반 처리를 섞은 하이브리드 구조 적용
- Redis Pub/Sub과 상태 플래그를 조합해 배치-스트리밍 동시성 제어, 신호 유실 시 폴링 확인으로 안전장치 추가
- Aggregation Topic, 상품ID 파티셔닝, UPSERT와 최신 타임스탬프 필터로 순서와 멱등성 보장
적용해볼 점
- 레거시 전환 시 Shadow Table로 병행 검증 후 롤아웃하는 방식
- 완전한 실시간성보다 정합성과 안정성을 우선하는 판단
- 변경된 데이터만 처리하는 이벤트 기반 전환으로 운영 부하 감소
