백엔드
Kafka Streams 기반 EDA 구축 사례: 올리브영 품절 시스템 현대화 프로젝트
두줄요약
품절 조회를 Oracle 함수 중심 구조에서 Kafka Streams 기반 EDA로 전환해 실시간 재고 처리를 개선했습니다. 그 결과 올영세일 기간 Oracle 함수 호출량을 크게 줄이며 서비스 안정성을 높였습니다.
문제 상황
- 품절 여부 조회가 Oracle 함수 직접 호출에 의존해 응답 속도 저하와 DB 부하 발생
- 올영세일 같은 대규모 트래픽에서 조회 지연이 서비스 품질 저하로 확대
- 캐시 없는 구조와 복잡한 쿼리로 확장성과 안정성 한계 노출
원인 분석
- DB 내부 로직 중심의 단일 의존 구조
- 배치 중심 처리로 인한 지연과 높은 서비스 결합도
- DB 부하가 전체 서비스 영향으로 이어지는 구조적 SPOF
해결 방법
- OGG, AWS MSK, Kafka Streams 기반 EDA로 재고 이벤트 파이프라인 재구성
- 재고 변경 시 CDC로 Kafka Topic 발행 후 Streams에서 실시간 가공해 OpenSearch 저장
- 위수탁·예약/한정 상품에 대해 품절 판단 이벤트를 별도 토픽으로 분리 처리
성능/운영 포인트
- Oracle 함수 호출량 약 86% 감소
- 실시간 반영으로 올영세일 기간 서비스 안정성 개선
- 스트림 처리에서 외부 API·DB I/O는 지양 필요
적용해볼 점
- DB 의존 비즈니스 로직의 이벤트 기반 전환 검토
- 실시간 처리와 확장성이 필요한 도메인에 Kafka Streams 활용 가능
- 조인 사용 시 키·파티션·코파티셔닝 조건 사전 점검 필요
