계좌 시스템(Account System) 개발 프로젝트

최동근·2022년 12월 17일
1

프로젝트

목록 보기
1/2

안녕하세요
해당 글은 "스프링부트를 이용한 계좌 시스템 개발 프로젝트"를 진행하면서 배웠던 점 & 느꼈던 점을 정리하고자 제작되었습니다.

목차

  1. 프로젝트 소개
  2. API 소개
  3. 기술 스택 소개 및 스프링 부트 설정

1. 프로젝트 소개

프로젝트 기획자 로부터 프로젝트 소개가 들어왔습니다.

A 회사는 신규 사업으로 핀테크를 하려고 합니다.
핀테크를 하려면 제일 먼저 필요한 것은 바로 사용자들의 잔액을 관리할 수 있는 계좌 시스템입니다.
계좌 시스템이 있어야 사용자의 잔액을 회사에서 계속 관리하고 사용자들은 그 잔액을 쓰기 위해 우리의 핀테크를 자연스럽게 사용하게 됩니다.
계좌 시스템을 만들어주세요 ❗️

저는 기획자로부터 상세 기획서를 받았습니다.
한번 볼까요?

계좌 시스템은 사용자와 계좌의 정보를 저장하고 있으며, 외부 시스템에서 거래를 요청한 경우
거래 정보를 받아서 계좌에서 잔액을 거래 금액만큼 줄이거나(결제), 거래 금액만큼 늘리는(결제 취소)
거래 관리 기능을 제공하는 시스템입니다.
크게 사용자, 계좌 ,거래의 정보를 저장해야 합니다.

사용자는 신규 등록, 해지, 중지, 사용자 정보 조회 등의 기능을 제공해야 하지만 최초 버전에서는 빠른 서비스 오픈을 위해 사용자 등록, 해지, 중지 기능은 제공하지 않고 데이터베이스 수기 입력을 합니다.
계좌는 계좌 추가, 해지, 확인 기능을 제공합니다. ❗️
한 사용자는 최대 10개의 계좌를 가질 수 있고 그 이상의 계좌는 생성하지 못합니다.
계좌번호는 10자리의 정수로 이루어지며 중복이 불가능합니다.
빠르고 안정적인 진행을 위해 계좌번호는 숫자 증가하도록 합니다.
거래는 잔액 사용, 잔액 사용 취소, 거래 확인 기능은 제공합니다. ❗️

2. API 소개

  • 계좌 🏦

    • 계좌 생성 API

      • Post/account
      • Parameter : 사용자 아이디, 초기 잔액

      • 정책 : 사용자가 없는 경우 or 계좌 10개인 경우 실패 응답

      • 응답 : 사용자 아이디, 계좌 번호, 등록 일시

    • 계좌 해지 API

      • Delete/account
      • Parameter : 사용자 아이디, 계좌 번호
      • 정책: 사용자 또는 계좌가 없는 경우 or 사용자 아이디와 계좌 소유주가 다른 경우 or
        계좌가 이미 해지 상태인 경우, 잔액이 있는 경우 실패 응답
      • 응답 : 사용자 아이디, 계좌번호, 해지 일시
    • 계좌 확인 API

      • get/ account?user_id={userId}
      • Parameter : 사용자 아이디
      • 정책: 사용자 없는 경우 실패 응답
      • 성공 응답 : List<계좌번호, 잔액> 구조

  • 거래 💰

    • 잔액 사용 API
      • Post/transaction/use
      • Parameter : 사용자 아이디, 계좌 번호, 거래 금액
      • 정책: 사용자 없는 경우, 사용자 아이디와 계좌 소유주가 다른 경우,
        계좌가 이미 해지 상태인 경우, 거래 금액이 잔액보다 큰 경우, 거래금액이 너무 작거나 큰 경우
        실패 응답
      • 성공 응답 : 계좌 번호, 거래 결과 코드(성공/실패), 거래 아이디, 거래 금액, 거래 일시
    • 잔액 사용 취소 API
      • Post/transaction/cancel
      • Parameter : 거래 아이디, 계좌 번호, 취소 요청 금액
      • 정책 : 거래 아이디에 해당하는 거래가 없는 경우, 계좌가 없는 경우, 거래와 계좌가
        일치하지 않는 경우, 거래 금액과 취소 금액이 다른 경우(부분 취소 불가능) 실패 응답
      • 성공 응답 : 계좌 번호, 거래 결과 코드(성공/실패), 거래 아이디, 거래 금액, 거래 일시
    • 잔액 사용 확인 API
      • Get/transaction/{transactionId}
      • Parameter : 거래 아이디
      • 정책 : 해당 거래 아이디의 거래가 없는 경우 실패 응답
      • 성공 응답 : 계좌 번호, 거래 종류(잔액 사용, 잔액 사용 취소), 거래 결과 코드(성공/ 실패)
        , 거래 아이디, 거래 금액, 거래 일시
      • 실패한 거래도 거래를 확인 할 수 있도록 합니다.

    3. 기술 스택 소개 및 프로젝트 설정

    활용 기술 스택 🦾

    • Spring boot 2.7.6 (JDK 11)
    • Gradle
    • Junit 5
    • H2 DB
    • JPA
    • Redis
    • Mockito
    • Lombok

    엔티티(Entity) 구조

프로젝트 build.gradle

application.yml


📣 프로젝트는 API 구현 기준으로 진행됩니다.

또한 새로운 라이브러리나 프레임워크를 사용하면서 배웠던 점 & 느꼈던 점 위주로 글을 작성하려고 합니다.
자 그럼 시작하겠습니다 🚀

profile
비즈니스가치를추구하는개발자

0개의 댓글