[ Spring boot와 Java를 활용하여 Account(계좌 관리) 시스템을 만드는 프로젝트 과제 ]
1️⃣ 공통 요구사항
- Spring boot와 Java를 활용합니다.
- 단위테스트를 작성하여 작성한 코드를 검증합니다.
- DB는 H2 DB(memory DB 모드)를 활용합니다.
- DB를 접근하는 방법은 Spring data jpa를 활용합니다.
- Embedded redis를 활용합니다.
- API Request body와 Response body는 json 타입으로 표현합니다.
- 각각의 API들은 각자의 요청과 응답 객체 구조를 갖습니다. (다만, 요청을 처리하다가 실패하는 경우의 응답은 공통된 구조를 갖도록 합니다.)
2️⃣ 프로젝트 소개
- Account(계좌) 시스템은 사용자와 계좌의 정보를 저장하고 있으며, 외부 시스템에서 거래를 요청할 경우 거래 정보를 받아서 계좌에서 잔액을 거래금액만큼 줄이거나(결제), 거래금액만큼 늘리는(결제 취소) 거래 관리 기능을 제공하는 시스템입니다.
- 구현의 편의를 위해 사용자 생성 등의 관리는 API로 제공하지 않고 프로젝트 시작 시 자동으로 데이터가 입력되도록 하며, 계좌 추가/해지/확인, 거래 생성/거래 취소/거래 확인의 6가지 API를 제공한다.
- 거래금액을 늘리거나 줄이는 과정에서 여러 쓰레드 혹은 인스턴스에서 같은 계좌에 접근할 경우 동시성 이슈로 인한 lost update가 발생할 수 있으므로 이 부분을 해결해야만 한다.
3️⃣ 각 API 명세서
✅ 계좌 관련 API
- 계좌 생성
- 계좌 해지
- 계좌 확인
✅ 거래(Transaction) 관련 API
- 잔액 사용
- 잔액 사용 취소
- 거래 확인