**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 구분
**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