Skip to content

JEONGBEOMKO/hhplus-1week-tdd

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 

Repository files navigation

요구 사항

  • PATCH /point/{id}/charge : 포인트를 충전한다.
  • PATCH /point/{id}/use : 포인트를 사용한다.
  • GET /point/{id} : 포인트를 조회한다.
  • GET /point/{id}/histories : 포인트 내역을 조회한다.
  • 잔고가 부족할 경우, 포인트 사용은 실패하여야 합니다.
  • 동시에 여러 건의 포인트 충전, 이용 요청이 들어올 경우 순차적으로 처리되어야 합니다.

Default

  • /point 패키지 (디렉토리) 내에 PointService 기본 기능 작성
  • /database 패키지의 구현체는 수정하지 않고, 이를 활용해 기능을 구현
  • 각 기능에 대한 단위 테스트 작성

총 4가지 기본 기능 (포인트 조회, 포인트 충전/사용 내역 조회, 충전, 사용) 을 구현합니다.

Step 1

  • 포인트 충전, 사용에 대한 정책 추가 (잔고 부족, 최대 잔고 등)
  • 동시에 여러 요청이 들어오더라도 순서대로 (혹은 한번에 하나의 요청씩만) 제어될 수 있도록 리팩토링
  • 동시성 제어에 대한 통합 테스트 작성

Step 2

  • 동시성 제어 방식에 대한 분석 및 보고서 작성 ( README.md )

동시성 제어 방법

  • Syncronized : 특정 메서드나 블록에 대해 동시 접근을 제한하는 가장 기본적인 방법.
  • ReentrantLock: 더 복잡한 잠금 방식을 제공하며, 명시적으로 잠금을 제어할 수 있음. 특히 타임아웃과 인터럽트 기능을 제공.
  • ConcurrentHashMap: 동시성 문제를 해결하기 위해 특별히 설계된 데이터 구조로, 병렬성을 지원하며 여러 스레드가 안전하게 사용할 수 있음.
  • CompletableFuture : 비동기 작업을 처리하면서, 특정 시점에 모든 작업이 완료되면 결과를 병합하는 방식.

About

항해 플러스 백엔드6기 1주차 발제

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages