106 lines
2.8 KiB
Markdown
106 lines
2.8 KiB
Markdown
|
|
# SNP-Batch (snp-batch-validation)
|
||
|
|
|
||
|
|
해양 데이터 통합 배치 시스템. Maritime API에서 선박/항만/사건 데이터를 수집하여 PostgreSQL에 저장하고, AIS 실시간 위치정보를 캐시 기반으로 서비스합니다.
|
||
|
|
|
||
|
|
## 기술 스택
|
||
|
|
|
||
|
|
- Java 17, Spring Boot 3.2.1, Spring Batch 5.1.0
|
||
|
|
- PostgreSQL, Quartz Scheduler, Caffeine Cache
|
||
|
|
- React 19 + Vite + Tailwind CSS 4 (관리 UI)
|
||
|
|
- frontend-maven-plugin (프론트엔드 빌드 통합)
|
||
|
|
|
||
|
|
## 사전 요구사항
|
||
|
|
|
||
|
|
| 항목 | 버전 | 비고 |
|
||
|
|
|------|------|------|
|
||
|
|
| JDK | 17 | `.sdkmanrc` 참조 (`sdk env`) |
|
||
|
|
| Maven | 3.9+ | |
|
||
|
|
| Node.js | 20+ | 프론트엔드 빌드용 |
|
||
|
|
| npm | 10+ | Node.js에 포함 |
|
||
|
|
|
||
|
|
## 빌드
|
||
|
|
|
||
|
|
> **주의**: frontend-maven-plugin의 Node 호환성 문제로, 프론트엔드와 백엔드를 분리하여 빌드합니다.
|
||
|
|
|
||
|
|
### 터미널
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# 1. 프론트엔드 빌드
|
||
|
|
cd frontend && npm install && npm run build && cd ..
|
||
|
|
|
||
|
|
# 2. Maven 패키징 (프론트엔드 빌드 스킵)
|
||
|
|
mvn clean package -DskipTests -Dskip.npm -Dskip.installnodenpm
|
||
|
|
```
|
||
|
|
|
||
|
|
빌드 결과: `target/snp-batch-validation-1.0.0.jar`
|
||
|
|
|
||
|
|
### VSCode
|
||
|
|
|
||
|
|
`Cmd+Shift+B` (기본 빌드 태스크) → 프론트엔드 빌드 + Maven 패키징 순차 실행
|
||
|
|
|
||
|
|
개별 태스크: `Cmd+Shift+P` → "Tasks: Run Task" → 태스크 선택
|
||
|
|
|
||
|
|
> 태스크 설정: [.vscode/tasks.json](.vscode/tasks.json)
|
||
|
|
|
||
|
|
### IntelliJ IDEA
|
||
|
|
|
||
|
|
1. **프론트엔드 빌드**: Terminal 탭에서 `cd frontend && npm run build`
|
||
|
|
2. **Maven 패키징**: Maven 패널 → Lifecycle → `package`
|
||
|
|
- VM Options: `-DskipTests -Dskip.npm -Dskip.installnodenpm`
|
||
|
|
- 또는 Run Configuration → Maven → Command line에 `clean package -DskipTests -Dskip.npm -Dskip.installnodenpm`
|
||
|
|
|
||
|
|
## 로컬 실행
|
||
|
|
|
||
|
|
### 터미널
|
||
|
|
|
||
|
|
```bash
|
||
|
|
mvn spring-boot:run -Dspring-boot.run.profiles=local
|
||
|
|
```
|
||
|
|
|
||
|
|
### VSCode
|
||
|
|
|
||
|
|
Run/Debug 패널(F5) → "SNP-Batch (local)" 선택
|
||
|
|
|
||
|
|
> 실행 설정: [.vscode/launch.json](.vscode/launch.json)
|
||
|
|
|
||
|
|
### IntelliJ IDEA
|
||
|
|
|
||
|
|
Run Configuration → Spring Boot:
|
||
|
|
- Main class: `com.snp.batch.SnpBatchApplication`
|
||
|
|
- Active profiles: `local`
|
||
|
|
|
||
|
|
## 서버 배포
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# 1. 빌드 (위 빌드 절차 수행)
|
||
|
|
|
||
|
|
# 2. JAR 전송
|
||
|
|
scp target/snp-batch-validation-1.0.0.jar {서버}:{경로}/
|
||
|
|
|
||
|
|
# 3. 실행
|
||
|
|
java -jar snp-batch-validation-1.0.0.jar --spring.profiles.active=dev
|
||
|
|
```
|
||
|
|
|
||
|
|
## 접속 정보
|
||
|
|
|
||
|
|
| 항목 | URL |
|
||
|
|
|------|-----|
|
||
|
|
| 관리 UI | `http://localhost:8041/snp-api/` |
|
||
|
|
| Swagger | `http://localhost:8041/snp-api/swagger-ui/index.html` |
|
||
|
|
|
||
|
|
## 프로파일
|
||
|
|
|
||
|
|
| 프로파일 | 용도 | DB |
|
||
|
|
|----------|------|----|
|
||
|
|
| `local` | 로컬 개발 | 개발 DB |
|
||
|
|
| `dev` | 개발 서버 | 개발 DB |
|
||
|
|
| `prod` | 운영 서버 | 운영 DB |
|
||
|
|
|
||
|
|
## Maven 빌드 플래그 요약
|
||
|
|
|
||
|
|
| 플래그 | 용도 |
|
||
|
|
|--------|------|
|
||
|
|
| `-DskipTests` | 테스트 스킵 |
|
||
|
|
| `-Dskip.npm` | npm install/build 스킵 |
|
||
|
|
| `-Dskip.installnodenpm` | Node/npm 자동 설치 스킵 |
|