패키지 구조 수정 및 추가

This commit is contained in:
2026-04-08 16:30:28 +09:00
parent d99422d328
commit 49447c9065
24 changed files with 189 additions and 236 deletions

View File

@@ -2,10 +2,15 @@
> Dabeeo 변화 탐지 시스템을 위한 백엔드 API 서버
---
## 📋 프로젝트 소개
**dabeeo-detection-api**는 공간 데이터의 변화를 탐지하고 관리하기 위한 RESTful API 서버입니다.
JTS(Java Topology Suite)를 활용한 지오메트리 데이터 처리와 PostgreSQL을 통한 공간 데이터 저장을 지원합니다.
**dabeeo-detection-api**
본 프로젝트는 영상 데이터를 기반으로 변화 탐지를 수행하는 시스템의 백엔드 API 서버입니다.
---
## 🛠️ 기술 스택
@@ -20,8 +25,8 @@ JTS(Java Topology Suite)를 활용한 지오메트리 데이터 처리와 Postgr
| **Connection Pool** | HikariCP |
| **Build Tool** | Gradle 8.x |
| **Monitoring** | Spring Boot Actuator |
| **Container** | Docker + Docker Compose |
| **CI/CD** | Jenkins |
---
## 🚀 시작하기
@@ -32,16 +37,20 @@ JTS(Java Topology Suite)를 활용한 지오메트리 데이터 처리와 Postgr
- Gradle 8.x (또는 Gradle Wrapper 사용)
- Docker & Docker Compose (선택사항)
---
### 로컬 환경 설정
1. **저장소 클론**
```
#### 1. 저장소 클론
https://kamco.git.gs.dabeeo.com/MVPTeam/DABEEO-DETECTION-APPLICATION.git
```
2. **데이터베이스 설정**
---
PostgreSQL 데이터베이스를 준비하고 `src/main/resources/application-local.yml`을 생성:
#### 2. 데이터베이스 설정
PostgreSQL 데이터베이스를 준비하고
`src/main/resources/application-local.yml` 파일을 생성합니다.
```yaml
spring:
@@ -54,9 +63,11 @@ spring:
password: your_password
```
> **참고**: `application-local.yml`은 `.gitignore`에 포함되어 있어 Git에 커밋되지 않습니다.
> ⚠️ `application-local.yml`은 `.gitignore`에 포함되어 Git에 커밋되지 않습니다.
3. **빌드 및 실행**
---
#### 3. 빌드 및 실행
```bash
# 빌드
@@ -65,56 +76,145 @@ spring:
# 실행 (local 프로파일)
./gradlew bootRun
# 또는 JAR 파일로 실행
# 또는 JAR 실행
java -jar build/libs/ROOT.jar
```
서버가 시작되면 http://localhost:8080 에서 접근 가능합니다.
서버 실행 후:
http://localhost:8080
---
## ⚙️ 프로파일 설정
애플리케이션은 환경별로 다른 설정을 사용합니다:
| 프로파일 | 환경 | 포트 | 설정 파일 |
|---------|------|------|-----------|
| `local` | 로컬 개발 | 8080 | `application.yml` (기본) |
| `dev` | 개발 서버 | 7100 | `application-dev.yml` |
| `local` | 로컬 개발 | 8080 | `application.yml` |
| `dev` | 개발 서버 | 8080 | `application-dev.yml` |
| `prod` | 운영 서버 | 8080 | `application-prod.yml` |
### 프로파일 활성화
---
### 프로파일 실행 방법
```bash
# 개발 환경으로 실행
# dev 실행
./gradlew bootRun --args='--spring.profiles.active=dev'
# JAR 실행
# jar 실행
java -jar build/libs/ROOT.jar --spring.profiles.active=dev
```
---
## 🧪 테스트
```bash
# 전체 테스트 실행
# 전체 테스트
./gradlew test
# 특정 테스트 클래스 실행
# 특정 테스트
./gradlew test --tests com.kamco.cd.kamcoback.KamcoBackApplicationTests
# 테스트 리포트 확인
# 리포트 확인
open build/reports/tests/test/index.html
```
---
## 📦 빌드
```bash
# 전체 빌드 (테스트 포함)
# 전체 빌드
./gradlew clean build
# 테스트 제외 빌드 (CI/CD에서 사용)
# 테스트 제외
./gradlew clean build -x test
# JAR 파일만 생성
# JAR 생성
./gradlew bootJar
```
빌드된 JAR 파일: `build/libs/ROOT.jar`
빌드 결과:
build/libs/ROOT.jar
---
## 📁 프로젝트 구조
### (2026-04-08 기준)
```bash
api-app
├── app
│ └── src/main/java/com/cd/detection
│ ├── DabeeoDetectionApiApplication.java
│ ├── config
│ ├── domain
│ │ ├── imagery
│ │ ├── labeling
│ │ ├── label
│ │ ├── model
│ │ ├── inference
│ │ ├── system
│ │ └── log
│ └── entity
├── infrastructure-db-postgres
│ └── build.gradle
├── build.gradle
├── settings.gradle
├── gradle/
└── gradlew
```
---
## 🧩 아키텍처 설계
본 프로젝트는 API 모듈과 DB 모듈을 분리한 멀티 모듈 구조를 사용합니다.
---
### 📌 모듈 구성
| 모듈 | 설명 |
|------|------|
| api-app | API 및 비즈니스 로직 |
| infrastructure-db-postgres | DB 접근 및 설정 |
---
## 🗄️ Database Module 분리 전략
DB 관련 로직은 별도의 모듈(infrastructure-db-postgres)로 분리되어 관리됩니다.
---
### 🎯 분리 목적
- 기술 의존성 분리
- DB 교체 용이성
- 관심사 분리
- 확장성 확보
---
### 🔄 처리 흐름
Controller → Service → Repository → DB
---
### 💡 설계 포인트
- API 모듈은 DB 기술에 직접 의존하지 않음
- DB 관련 코드는 별도 모듈에서 관리
- DB 변경 시 API 코드 수정 최소화
---
## 🔥 한 줄 요약
DB 기술 변경에 유연하게 대응하기 위해 persistence 레이어를 모듈로 분리했습니다.