결제 시스템과 동시성 문제를 다룰 수 있는 프로젝트를 간단하게 구현해보고자 고민하던 중, 한정된 수량의 인기 상품을 특정 시간에 판매하는 서비스를 만들기로 결정했습니다.
기능 요구사항
핵심 기능
- 특정 시간(예: 10시)에 품절 대란인 물건이 판매된다.
- 사용자는 1인당 최대 3개까지만 구매 가능하다.
회원 가입
- 사용자 정보
- 고유 사용자 번호: 각 사용자는 고유한 번호를 가진다.
- 사용자 명:
- 로그인 아이디:
- 비밀번호:
로그인
- 사용자는 로그인 아이디(이메일)와 비밀번호를 입력하여 로그인할 수 있다.
내 정보 조회
물건 구매
- 구매 절차
- 사용자는 한 번에 하나의 물건만 구매할 수 있다.
- 한 물건당 최대 3개까지 구매가 가능하다.
- 구매 완료 시 조회
- 구매 완료 후, 신청 내용과 결제 금액을 최신순으로 조회할 수 있다.
물건 데이터 예시
물건 번호 |
물건 명 |
금액 |
1 |
두바이 초콜릿 |
10,000 |
2 |
두바이 초콜릿 라면 |
3,000 |
예외 처리
- 로그인 관련 예외
- 중복된 로그인 아이디 생성
- 이메일 형식에 맞지 않는 로그인 아이디 입력
- 비밀번호 불일치
- 인증
- 구매 관련 예외
- 물건 재고가 부족할 때
- 1인당 구매 가능 개수를 초과한 경우
- 물건이 이미 품절된 경우 예외 처리
- 구매 요청 시 결제 실패(결제 시스템 오류 등) 시
- 잘못된 물건 번호 또는 없는 물건 번호로 구매 요청 시