피드로 돌아가기
외부 백엔드 커뮤니티와 함께 한 올리브영의 SpringCamp 2025 참가 후기
올리브영 테크블로그올리브영 테크블로그
Backend

외부 백엔드 커뮤니티와 함께 한 올리브영의 SpringCamp 2025 참가 후기

올리브영이 물류 시스템을 EAI+배치에서 AWS MSK(Kafka) 기반 실시간 처리로 전환하고 RDB 중심 재고 시스템을 Redis 기반으로 개선

2025년 8월 28일12intermediate

Context

올리브영은 매 세일마다 매출 신기록을 갱신하면서 세일 기간의 트래픽과 데이터 양이 기하급수적으로 증가했다. 기존 EAI(Enterprise Application Integration) + 배치 기반 물류 인터페이스는 실시간성과 확장성 측면에서 한계가 있었다. RDB 중심의 재고 시스템은 조회 시점의 재고만 파악할 수 있었고, 특정 시점의 재고 수량을 조회하려면 복잡한 다중 테이블 조인이 필요했다.

Technical Solution

  • 물류 IF 아키텍처 전환: EAI + 배치 기반 구조에서 AWS MSK(Kafka) 기반 실시간 처리 시스템으로 변경
  • 순서 보장 전략: DLQ(Dead Letter Queue)가 필요한 경우 애플리케이션 수준 재처리 전략 구현, 순서 보장이 필수인 토픽은 메시지 키 기반으로 Kafka 파티션을 구성하여 동일 키의 메시지를 같은 파티션으로 전송
  • 재고 시스템 저장소 전환: RDB 중심에서 Redis 기반으로 변경, 매장별 키(store key)를 생성하고 상품코드를 해시 필드, 재고 수량을 value로 구성
  • 데이터 정합성 관리: Oracle과 Redis 간 정합성을 주기적으로 검증하는 배치 작업 운영, 문제 발생 시 Datadog을 통해 Slack 알림 전송, 새벽 시간대에 Oracle 데이터를 기준으로 Redis 데이터를 일괄 업데이트
  • 재고 이력 통합 관리: EFK 스택(Elasticsearch, Fluentbit, Kibana) 기반 OpenSearch를 도입하여 재고 변경 이력을 통합 관리, Oracle 재고 변경 시점에 Redis와 함께 OpenSearch에 이력 저장, Fluentbit sidecar pattern으로 구축
  • 전자라벨 성능 최적화: 새벽 시간(매장 미운영 시간)에는 모든 매장의 모든 상품 재고를 조회하는 API 사용, 트래픽 많은 시간대(일과 시간)에는 변경된 재고 수량만 반환하는 API 사용

Impact

정량적 수치가 아티클에 명시되지 않음.

Key Takeaway

메시지 큐 도입 시 순서 보장 요구사항에 따라 DLQ vs 애플리케이션 수준 재처리 전략을 구분 적용해야 하며, 부하가 높은 작업은 시간대별로 조회 전략(전체 vs 변경분)을 동적으로 전환하는 것이 실전 운영의 핵심이다.


고트래픽 재고 시스템을 운영하는 팀에서 Redis 캐시를 도입할 때, 애플리케이션 로직과 배치 작업으로 Oracle(또는 주 DB)과 Redis 간 정합성을 자동으로 검증하고 새벽 시간대 일괄 복구 메커니즘을 구축하면, 정합성 오류 발생 시에도 자동 복구되는 신뢰성 높은 시스템을 구축할 수 있다.

원문 읽기