재고 변동을 시계열 데이터로 관리하기
·2024.11.15 09:00
올리브영 인벤토리 스쿼드가 Redis Stream을 활용해 대규모 SKU의 재고 변동 이력을 효율적으로 관리하는 방법을 소개한다.
올리브영은 1,000만 개 이상의 SKU를 관리하며, 특정 주기마다 대량의 재고 데이터를 동기화하는 과정에서 Redis CPU 부하와 API Latency가 급증하는 문제를 겪었습니다.
기존에는 Redis Hash 타입을 사용하여 최신 재고 수량만 저장했기 때문에, 타 시스템에서 전체 재고를 파악하려면 모든 데이터를 조회해야 하는 비효율이 있었습니다. 이를 개선하기 위해 판매, 입고, 반품 등 모든 재고 변동 이벤트를 Redis Stream으로 기록하기로 결정했습니다.
Redis Stream은 append-only 방식의 시계열 데이터 처리에 최적화되어 있으며, 다음과 같은 이점을 제공합니다.
- 처리 순서 보장: 고유한 Entry ID(timestamp-sequenceNumber)를 통해 데이터의 순서를 보장합니다.
- 효율적인 범위 조회: XRANGE 명령어를 통해 특정 시간 범위 내의 변동 이력을 빠르게 조회할 수 있습니다.
- 인프라 효율성: 별도의 추가 인프라 없이도 시계열 데이터를 처리할 수 있습니다.
구현 시에는 데이터의 영구 보관이 불필요하므로, Stream Key에 날짜를 포함하고 **TTL(Time To Live)**을 설정하여 만료된 데이터를 자동으로 정리함으로써 관리 효율성을 높였습니다.
이 요약은 원문 이해를 돕기 위한 큐레이션입니다. 저작권은 원저작자에게 있으며, 정확한 내용과 맥락은 원문을 확인하세요.
요약 오류, 출처 표기 문제, 삭제 요청은 문의 · 건의로 알려주세요.