10년 묵은 레거시 프로시저를 걷어내고 이벤트 드리븐 아키텍처로 전환한 올리브영의 기술 여정
커머스 전시 영역에서 데이터 지연은 사용자 경험과 직결되는 중대한 문제입니다. 본 아티클은 상품과 혜택 정보가 뒤섞인 복잡한 멀티 도메인 데이터를 어떻게 Kafka 스트림으로 통합하고, 동시성 이슈를 Redis로 해결했는지 상세히 다룹니다. 특히 10년 된 레거시 시스템을 중단 없이 안전하게 교체하기 위해 도입한 Shadow Table 검증 전략은 실무자들에게 귀중한 인사이트를 제공합니다.
레거시 배치 시스템을 이벤트 기반으로 전환하려는 백엔드 엔지니어와 다수 도메인 데이터를 통합 처리해야 하는 설계자에게 강력 추천합니다. 특히 데이터 정합성이 중요한 커머스 환경에서 안전한 전환 기법을 고민 중이라면 이 사례가 훌륭한 길잡이가 될 것입니다.
올리브영의 전시 시스템은 10년 이상 된 레거시 프로시저를 통해 상품, 쿠폰, 증정 등 다수 도메인의 데이터를 통합해왔으나, 데이터 갱신이 최대 45분까지 지연되어 사용자에게 잘못된 혜택 정보를 노출하는 문제가 있었습니다. 프로시저 내부의 강결합 구조로 인해 로직 추적이 어렵고 변경 시 운영 리스크가 컸으며, 매번 전체 데이터를 재계산하는 비효율적인 I/O 문제가 발생했습니다.
기존 배치 구조를 Kafka 기반의 준실시간 이벤트 스트리밍 구조로 전환하고, Redis Pub/Sub을 활용해 다중 인스턴스 환경에서의 배치-스트리밍 간 동시성 제어 시스템을 구축했습니다. 상품 ID를 파티셔닝 키로 사용하는 Aggregation Topic을 도입하여 도메인 간 처리 순서 의존성을 해결했으며, Shadow Table 전략을 통해 3주간 기존 데이터와의 정합성을 검증한 후 전환을 완료했습니다.
최대 45분이었던 데이터 지연을 수 초 이내의 준실시간 수준으로 단축하여 사용자에게 정확한 혜택 플래그를 노출할 수 있게 되었습니다. 또한 불필요한 DB 재계산 부하를 줄이고 도메인별 책임 분리를 통해 시스템의 확장성과 유지보수성을 확보했으며, 검증 과정에서 레거시 시스템의 숨은 결함들을 찾아내어 데이터의 신뢰도를 높였습니다.
Trade-off
시스템 안정성을 위해 배치가 수행될 때 스트리밍 소비를 일시 중단하는 구조를 선택함에 따라, 배치 주기 동안에는 실시간 데이터 갱신이 다소 지연될 수 있는 트레이드오프가 발생합니다. 또한 Redis Pub/Sub의 신호 유실 가능성에 대비해 폴링 및 타임아웃 메커니즘을 추가함으로써 시스템의 복잡도가 다소 증가했습니다.
서로 다른 소스에서 발생하는 다양한 이벤트를 하나의 토픽으로 모아 특정 키를 기준으로 처리 순서를 조율하는 기술적 패턴입니다.
메시지 지향 미들웨어로서 발행(Publish)과 구독(Subscribe) 모델을 통해 다수의 구독자에게 실시간으로 신호를 전파하는 시스템입니다.
기존 시스템의 데이터와 병렬로 새로운 시스템의 데이터를 임시 테이블에 적재하여 결과값을 비교 검증하는 전략입니다.