Kafka Streams 기반 EDA 구축 사례: 올리브영 품절 시스템 현대화 프로젝트
74
AI 요약

이 글은 AI가 원문을 분석하여 핵심 내용을 요약한 것입니다.

Kafka Streams 기반 EDA로 품절 시스템 현대화

이 게시물은 올리브영 온라인몰의 품절 여부(Sold Out Status) 조회/관리 프로세스를 Kafka Streams 기반 Event-Driven Architecture(EDA)로 개선한 사례를 설명합니다.

기존(AS-IS) 구조의 문제

  • 품절 여부 조회를 위해 Oracle 함수를 직접 호출하며 복잡한 쿼리 수행으로 응답 속도와 효율이 저하됨
  • 별도 캐시 없이 트래픽이 DB로 집중되어 올영세일 등 대규모 트래픽 시 DB 부하 및 서비스 품질 저하가 발생함

개선(TO-BE) 아키텍처와 처리 흐름

  • OGG(Oracle GoldenGate) CDC로 재고 변경을 감지해 Kafka Topic으로 즉시 발행하고, AWS MSK와 Kafka Streams로 실시간 처리 후 OpenSearch에 품절 정보를 저장함
  • 직매입/위수탁/예약·한정 등 상품 유형별로 재고 이벤트 처리 주체를 구분하고, 특히 위수탁 및 예약·한정 상품은 Kafka Streams로 상태 전환(소진/판매재개)을 감지해 SoldOut 토픽으로 발행함

Kafka Streams 선택 이유 및 주의점

선택 이유

  • Streams DSL로 map/filter 등 연산을 간결하게 구현하고 Consumer/Producer를 단일 애플리케이션으로 통합해 구조를 단순화함
  • 낮은 지연의 실시간 처리와 Exactly-once 처리 보장, 로컬 상태 저장소(RocksDB) 기반 복구를 장점으로 제시함

주의점

  • 외부 API/DB I/O 등 네트워크 통신이 필요한 고비용 작업은 지연을 유발하므로 지양해야 함
  • 토픽 조인은 동일 클러스터, 동일 키, 동일 파티션 수의 코파티셔닝 조건이 필요하며 본 품절 시스템에는 조인을 활용하지 못했음을 언급함

개선 결과

  • 올영세일 기간 모니터링 기준 Oracle 함수 호출량이 약 86% 감소(2.34G → 237M)하여 트래픽 상황에서 더 안정적인 서비스 제공이 가능해졌다고 보고함

연관 게시글