일기 slecs

거래자 발행·구매 구조의 쿠폰 도메인 모델 설계

목차

8월엔 쿠폰 모듈을 설계했다. slecs 에서 쿠폰은 단순 할인 코드가 아니라 거래자가 발행하고 사용자가 구매하는 구조였다. 이 개념이 처음엔 헷갈렸다.

쿠폰을 제품으로 보는 관점

쿠폰 자체가 하나의 상품처럼 작동한다. 거래자가 쿠폰을 등록하고, 사용자가 그걸 구매하고, 구매한 쿠폰을 나중에 사용한다. 이때 결제 흐름과 쿠폰 사용 흐름이 분리되어야 한다. 결제는 쿠폰을 구매할 때, 사용은 별도의 이벤트로.

설계하면서 가장 고민됐던 건 만료 처리였다. 사용 가능 기간, 구매 가능 기간, 실제 사용 기간이 각각 다를 수 있다. 이걸 어떤 컬럼 조합으로 표현하느냐. 너무 유연하게 만들면 복잡해지고, 너무 단순하게 만들면 요구사항을 못 수용한다.

쿠폰 상태 정의

쿠폰 상태 설명
ACTIVE 구매 가능 상태
PURCHASED 구매 완료, 사용 전
USED 사용 완료
EXPIRED 유효기간 만료
CANCELLED 환불/취소

회사는 여름 비수기라 조용했다. 그 덕분에 8월엔 사이드에 조금 더 시간을 쓸 수 있었다. 커밋 수는 아직 없지만 설계 완성도는 올라간 달이었다. 이 설계가 나중에 실제 코드로 구현될 때 큰 역할을 했다. 설계 없이 코딩하면 중간에 뜯어고치게 된다는 걸 다시 한번 확인했다.

쿠폰 설계를 마무리하면서 slecs 의 도메인 모델이 어느 정도 완성됐다는 느낌이 들었다. 회원, 상품, 주문, 결제, 거래자, 쿠폰. 이것들이 서로 어떻게 연결되는지가 머릿속에 그려졌다. 이제 남은 건 이걸 실제 코드로 구현하는 것이었다.

댓글 0

첫 댓글 달아줘.