올리브영, Kafka 기반 준실시간 데이터 파이프라인 구축으로 45분 지연 해결!

by DD
1개월 전
조회수 56

10년 이상 운영된 배치 기반 혜택 데이터 파이프라인을 Kafka 기반 준실시간 구조로 전환하여 최대 45분 지연 문제를 해결

다수 도메인 데이터 통합을 위해 데이터 특성에 따른 처리 방식 분리, Aggregation Topic, 멱등성 보장 등 다양한 기술 도입

Redis Pub/Sub을 활용한 동시성 제어, Shadow Table을 이용한 데이터 정합성 검증을 통해 안정적인 시스템 구축

기존 프로시저의 복잡성, 도메인별 데이터 생명주기 차이, 레거시 환경과의 공존 등 다양한 기술적 난제 극복

전환 후 DB 부하 감소(buffer_gets 97.2% 감소, disk_reads 93% 감소) 및 혜택 플래그 반영 시간 단축으로 사용자 경험 개선

레거시 시스템의 문제점과 Kafka 기반 전환의 필요성

본문에서는 10년 이상 운영된 배치 기반 혜택 데이터 파이프라인의 문제점을 지적하며, Kafka(Kafka) 기반 준실시간 구조로의 전환 배경을 설명한다.

기존 프로시저(Procedure) 기반 시스템은 강결합 구조(Strongly Coupled Structure)로 인해 정책 변경의 어려움과 쿼리 테스트의 한계를 지님

데이터 변경 시마다 전체를 재계산하는 비효율적인 구조로 인해 불필요한 I/O(Input/Output) 발생 및 최대 45분까지 지연

데이터 지연(Data Delay)은 사용자 경험 저하 및 구매 결정에 부정적 영향을 미치므로, 준실시간 처리가 필수적

결과적으로, Kafka(Kafka)를 활용한 이벤트 기반 아키텍처(Event-Driven Architecture) 전환은 데이터 처리 속도 향상(Data Processing Speed Improvement)과 시스템 안정성 확보를 위한 핵심 전략이다.

데이터 특성에 따른 하이브리드 처리 전략

올리브영은 혜택 플래그(Benefit Flag) 데이터의 특성에 따라 하이브리드 처리 전략(Hybrid Processing Strategy)을 채택했다.

이벤트 기반(Event-Driven)으로 제공되는 데이터와 배치 기반(Batch-Based)으로 제공되는 데이터를 혼합하여 사용

Kafka(Kafka)로 발행되지 않는 데이터는 배치 발행 구조를 통해 점진적으로 이벤트 기반으로 전환

배치-스트리밍(Streaming) 간의 동시성 제어를 위해 Redis Pub/Sub(Redis Pub/Sub)을 활용하여 데이터 정합성(Data Integrity) 확보

이러한 접근 방식은 레거시 시스템(Legacy System)과의 점진적인 통합(Gradual Integration)을 가능하게 하며, 데이터 처리 방식의 유연성을 제공한다.

Redis Pub/Sub을 활용한 동시성 제어

본문에서는 Redis Pub/Sub(Redis Pub/Sub)을 활용하여 배치 작업과 스트리밍 작업 간의 동시성 문제를 해결한 방법을 제시한다.

다중 인스턴스 환경에서 플래그(Flag) 기반 동시성 제어의 한계를 극복하기 위해 Redis Pub/Sub 도입

배치가 시작/종료될 때 Kafka 일시 중지(Pause) 및 재개(Resume) 이벤트를 발행하여 모든 컨슈머(Consumer)에 동기화

폴링(Polling) 방식의 문제점을 해결하고, 인스턴스 수에 관계없이 일관된 동시성 제어 구현

결과적으로, Redis Pub/Sub은 푸시(Push) 기반의 제어 신호 전파(Control Signal Propagation)를 통해 데이터 갱신 경합(Data Update Contention)을 방지하고 시스템 안정성을 높였다.

Aggregation Topic을 활용한 데이터 정렬

올리브영은 Aggregation Topic(Aggregation Topic)을 도입하여 도메인 간 데이터 처리 순서 의존성 문제를 해결했다.

상품(Product) 정보와 쿠폰(Coupon), 행사(Event) 정보 간의 처리 순서(Processing Order) 보장 필요

상품 ID를 파티셔닝 키(Partitioning Key)로 사용하여 동일 상품 관련 이벤트의 순서를 보장

상품 정보가 없는 경우 쿠폰/행사 메시지를 건너뛰고, 상품 정보 처리 시점에 API를 통해 실시간 조회하여 적재

데이터 누락(Data Loss) 방지를 위해 슬랙 알림(Slack Alert), 데이터독(Datadog) 모니터링 등 후보정 프로세스(Post-Correction Process) 마련

이러한 구조는 데이터 일관성(Data Consistency) 유지와 시스템 안정성을 동시에 확보하는 데 기여한다.

데이터 정합성 검증 및 멱등성 보장 전략

본문에서는 데이터 정합성(Data Integrity) 확보를 위한 멱등성(Idempotency) 보장 전략과 Shadow Table(Shadow Table)을 활용한 검증 과정을 설명한다.

멱등성 보장(Idempotency Guarantee)을 위해 메시지 중복 제거 및 최신 타임스탬프(Timestamp) 기반 필터링 적용

UPSERT(Upsert) 처리로 중복 데이터 발생 시에도 데이터 정합성 유지

Shadow Table(Shadow Table) 병행 운영을 통해 기존 프로시저와 새 파이프라인의 결과 비교 및 불일치 탐지

3주간의 병행 운영 기간(Parallel Operation Period)을 통해 대규모 행사 환경에서의 안정성 검증

결과적으로, 멱등성 보장 전략과 Shadow Table(Shadow Table)을 활용한 검증은 데이터 품질(Data Quality) 향상과 안정적인 시스템 전환을 가능하게 했다.

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