편의점과의 제휴로 총 100장의 쿠폰을 제공하기로 하였다.
쿠폰은 회사에서 발급하며 숫자와 영대소문자로 구성된 총 10자리 이다.
쿠폰생성시점은 유저가 쿠폰발급 요청시 만들어도 무관하다.
인당 1장만 받을 수 있으며, 이미 받은 유저가 발급을 시도하면 이미 받은 쿠폰을 반환한다.
100장이 모두 제공된 후에는 404 에러를 반환한다.
그 외, 유저가 실패하는 케이스는 없다.
Important
분산 환경이라고 가정한다.
- 쿠폰 발급을 신청한다.
- [POST] apply/coupon
- 📢 예외 처리
- 이미 쿠폰을 발급한 상태이면
기존의 쿠폰을 반환한다.
- 이미 쿠폰을 발급한 상태이면
- 쿠폰을 생성한다.
- [POST] /coupon/issue
- 유저가
발급 신청 시에 생성한다. 숫자와영대소문자로 구성된 총10자리이다.- 중복의 value값을 가진 쿠폰 만드는 것은 피한다.
- 유저가
- [POST] /coupon/issue
- 쿠폰은 인당 한 장만 발급 가능하다.
- [GET] /coupon/get/{id}
- 쿠폰의 수량은 100장이다.
- 📢 예외처리
- 쿠폰 100장이 모두 제공된 후에는 404 에러를 반환한다.
- 비관락을 사용하여 구현하기
- 낙관락을 사용하여 구현하기
- 분산락을 사용하여 구현하기
- github에 레포하나 파서 각 락 단위로 pr을 남길것
- k6로 부하테스트 한 걸 pr에 포함할 것