해양 데이터 통합 배치 시스템 (Spring Batch + Quartz)
| .claude | ||
| .githooks | ||
| .mvn | ||
| frontend | ||
| sql | ||
| src/main | ||
| .editorconfig | ||
| .gitattributes | ||
| .gitignore | ||
| .sdkmanrc | ||
| CLAUDE.md | ||
| package-lock.json | ||
| pom.xml | ||
| README.md | ||
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 호환성 문제로, 프론트엔드와 백엔드를 분리하여 빌드합니다.
터미널
# 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
IntelliJ IDEA
- 프론트엔드 빌드: Terminal 탭에서
cd frontend && npm run build - Maven 패키징: Maven 패널 → Lifecycle →
package- VM Options:
-DskipTests -Dskip.npm -Dskip.installnodenpm - 또는 Run Configuration → Maven → Command line에
clean package -DskipTests -Dskip.npm -Dskip.installnodenpm
- VM Options:
로컬 실행
터미널
mvn spring-boot:run -Dspring-boot.run.profiles=local
VSCode
Run/Debug 패널(F5) → "SNP-Batch (local)" 선택
실행 설정: .vscode/launch.json
IntelliJ IDEA
Run Configuration → Spring Boot:
- Main class:
com.snp.batch.SnpBatchApplication - Active profiles:
local
서버 배포
# 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 자동 설치 스킵 |