목적: 가상의 요구사항을 통해 백엔드 역량 향상
- 모든 커밋은 의미있어야하며, 커밋사항은 다음과 같은 태그를 사용해야합니다.
Add
: 새로운 요구사항이나 기능을 추가할 때 사용합니다.Update
: 기존의 요구사항이나 기능을 수정할 때 사용합니다.Delete
: 기존의 요구사항이나 기능을 삭제할 때 사용합니다.Fix
: 오류를 수정할 때 사용합니다.Refactor
: 코드의 리팩토링을 할 때 사용합니다.Docs
: 문서를 수정할 때 사용합니다.Test
: 테스트 코드를 작성할 때 사용합니다.Chore
: 빌드, 패키지 등의 작업을 할 때 사용합니다.
- 마일스톤 하나당 여러개의 기능구현에 관한 이슈들이 존재합니다.
- 각자 해당하는 이슈를 브랜치에서 작업합니다.
- Pull Request를 통해 코드리뷰를 요청합니다.
- 코드리뷰를 통해 수정사항이 있을 경우 수정하고 다시 Push를 진행합니다.
- 계좌 조회: 사용자는 자신의 계좌 잔액과 최근 거래 내역을 볼 수 있어야 합니다.
- 입금 기능: 사용자가 자신의 계좌나 다른 사용자의 계좌로 돈을 입금할 수 있어야 합니다.
- 출금 기능: 사용자가 계좌에서 돈을 출금할 수 있어야 합니다.
- 송금 기능: 사용자가 다른 계좌로 돈을 이체할 수 있어야 합니다.
- 계좌 생성 및 삭제: 새로운 계좌를 개설하거나 기존 계좌를 삭제할 수 있어야 합니다.
- 오류 처리: 입력 오류, 처리 오류 등을 사용자에게 알려줄 수 있는 간단한 오류 메시지와 함께 적절한 오류 처리가 필요합니다.
- 프로그래밍 언어: 자바
- 데이터베이스 관리: MySQL, Oracle 등의 RDBMS를 사용하여 데이터를 관리합니다.
- 클라이언트-서버 아키텍처: 클라이언트 애플리케이션과 서버 애플리케이션으로 분리하여 개발합니다.
- JDBC를 활용하여 데이터소스를 RDBMS와 연결할 것.
- 2건이상의 동시적인 트랜잭션 발생시 순서를 부여하여, 동시성 제어가 가능하도록 한다.
- 동료 개발자가 볼 수있게 주석 또는 코드 정리를 통해서 가독성을 추가한다.
- 기능은 테스트에 의존하도록 설계한다. / 또는 설계되어있지않으면 테스트를 추가한다.
- 모든 작성코드가 테스트를 통해 실행될수있도록 jacoco를 활용한다.
- 로컬에서 활용할수있는 데이터베이스의 부하테스트를 통해 최대 tps를 산정한다.
- 데이터베이스와 격리해서 진행할 테스트를 설계하고 분리한다.
- Mysql에서 최대 tps의 60%를 넘지 않도록 설정하고, 60%를 넘어서는 부하가 생길때 알람이 생기도록 설계한다.
- 만약 부하가 생겼을때, 부하를 줄이기위해 Mysql을 스케일링 할지 또는 다른 데이터베이스를 활용할지 고민해보도록 한다.
## 2024-05-05
### 1. 기능적 요구사항(Functional Requirements)
- 로그인 기능: 사용자는 로그인을 통해 서비스를 이용할 수 있어야 합니다.
- 인증 기능: 사용자는 로그인 후 자신의 계정에 대한 인증을 받을 수 있어야 합니다.
- 인가 기능: 사용자는 자신의 계정에 대한 권한을 부여받을 수 있어야 합니다.
### 2. 기술적 요구사항(Technical Requirements)
- 톰캣 등 서버를 활용하여 서버를 구동할 수 있어야 합니다.
- 서버와 클라이언트 간의 통신은 HTTP 프로토콜을 사용합니다.
- Servlet을 활용하여 서버 애플리케이션을 개발합니다.
- 프론트엔드는 별도로 구현하지 않습니다.