프로젝트 모음 워크스페이스(BE)

**integrated-api-workspace**
├── **fast-api-server** (project) 
├── **springboot-root** (project) 
├── ...
└── **docker-compose.yml**
    ├── postgresql 14
    ├── redis 7
    └── swagger-ui-program

멀티모듈: 마이크로 서비스 표현

스프링 부트 멀티모듈 프로젝트

**springboot-root** (project)
├── **common**
├── **base-modules**
│   ├── joara-jwt-parser                (utility module)
│   ├── joara-file-uploader             (utility module)
│   │
│   ├── joara-global-exception-handler  (AOP module)        - for each service modules(using spring web)
│   ├── joara-integrated-flyway-core    (core module)       - for each service modules(using DB)
│   └── joara-jpa-base                  (support module)    - for jpa modules(jpa adapter)
│
├── **authentication-service**  (service module)  - 8080
├── **book-service**            (service module)  - 8090
└── **board-service**           (service module)  - 미완(8010)

멀티 모듈: 헥사고날 아키텍처 + JPA Entity | Domain Model 구분

헥사고날 아키텍처 + JPA Entity | Domain Model 구분

**springboot-root** (project)
├── ... (common, base modules, ...)
│
├── **authentication-service**  (service module)
│   ├── **driving**
│   │   ├── **web-adapter**                          (api controllers), (driving adapter) 일반 사용자에게 API 제공
│   │   └── **internal-api-adapter**                 (api controllers), (driving adapter) 다른 마이크로서비스에 API 제공
│   ├── **driven**
│   │   ├── **rdb-adapter**                          (jpa repository, domain repository impl), (driven adapter)
│   │   └── **redis-adapter**                        (redis repository), (driven adapter)
│   │
│   ├── **application** (ports)
│   │   ├── **domain**
│   │   ├── **read-models**
│   │   └── src (이하 패키지들)
│   │       ├── config
│   │       ├── exception
│   │       ├── properties
│   │       ├── domain repositories
│   │       ├── service                          (service impl)
│   │       ├── usecase                          (service interface) - 세분화된 서비스 인터페이스. web-adapter가 이를 구현.
│   │       └── utils
│   │
│   ├── AuthenticationServiceApplication.java
│   └── application.yml
│
└── **book-service**            (service module)
    ├── **driven**
    │   ├── ...
    │   │
    │   └── **joara-member-client**     (client module) 다른 마이크로서비스의 API를 이용(주로 내부 API)
    ├── **application**
    │   ├── ...
    │   └── clients/MemberQueryPort.java    (client port file) (interface) 다른 도메인의 정보를 조회하는 인터페이스 예시
    │
    ├── BookServiceApplication.java
    └── application.yml