이 프로젝트는 항해플러스 백엔드 6기 코스의 2주차 과제입니다.
TDD(테스트 주도 개발)와 Clean Architecture(클린 아키텍처)를 이용하여 토요일 특강을 신청할 수 있는 서비스를 개발하며,
RDBMS를 이용해 특강 신청 및 신청자 목록을 관리할 방법을 고민합니다.
- 아래 2가지 API 를 구현합니다.
- 특강 신청 API
- 특강 신청 여부 조회 API
- 각 기능 및 제약 사항에 대해 단위 테스트를 반드시 하나 이상 작성하도록 합니다.
- 다수의 인스턴스로 어플리케이션이 동작하더라도 기능에 문제가 없도록 작성하도록 합니다.
- 동시성 이슈를 고려 하여 구현합니다.
- 선착순 30명 신청 가능
- 동일 신청자는 동일 강의에 한 번만 신청 가능
- 30명 초과 시 신청 실패
- 날짜별 신청 가능한 특강 목록 조회
- 각 특강의 정원은 30명으로 고정
- 사용자는 각 특강에 신청하기전 목록을 조회할 수 있어야 함
- 특정 userId로 신청 완료된 특강 목록 조회
- 특강 ID, 이름, 강연자 정보 포함
- 정확히 30명에게만 특강 제공 방법
- 동일 사용자의 중복 신청 방지 방법
- 아키텍처 준수를 위한 애플리케이션 패키지 설계
- 특강 도메인 테이블 설계 및 기본 기능 구현
- 각 기능에 대한 단위 테스트 작성
- 사용자 회원가입/로그인 기능 미구현
- 테이블 ERD 및 설명 README 작성
- 선착순 30명 이후 신청 실패 기능 구현
- 동시 40명 신청 시 30명만 성공하는 통합 테스트 작성
- 동일 사용자의 동일 특강 중복 신청 방지 기능 구현
- 동일 유저가 같은 특강 5번 신청 시 1번만 성공하는 통합 테스트 작성
- Default 과제 미충족 시 Step 3 / 4는 Fail 처리됨
- 구현 완료 후 Github Repository URL 제출
- 해당 프로젝트의 ERD 설계 보고서는 ERD.md 파일에서 확인할 수 있습니다.
- 해당 프로젝트 API 명세 보고서는 API.md 파일에서 확인할 수 있습니다.
- 해당 프로젝트의 분산 환경에서의 동시성 제어 보고서는 CONCURRENCY.md 파일에서 확인할 수 있습니다. 있습니다.