8000 GitHub - hhpb-code/hhplus-tdd-clean-architecture-java: 2주차 발제: TDD & 클린 아키텍쳐
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

hhpb-code/hhplus-tdd-clean-architecture-java

Repository files navigation

hhplus-tdd-clean-architecture-java

프로젝트 소개

이 프로젝트는 항해플러스 백엔드 6기 코스의 2주차 과제입니다.
TDD(테스트 주도 개발)와 Clean Architecture(클린 아키텍처)를 이용하여 토요일 특강을 신청할 수 있는 서비스를 개발하며,
RDBMS를 이용해 특강 신청 및 신청자 목록을 관리할 방법을 고민합니다.

요구사항

  • 아래 2가지 API 를 구현합니다.
    • 특강 신청 API
    • 특강 신청 여부 조회 API
  • 각 기능 및 제약 사항에 대해 단위 테스트를 반드시 하나 이상 작성하도록 합니다.
  • 다수의 인스턴스로 어플리케이션이 동작하더라도 기능에 문제가 없도록 작성하도록 합니다.
  • 동시성 이슈를 고려 하여 구현합니다.

API 명세

1. 특강 신청 API (핵심)

  • 선착순 30명 신청 가능
  • 동일 신청자는 동일 강의에 한 번만 신청 가능
  • 30명 초과 시 신청 실패

2. 특강 선택 API

  • 날짜별 신청 가능한 특강 목록 조회
  • 각 특강의 정원은 30명으로 고정
  • 사용자는 각 특강에 신청하기전 목록을 조회할 수 있어야 함

3. 특강 신청 완료 목록 조회 API

  • 특정 userId로 신청 완료된 특강 목록 조회
  • 특강 ID, 이름, 강연자 정보 포함

API 엔드포인트

핵심 고려사항

  • 정확히 30명에게만 특강 제공 방법
  • 동일 사용자의 중복 신청 방지 방법

구현 단계

Default

  • 아키텍처 준수를 위한 애플리케이션 패키지 설계
  • 특강 도메인 테이블 설계 및 기본 기능 구현
  • 각 기능에 대한 단위 테스트 작성
  • 사용자 회원가입/로그인 기능 미구현

STEP 3

  • 테이블 ERD 및 설명 README 작성
  • 선착순 30명 이후 신청 실패 기능 구현
  • 동시 40명 신청 시 30명만 성공하는 통합 테스트 작성

STEP 4

  • 동일 사용자의 동일 특강 중복 신청 방지 기능 구현
  • 동일 유저가 같은 특강 5번 신청 시 1번만 성공하는 통합 테스트 작성

참고사항

  • Default 과제 미충족 시 Step 3 / 4는 Fail 처리됨
  • 구현 완료 후 Github Repository URL 제출

ERD 설계

  • 해당 프로젝트의 ERD 설계 보고서는 ERD.md 파일에서 확인할 수 있습니다.

API 명세

  • 해당 프로젝트 API 명세 보고서는 API.md 파일에서 확인할 수 있습니다.

분산 환경에서의 동시성 제어

  • 해당 프로젝트의 분산 환경에서의 동시성 제어 보고서는 CONCURRENCY.md 파일에서 확인할 수 있습니다. 있습니다.

About

2주차 발제: TDD & 클린 아키텍쳐

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

0