Gradle, SrpingBoot, Multi Module) Finance API 코드 구조 (v.1.0.0)

v.1.0.0
- Major 버전 업
- Root Module 설계 변경
- Parent Module의 신규 생성
- Sub Modules의 컨셉 변경
- Minor 버전 업


컨셉
- 하나의 Git Repository는 하나의 도메인만 소유한다.
- ex) User Domain, Finanace Domain
- Layer간의 책임과 경계를 명확히 한다.
- '모듈'은 경계를 넘나들며 참조 하지 말 것. 절대 !
- 코드의 붕괴는 명확한 경계가 무너질 때 나타난다.
Layer 설명
Root Module
- Logger, Log Filter 등.
- Repository 전반에 영향을 끼치는 코드 덩어리.
- 단, 비즈니스 로직에 절대 관여해선 안되며, 특정 Layer에 종속되어도 안된다.
Data layer
- Persistent Layer와 동일.
- JPA Entity, Repository, Trasaction, DataSource Configuration 등.
- 데이터 명세와 DML에 대한 책임 명시.
- 단, 비즈니스 로직에 절대 관여해선 안됨. 오로지 데이터 명세에 대한 책임.
- 비즈니스 로직은 각 레이어의 Service Layer를 구성하여 처리
Job Layer
- 메시지 채널이 운영되는 레이어.
- 클라이언트의 입장으로서 서버의 데이터를 상시 동기화. (Spring Integration)
- 향후, 사용자들에게 알람을 보내기 위한 Sub Module 신설 예정.
Http Layer
- Presentation 영역에 대한 책임.
- 서버의 입장에서 클라이언트(Facade Layer or Other Domain)에 데이터 리턴.
- 대부분의 비즈니스 로직은 Job Layer에 두고 싶은데.. 차후에 어떻게 될런지 ?