개발하면서 고민한 것, 오류 등을 정리하였습니다.
11번가가 제공하는 '쇼킹딜' 서비스는 특정 상품에 대해서 특정 시간 동안만 특가 가격으로 상품을 구매할 수 있는 서비스이다. 이와 같은 타임딜 REST API 서버를 구축해 보려고 한다.
🚧 TODO
- [회원] 가입/탈퇴/조회
- [상품] 등록/수정/삭제/목록/상세
- 구매하기
- 각 상품마다 '구매 가능한 시간'이 있다.
- '구매 가능 시간' 전에는 구매가 불가능하다.
- '구매 가능 시간'이 도래하면 구매가 가능하다.
- 유저는 일반 유저와 어드민 유저를 구분해야 한다.
- 상품 등록은 어드민 권한을 가진 유저만 등록 가능하다.
- 각 상품마다 구매 가능한 수량이 있다.
- 정해진 수량을 모두 판매하면 더 이상 구매할 수 없다.
- 상품별로 구매한 유저 리스트를 조회할 수 있어야 한다.
- 유저별로 구매한 상품 리스트를 조회할 수 있어야 한다.
- 상품을 구매한 사람 수와 상품의 재고수량이 일치해야 한다.
- 구매하기 API는 구매 성공/실패만 구분해도 된다.
기능 | HTTP Method | HTTP Path | |
---|---|---|---|
✅ | [회원] 가입 | POST | /users |
✅ | [회원] 조회 | GET | /users/{userId} |
✅ | [회원] 목록 | GET | /users |
✅ | [회원] 수정 | PUT | /users/{userId} |
✅ | [회원] 탈퇴 | DELETE | /users |
기능 | HTTP Method | HTTP Path | |
---|---|---|---|
✅ | [상품] 등록 | POST | /products |
✅ | [상품] 조회 | GET | /products/{productId} |
✅ | [상품] 목록 | GET | /products |
✅ | [상품] 수정 | PUT | /products/{productId} |
✅ | [상품] 삭제 | DELETE | /products/{productId} |
기능 | HTTP Method | HTTP Path | |
---|---|---|---|
✅ | [구매] 구매 | POST | /purchase |
✅ | [구매] 회원별 구매 상품 리스트 | GET | /purchase/{userId}/user |
✅ | [구매] 상품별 구매 유저 리스트 | GET | /purchase/{productId}/product |
기능 | |
---|---|
진행중 | 테스트코드 |
API 문서 | |
CI/CD 구축 | |
성능 테스트 |
- 페이징 처리
- 상품 여러개 구매
- 구매시 알림톡
기능 개발을 체계적으로 해보고싶어서 브랜치 전략 사용
- github 브랜치 전략을 사용하여 프로젝트 진행
- feature : 주요 기능에 대한 작업을 하는 브랜치
- 개발이 완료되면 PR을 올리고, main에 머지
- main : 개발이 완료되면 feature 브랜치를 머지
- feature : 주요 기능에 대한 작업을 하는 브랜치
🚧 TODO