Files
api2/docs/project-overview.md
T
2026-07-20 17:49:24 +09:00

60 lines
2.4 KiB
Markdown

# 프로젝트 개요
## 프로젝트 기본 정보
- 프로젝트 유형: Gradle 기반 Spring Boot 멀티모듈 모놀리식
- Java 버전: 21
- Spring Boot 버전: 3.5.10
- 저장소: 단일 Git 저장소
- 실행 서버: admin, front
## 모듈 구성
| 모듈 | 역할 | 실행 여부 |
|---|---|---|
| `01-api-core` | 공통 인프라, 공통 기능, 업무 모듈 | 실행하지 않음 |
| `02-api-admin` | 관리자 API, 관리자 보안과 Swagger 설정 | `api-admin.jar` |
| `03-api-front` | 사용자 API, 사용자 보안과 Swagger 설정 | `api-front.jar` |
admin/front는 `01-api-core`에 의존하지만 서로 의존하지 않습니다. 각 bootJar에는 core 라이브러리가 포함되며, 다른 서버의 Controller는 물리적으로 포함되지 않습니다.
## 패키지 구조
```text
com.alist.api.core
com.alist.api.admin
com.alist.api.front
```
`core`는 다음 책임으로 나눕니다.
- `common`: JWT, 예외, 응답, 페이징, 유틸과 같은 시스템 공통 기능
- `config`: DataSource, MyBatis, 공통 인프라 설정
- `modules.standard`: 재사용 가능한 표준 데이터 처리
- `modules.bespoke`: 기준 테이블의 업무 전용 JOIN·집계·특수 SQL 데이터 접근
`admin``front`에는 Controller, 업무 Service, Form, 외부 응답 VO, 서버별 `SecurityConfig`, `OpenApiConfig`, 환경별 리소스를 둡니다. 업무 정책과 여러 core 호출의 조합, 트랜잭션 경계는 각 실행 모듈 Service가 소유합니다.
admin과 front는 물리적으로 분리된 서버이므로 API path에 서버 구분 접두어를 중복하지 않습니다. 예를 들어 admin 인증 API는 `/admin/auth/login`이 아니라 `/auth/login`으로 둡니다.
## 현재 이관 상태
- 멀티모듈 Gradle 구조와 admin/front 개별 bootJar 구성이 완료되었습니다.
- 공통 응답, 예외, JWT, DataSource, Mapper XML 리소스는 core로 이동했습니다.
- 기존 admin/front 업무 API는 core standard/bespoke와 각 실행 모듈 Service 구조로 이관했습니다.
- 단일 모듈 레거시 소스는 제거했으며, 이전 구현 이력은 Git history로 확인합니다.
## 기술 스택
- Java 21, Spring Boot 3.5.10, Gradle
- MyBatis, MariaDB, SQL Server 마이그레이션 데이터소스
- Spring Security, JWT, Redis
- Swagger / OpenAPI, Actuator, Lombok, Validation, log4jdbc
## 빌드 결과
```text
02-api-admin/build/libs/api-admin.jar
03-api-front/build/libs/api-front.jar
```