
백엔드
쿠폰, 어디에 쓸 수 있어요? — 이벤트 기반 적용 상품 조회 시스템 구축
두줄요약
쿠폰 적용 가능 상품을 실시간으로 조회하기 위해 이벤트 기반 반정규화와 Elasticsearch 인덱싱 구조를 구축했습니다. 복잡한 매핑과 갱신 조건을 단순화하고 검색 성능과 운영성을 함께 개선했습니다.
문제 상황
- 쿠폰이 어떤 상품에 적용되는지 사용자가 바로 확인할 수 없는 구조
- 상품 설정, 쿠폰 매핑, 제외 매핑, 실시간 가격 변동이 얽힌 복잡한 적용 조건
- 기존 PLP, SRP와 같은 필터·정렬·페이지네이션 경험을 쿠폰 목록에도 동일하게 제공할 필요
구조와 흐름
- 쿠폰-상품 쌍 정보를 기준으로 반정규화 테이블 구성
- 상품·쿠폰 변경 이벤트를 Kafka로 발행하고 워커가 적용 가능 여부를 갱신
- Debezium CDC로 변경 내역을 추적해 상품별 쿠폰 목록을 Elasticsearch에 인덱싱
성능/운영 포인트
- 단일 테이블 조회로 적용 가능 여부를 빠르게 판별하는 구조
- 변경 시점마다 실시간에 가깝게 최신 데이터 반영
- 메시지 과다 발행과 소비 병목을 배치 소비, Kafka 튜닝, 발행 대상 축소로 완화
적용해볼 점
- 복잡한 매핑 로직은 반정규화와 이벤트 기반 갱신으로 단순화 가능
- 검색 화면과 연계되는 도메인 데이터는 ES 인덱싱으로 조회 경험을 맞추는 방식이 유효
- 대용량 갱신에서는 메시지 범위와 소비 효율 최적화가 핵심
