쿠폰 발급·적용·만료 상태 관리와 동시성 처리로 쿠폰·포인트 시스템 결
쿠폰 시스템 개발에서 가장 복잡한 부분은 쿠폰 상태 전이 관리였습니다. 발급·적용·사용·만료·취소 각 상태가 명확히 정의되지 않으면 이미 사용된 쿠폰이 다시 적용되거나 취소 시 복원이 안 되는 문제가 생겼습니다.
동시성 처리도 중요한 설계 과제였습니다. 선착순 쿠폰처럼 발급 수량이 제한된 경우, 여러 사용자가 동시에 요청할 때 수량이 초과되는 문제가 생겼습니다. 비관적 락이나 레디스 기반 분산 락을 적용해 초과 발급을 방지했습니다.
포인트 시스템에서는 적립·소멸·사용 이력을 모두 기록하는 이벤트 소싱 방식을 사용했습니다. 현재 잔액을 업데이트하는 것보다 변경 이력을 쌓고 집계로 현재 값을 계산하면 감사 추적과 오류 복구가 수월했습니다.