[사이드 프로젝트] 한정 수량 인기 상품 구매 서비스 만들기: 요구 사항

결제 시스템과 동시성 문제를 다룰 수 있는 프로젝트를 간단하게 구현해보고자 고민하던 중, 한정된 수량의 인기 상품을 특정 시간에 판매하는 서비스를 만들기로 결정했습니다.

기능 요구사항

핵심 기능

  • 특정 시간(예: 10시)에 품절 대란인 물건이 판매된다.
  • 사용자는 1인당 최대 3개까지만 구매 가능하다.

회원 가입

  1. 사용자 정보
    • 고유 사용자 번호: 각 사용자는 고유한 번호를 가진다.
    • 사용자 명:
      • 최소 2자, 최대 6자로 제한된다.
    • 로그인 아이디:
      • 이메일 주소를 사용하여 로그인할 수 있다.
    • 비밀번호:
      • 비밀번호는 암호화되어 DB에 저장된다.

로그인

  • 사용자는 로그인 아이디(이메일)와 비밀번호를 입력하여 로그인할 수 있다.

내 정보 조회

  • 사용자는 자신의 정보를 조회할 수 있다.

물건 구매

  1. 구매 절차
    • 사용자는 한 번에 하나의 물건만 구매할 수 있다.
    • 한 물건당 최대 3개까지 구매가 가능하다.
  2. 구매 완료 시 조회
    • 구매 완료 후, 신청 내용과 결제 금액을 최신순으로 조회할 수 있다.

물건 데이터 예시

물건 번호 물건 명 금액
1 두바이 초콜릿 10,000
2 두바이 초콜릿 라면 3,000

예외 처리

  1. 로그인 관련 예외
    • 중복된 로그인 아이디 생성
    • 이메일 형식에 맞지 않는 로그인 아이디 입력
    • 비밀번호 불일치
  2. 인증
    • 잘못된 토큰 전송 시 인증 실패 처리
  3. 구매 관련 예외
    • 물건 재고가 부족할 때
    • 1인당 구매 가능 개수를 초과한 경우
    • 물건이 이미 품절된 경우 예외 처리
    • 구매 요청 시 결제 실패(결제 시스템 오류 등) 시
    • 잘못된 물건 번호 또는 없는 물건 번호로 구매 요청 시