#Backend

45분 배치에서 준실시간으로! 다수 도메인 데이터를 Kafka로 통합한 전환기

45분 배치에서 준실시간으로! 다수 도메인 데이터를 Kafka로 통합한 전환기
01

Summary

45분 걸리던 올리브영 데이터 갱신, Kafka로 '준실시간' 퀀텀 점프!

10년 묵은 레거시 프로시저를 걷어내고 이벤트 드리븐 아키텍처로 전환한 올리브영의 기술 여정

커머스 전시 영역에서 데이터 지연은 사용자 경험과 직결되는 중대한 문제입니다. 본 아티클은 상품과 혜택 정보가 뒤섞인 복잡한 멀티 도메인 데이터를 어떻게 Kafka 스트림으로 통합하고, 동시성 이슈를 Redis로 해결했는지 상세히 다룹니다. 특히 10년 된 레거시 시스템을 중단 없이 안전하게 교체하기 위해 도입한 Shadow Table 검증 전략은 실무자들에게 귀중한 인사이트를 제공합니다.

  • 0145분 배치 지연을 준실시간으로 단축하여 정확한 프로모션 정보 노출 실현
  • 02Redis Pub/Sub을 활용해 다중 인스턴스 환경의 배치-스트리밍 경합 이슈 해결
  • 03상품 ID 기반 파티셔닝 키 설계를 통해 멀티 파티션 환경에서도 순서 보장과 확장성 동시 달성
  • 04Shadow Table 전략으로 3주간 병행 운영하며 레거시 시스템의 잠재적 버그 전수 조사
  • 05Aggregation Topic 도입으로 서로 다른 도메인 간의 데이터 선후 관계 의존성 제어

RECOMMENDATION

레거시 배치 시스템을 이벤트 기반으로 전환하려는 백엔드 엔지니어와 다수 도메인 데이터를 통합 처리해야 하는 설계자에게 강력 추천합니다. 특히 데이터 정합성이 중요한 커머스 환경에서 안전한 전환 기법을 고민 중이라면 이 사례가 훌륭한 길잡이가 될 것입니다.

The Problem

올리브영의 전시 시스템은 10년 이상 된 레거시 프로시저를 통해 상품, 쿠폰, 증정 등 다수 도메인의 데이터를 통합해왔으나, 데이터 갱신이 최대 45분까지 지연되어 사용자에게 잘못된 혜택 정보를 노출하는 문제가 있었습니다. 프로시저 내부의 강결합 구조로 인해 로직 추적이 어렵고 변경 시 운영 리스크가 컸으며, 매번 전체 데이터를 재계산하는 비효율적인 I/O 문제가 발생했습니다.

The Solution

기존 배치 구조를 Kafka 기반의 준실시간 이벤트 스트리밍 구조로 전환하고, Redis Pub/Sub을 활용해 다중 인스턴스 환경에서의 배치-스트리밍 간 동시성 제어 시스템을 구축했습니다. 상품 ID를 파티셔닝 키로 사용하는 Aggregation Topic을 도입하여 도메인 간 처리 순서 의존성을 해결했으며, Shadow Table 전략을 통해 3주간 기존 데이터와의 정합성을 검증한 후 전환을 완료했습니다.

The Result

최대 45분이었던 데이터 지연을 수 초 이내의 준실시간 수준으로 단축하여 사용자에게 정확한 혜택 플래그를 노출할 수 있게 되었습니다. 또한 불필요한 DB 재계산 부하를 줄이고 도메인별 책임 분리를 통해 시스템의 확장성과 유지보수성을 확보했으며, 검증 과정에서 레거시 시스템의 숨은 결함들을 찾아내어 데이터의 신뢰도를 높였습니다.

Trade-off

시스템 안정성을 위해 배치가 수행될 때 스트리밍 소비를 일시 중단하는 구조를 선택함에 따라, 배치 주기 동안에는 실시간 데이터 갱신이 다소 지연될 수 있는 트레이드오프가 발생합니다. 또한 Redis Pub/Sub의 신호 유실 가능성에 대비해 폴링 및 타임아웃 메커니즘을 추가함으로써 시스템의 복잡도가 다소 증가했습니다.

03

Key Concepts

Concept · 01

Aggregation Topic

서로 다른 소스에서 발생하는 다양한 이벤트를 하나의 토픽으로 모아 특정 키를 기준으로 처리 순서를 조율하는 기술적 패턴입니다.

  • 상품, 쿠폰, 행사 이벤트를 하나의 토픽으로 수집
  • 상품 ID를 파티셔닝 키로 사용하여 동일 상품에 대한 이벤트 순서 보장
  • 순서 의존성이 있는 데이터 간의 적재 실패 문제 해결
Concept · 02

Redis Pub/Sub

메시지 지향 미들웨어로서 발행(Publish)과 구독(Subscribe) 모델을 통해 다수의 구독자에게 실시간으로 신호를 전파하는 시스템입니다.

  • 배치 작업 시작 시 모든 컨슈머 인스턴스에 Kafka Pause 신호 전파
  • 폴링 방식의 상태 확인 비용을 줄이고 즉각적인 제어 신호 전달
  • 플래그와 조합하여 분산 환경에서의 일관된 동시성 제어 구현
Concept · 03

Shadow Table Strategy

기존 시스템의 데이터와 병렬로 새로운 시스템의 데이터를 임시 테이블에 적재하여 결과값을 비교 검증하는 전략입니다.

  • 10년 된 레거시 프로시저 결과와 신규 파이프라인 데이터의 항목별 비교
  • 실제 운영 환경(올영세일 등)에서 데이터 정합성과 성능을 사전 검증
  • 미처 몰랐던 레거시 로직의 결함을 발견하고 데이터 신뢰도 확보