옴니채널 재고 정합성 확보를 위한 데이터 파이프라인 개편
올리브영은 옴니채널 전략 지원을 위해 대규모 재고 데이터 처리 및 낮은 지연 시간 유지 목표를 설정함
매장 재고 데이터는 온라인몰 앱의 전시, 검색, 장바구니 등 구매 여정 전반에 활용됨
기존 파이프라인은 기초 재고 생성 리드타임 증가, 동기식 적재 병목, API 조회 방식의 비효율성 등 구조적 한계에 직면함
이벤트 기반 아키텍처(EDA)로 전환하여 기초 재고 생성 시간 50% 단축, 동기식 병목 해소, 데이터 전달 방식 분리(Push/Pull)를 달성함
옴니채널 재고 관리의 복잡성과 중요성
옴니채널 환경에서 정확하고 실시간에 가까운 재고 정보를 제공하는 것은 고객 경험과 비즈니스 신뢰도에 직결되는 핵심 요소임.
온라인몰, 오프라인 매장 POS, PDA 등 다양한 채널에서 재고 데이터가 활용되며, 구매 여정 전반에 걸쳐 실시간 조회가 필수적임.
기초 재고 생성부터 실시간 변동 처리까지, 데이터 파이프라인의 정합성(Data Integrity)과 안정성(Stability) 확보가 무엇보다 중요함.
재고 데이터의 부정합은 고객 경험 저하 및 비즈니스 기회 손실로 이어질 수 있어, 안정적인 재고 서빙 아키텍처 구축이 필수적임.
기초 재고 생성 리드타임 단축 전략
기존 기초 재고 생성 과정은 매출, 상품 수 증가에 따라 연산량이 늘어나 리드타임이 증가하는 한계가 있었음.
Spring Batch Partitioning을 도입하여 매장 그룹을 파티션 키로 삼아 병렬 처리함으로써 생성 시간을 50% 단축 (평균 1~2시간 → 25분).
Amazon MWAA를 활용하여 기초 재고 파이프라인 전체를 안정적인 스케줄링 체계로 자동화하고 워크플로를 코드로 관리함.
약 2만 라인의 기존 프로시저 로직을 제거하고 코드 기반의 워크플로 관리로 전환하여 유지보수성을 향상시킴.
Kafka Fan-Out을 통한 데이터 적재 병목 해소
단일 파이프라인 내 동기식 데이터 적재 방식은 높은 결합도로 인해 한 서비스의 지연이 전체 파이프라인에 영향을 미치는 병목 현상을 야기했음.
Kafka Fan-Out 구조를 적용하여 하나의 변동 재고 토픽을 여러 컨슈머 그룹이 독립적으로 구독하도록 설계.
각 컨슈머 그룹은 자체 오프셋(Offset)을 관리하므로, 특정 컨슈머의 처리 지연이 다른 그룹에 전파되지 않아 연쇄 지연 문제 해결.
매장재고, 시계열재고, 품절여부 등 다양한 데이터 모델을 독립적으로 처리하여 실시간성과 안정성을 동시에 확보함.
서비스 특성에 따른 데이터 전달 방식 분리 (Push/Pull)
모든 사용처에 단일 API 조회(Pull) 방식을 적용하는 것은 불필요한 오버헤드와 Read 부하를 유발하는 비효율적인 구조였음.
이벤트 기반 PUSH 방식 도입: 자체 데이터 스토어를 가진 서비스는 변동 재고 토픽을 구독하여 자율적으로 데이터를 동기화하고, API 호출을 약 90% 감소시킴.
실시간 온디맨드 PULL 방식 유지: 구매 결정 순간에 직결되는 서비스에는 매장재고 API를 실시간으로 제공하여 미세한 정합성 오류도 방지함.
이로써 각 서비스는 자신의 요구사항에 맞는 데이터 소비 방식을 선택할 수 있게 되어 효율성과 안정성을 높임.
인벤토리 시스템의 이벤트 기반 아키텍처(EDA) 전환
기존의 단일 동기식 구조에서 이벤트 기반 아키텍처(Event-Driven Architecture, EDA)로의 전환은 옴니채널 요구사항에 유연하게 대응하기 위한 구조적 개선임.
메인 인벤토리 서비스의 역할 최적화 및 각 서비스 목적에 맞게 데이터 분산.
Kafka, Spring Batch, Amazon MWAA 등 다양한 기술을 활용하여 파이프라인의 처리량(Throughput)과 지연 시간(Latency)을 개선하고 안정성을 확보함.
개편 이후 각 서비스는 성격에 맞는 방식으로 재고를 소비할 수 있게 되었으며, 인벤토리 시스템의 확장성(Scalability) 기반을 마련함.