You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
117 lines
3.9 KiB
117 lines
3.9 KiB
# AutoFlow Server Management (autoflow-server-mgmt)
|
|
|
|
이 프로젝트는 AutoFlow 시스템의 핵심 관리 서버로, 머신러닝 파이프라인 관리, 데이터셋 관리, 그리고 외부 시스템(Kubeflow, MLflow, OTA 등)과의 통합을 담당합니다. Spring Boot 기반의 견고한 아키텍처를 통해 데이터 기반의 워크플로우를 효율적으로 관리합니다.
|
|
|
|
---
|
|
|
|
## 🚀 주요 기능
|
|
|
|
### 1. 인증 및 권한 관리 (Authentication & Security)
|
|
- **JWT (JSON Web Token)** 기반 인증 지원
|
|
- **Refresh Token**을 통한 보안성 및 사용자 편의성 강화
|
|
- 쿠키 기반의 토큰 저장 방식 (`cuuva-jwt`, `cuuva-jwt-refresh`)
|
|
- 프로젝트 및 작업 단위별 세부 권한 제어
|
|
|
|
### 2. 프로젝트 및 데이터 관리 (Project & Data Management)
|
|
- **프로젝트(Project)** 생성, 수정, 삭제 및 멤버별 권한 관리
|
|
- **데이터 그룹(Data Group)** 및 **데이터셋(Dataset)**의 계층적 관리
|
|
- 외부 데이터셋 연동 및 관리 기능
|
|
|
|
### 3. ML 파이프라인 및 워크플로우 (ML Pipeline & Workflow)
|
|
- **Kubeflow** 통합: Experiments 및 Runs 관리, 파이프라인 업로드
|
|
- **MLflow** 통합: 실험 결과 및 메트릭 추적
|
|
- 워크플로우 생성 및 실행 관리
|
|
|
|
### 4. 파일 관리 (File Management)
|
|
- **AWS S3** 연동을 통한 대용량 파일 저장 및 관리
|
|
- 멀티파트(Multipart) 파일 업로드 지원 (최대 500MB)
|
|
- 동적 AWS S3 첨부 파일 관리 시스템
|
|
|
|
### 5. 외부 시스템 연동 (External Integrations)
|
|
- **OTA (Over-The-Air)** 연동: 외부 인증 및 패키지 검색 API 연동 지원
|
|
- **Spring Batch**를 활용한 대용량 데이터 처리 및 통계 수집
|
|
|
|
---
|
|
|
|
## 🛠 기술 스택 (Tech Stack)
|
|
|
|
- **Language:** Java 17
|
|
- **Framework:** Spring Boot 3.5.6
|
|
- **Build Tool:** Gradle
|
|
- **Database:** MariaDB (JPA / Hibernate)
|
|
- **Security:** Spring Security, JWT (jjwt 0.11.5)
|
|
- **Storage:** AWS S3
|
|
- **Batch Processing:** Spring Batch
|
|
- **API Documentation:** Springdoc OpenAPI (Swagger UI)
|
|
- **Etc:** Lombok, Jsoup, Caffeine Cache, WebFlux
|
|
|
|
---
|
|
|
|
## ⚙️ 설정 방법 (Configuration)
|
|
|
|
### 사전 요구 사항
|
|
- Java 17 이상 설치
|
|
- MariaDB 설치 및 데이터베이스 생성 (`autoflow`)
|
|
- AWS S3 접근 권한 필요
|
|
|
|
### 환경 설정 (`application.properties`)
|
|
`src/main/resources/application.properties` 파일에서 다음 항목들을 설정해야 합니다:
|
|
|
|
```properties
|
|
# 데이터베이스 설정
|
|
spring.datasource.url=jdbc:mariadb://{DB_HOST}:3306/autoflow
|
|
spring.datasource.username={USER}
|
|
spring.datasource.password={PASSWORD}
|
|
|
|
# JWT 보안 설정
|
|
cuuva.app.jwtSecret={YOUR_SECRET_KEY}
|
|
|
|
# AWS S3 설정
|
|
cloud.aws.s3.endpoint={AWS_S3_ENDPOINT}
|
|
cloud.aws.credentials.access-key={AWS_ACCESS_KEY}
|
|
cloud.aws.credentials.secret-key={AWS_SECRET_KEY}
|
|
cloud.aws.region.static={AWS_REGION}
|
|
|
|
# 외부 서비스 연동
|
|
kubeflow.url={KUBEFLOW_URL}
|
|
mlflow.url={MLFLOW_URL}
|
|
```
|
|
|
|
---
|
|
|
|
## 🏃 실행 방법 (Getting Started)
|
|
|
|
### Gradle을 이용한 실행
|
|
```bash
|
|
./gradlew bootRun
|
|
```
|
|
|
|
### 소스 빌드 및 배포 (JAR)
|
|
```bash
|
|
./gradlew build
|
|
# 빌드된 파일 위치: build/libs/autoflow-server-mgmt-0.0.1-SNAPSHOT.jar
|
|
java -jar build/libs/autoflow-server-mgmt-0.0.1-SNAPSHOT.jar
|
|
```
|
|
|
|
### API 문서 (Swagger)
|
|
서버 실행 후 아래 주소에서 API 명세를 확인할 수 있습니다:
|
|
- `http://localhost:8080/swagger-ui/index.html`
|
|
|
|
---
|
|
|
|
## 📁 프로젝트 구조 (Project Structure)
|
|
|
|
```
|
|
kr.re.etri.autoflow
|
|
├── controllers # API 컨트롤러 (Auth, Project, Data, etc.)
|
|
├── service # 비즈니스 로직 처리
|
|
├── repository # 데이터 액세스 계층 (JPA)
|
|
├── entity # 데이터베이스 엔티티
|
|
├── security # 시큐리티 설정 및 JWT 처리
|
|
├── batch # Spring Batch 작업 구성
|
|
├── payload # Request/Response DTO
|
|
├── models # 도메인 모델
|
|
├── exception # 전역 예외 처리
|
|
└── common # 공통 유틸리티 및 설정
|
|
```
|