29CM 백엔드 개발자가 설계한 쿠폰 적용 가능 상품 목록 조회 기능 구현기: 이벤트 기반 아키텍처와 실시간 데이터 동기화
🤖 AI 추천
이 콘텐츠는 쿠폰 시스템과 같이 복잡한 도메인 로직을 실시간 데이터 처리 및 이벤트 기반 아키텍처를 활용하여 성공적으로 구현한 백엔드 개발자에게 실질적인 인사이트를 제공합니다. 특히, 복잡한 쿠폰 매핑 방식(제외 매핑 등)을 처리하고, 사용자 경험 일관성을 위해 Elasticsearch를 활용하는 방안에 관심 있는 개발자에게 추천합니다. 시스템 설계 과정에서의 반복된 변경, 메시지 처리 최적화 등 실제 개발 과정에서 겪는 어려움과 해결 과정에 대한 경험을 공유하므로, 미들 레벨 이상의 백엔드 개발자라면 큰 도움을 받을 수 있습니다.
🔖 주요 키워드

핵심 기술
29CM 백엔드 개발팀은 사용자들의 오랜 숙원이었던 '쿠폰 적용 가능 상품 목록 조회' 기능을 구현하기 위해, 복잡한 쿠폰 및 상품 설정을 실시간으로 동기화하고 Elasticsearch에 인덱싱하는 이벤트 기반 아키텍처를 성공적으로 구축했습니다.
기술적 세부사항
- 문제 정의: 사용자들은 보유 쿠폰에 적용 가능한 상품을 일일이 찾아봐야 하는 불편함을 겪었으며, 이는 쿠폰 적용 가능 상품 목록 조회 기능의 부재에서 기인했습니다.
- 주요 도전 과제:
- 쿠폰 및 상품 설정의 복잡성: 상품 개별 설정(판매가, 허용 여부)과 쿠폰 설정을 종합적으로 고려해야 했습니다.
- 실시간 변화하는 쿠폰 적용 조건: 운영 정책 변경, 할인 스케줄 업데이트 등으로 적용 가능 상품 목록이 동적으로 변했습니다.
- 복잡한 쿠폰 매핑 방식: '제외 매핑'과 같은 복잡한 방식은 수십만 개의 상품을 대상으로 한 처리 로직을 요구했습니다.
- 기존 상품 검색 경험과의 일관성 유지: 카테고리, 가격, 브랜드 필터 및 정렬 기능의 일관성을 유지해야 했습니다.
- 핵심 요구사항:
- 실시간 데이터 동기화 (쿠폰/상품 변경 시 즉시 반영)
- 다양한 매핑 방식 지원 (포함/제외 매핑 등)
- 검색 최적화를 위한 Elasticsearch 인덱싱
- 구현 아키텍처: 이벤트 기반 아키텍처를 중심으로 설계되었습니다.
- 상품/쿠폰 변경 이벤트 발생 시 A.쿠폰 적용 가능 상품 갱신 Kafka 토픽에 메시지 발행.
- Coupon-Event-Worker가 메시지를 소비하여 쿠폰 적용 가능 여부 판별 후 쿠폰 적용 가능 상품 반정규화 Table에 저장.
- Debezium을 활용하여 반정규화 테이블 변경 사항을 B.쿠폰 적용 가능 상품 CDC 토픽으로 발행.
- Coupon-Event-Worker가 CDC 메시지를 소비하여 상품별 적용 가능 쿠폰 목록을 C.쿠폰 적용 가능 상품 싱크 토픽에 발행.
- ES-Indexer가 싱크 토픽 메시지를 소비하여 Elasticsearch에 최종 결과 인덱싱.
- 데이터 구조: '쿠폰-상품' 쌍 형태로 데이터를 저장하는 반정규화 테이블을 구축했습니다.
개발 임팩트
- 사용자들은 이제 보유 쿠폰으로 구매 가능한 상품 목록을 쉽게 확인할 수 있게 되어 쇼핑 경험이 크게 향상되었습니다.
- 쿠폰 적용 판단 로직 단순화 및 성능/유지보수성 향상 (단일 테이블 조회로 즉시 확인 가능).
- 쿠폰 도메인 전반의 기능 개선 및 안정성 확보.
커뮤니티 반응
- 고객들로부터 '드디어 이 기능이 생겼다'는 긍정적인 피드백을 받으며 큰 보람과 성취감을 느꼈습니다.
톤앤매너
본 글은 IT 개발 기술의 구체적인 적용 사례를 공유하며, 실무적인 문제 해결 과정과 기술적 깊이를 전달하는 전문적인 톤앤매너를 유지합니다.
📚 관련 자료
Kafka
이 글에서 핵심적인 메시지 큐 시스템으로 사용되며, 이벤트 기반 아키텍처의 근간을 이루는 기술입니다. 시스템 전반의 비동기 통신과 데이터 흐름 관리에 필수적인 역할을 합니다.
관련도: 95%
Debezium
데이터베이스의 변경 사항을 실시간으로 캡처하여 Kafka 토픽으로 발행하는 CDC(Change Data Capture) 도구로 사용되었습니다. 이는 반정규화 테이블의 변경 사항을 실시간으로 추적하고 다른 시스템에 전파하는 데 중요한 역할을 합니다.
관련도: 90%
Elasticsearch
상품별 쿠폰 적용 가능 정보를 인덱싱하여 빠른 검색, 필터링, 정렬 기능을 제공하는 데 사용되었습니다. 사용자 경험과 성능 최적화를 위한 핵심 인프라스트럭처 요소입니다.
관련도: 85%