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.
autoflow-server-mgmt/README.md

116 lines
3.9 KiB

# AutoFlow Server Management (autoflow-server-mgmt)
11 months ago
이 프로젝트는 AutoFlow 시스템의 핵심 관리 서버로, 머신러닝 파이프라인 관리, 데이터셋 관리, 그리고 외부 시스템(Kubeflow, MLflow, OTA 등)과의 통합을 담당합니다. Spring Boot 기반의 견고한 아키텍처를 통해 데이터 기반의 워크플로우를 효율적으로 관리합니다.
11 months ago
---
11 months ago
## 🚀 주요 기능
11 months ago
### 1. 인증 및 권한 관리 (Authentication & Security)
- **JWT (JSON Web Token)** 기반 인증 지원
- **Refresh Token**을 통한 보안성 및 사용자 편의성 강화
- 쿠키 기반의 토큰 저장 방식 (`cuuva-jwt`, `cuuva-jwt-refresh`)
- 프로젝트 및 작업 단위별 세부 권한 제어
11 months ago
### 2. 프로젝트 및 데이터 관리 (Project & Data Management)
- **프로젝트(Project)** 생성, 수정, 삭제 및 멤버별 권한 관리
- **데이터 그룹(Data Group)** 및 **데이터셋(Dataset)**의 계층적 관리
- 외부 데이터셋 연동 및 관리 기능
11 months ago
### 3. ML 파이프라인 및 워크플로우 (ML Pipeline & Workflow)
- **Kubeflow** 통합: Experiments 및 Runs 관리, 파이프라인 업로드
- **MLflow** 통합: 실험 결과 및 메트릭 추적
- 워크플로우 생성 및 실행 관리
11 months ago
### 4. 파일 관리 (File Management)
- **MinIO** 및 **AWS S3** 연동을 통한 대용량 파일 저장 및 관리
- 멀티파트(Multipart) 파일 업로드 지원 (최대 500MB)
- 동적 MinIO 첨부 파일 관리 시스템
11 months ago
### 5. 외부 시스템 연동 (External Integrations)
- **OTA (Over-The-Air)** 연동: 외부 인증 및 패키지 검색 API 연동 지원
- **Spring Batch**를 활용한 대용량 데이터 처리 및 통계 수집
11 months ago
---
11 months ago
## 🛠 기술 스택 (Tech Stack)
11 months ago
- **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:** MinIO, AWS S3
- **Batch Processing:** Spring Batch
- **API Documentation:** Springdoc OpenAPI (Swagger UI)
- **Etc:** Lombok, Jsoup, Caffeine Cache, WebFlux
11 months ago
---
11 months ago
## ⚙️ 설정 방법 (Configuration)
11 months ago
### 사전 요구 사항
- Java 17 이상 설치
- MariaDB 설치 및 데이터베이스 생성 (`autoflow`)
- MinIO 또는 S3 접근 권한 필요
11 months ago
### 환경 설정 (`application.properties`)
`src/main/resources/application.properties` 파일에서 다음 항목들을 설정해야 합니다:
11 months ago
```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}
# MinIO 설정
minio.endpoint={MINIO_ENDPOINT}
minio.access-key={ACCESS_KEY}
minio.secret-key={SECRET_KEY}
# 외부 서비스 연동
kubeflow.url={KUBEFLOW_URL}
mlflow.url={MLFLOW_URL}
```
11 months ago
---
11 months ago
## 🏃 실행 방법 (Getting Started)
11 months ago
### Gradle을 이용한 실행
```bash
./gradlew bootRun
```
11 months ago
### 소스 빌드 및 배포 (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
```
11 months ago
### API 문서 (Swagger)
서버 실행 후 아래 주소에서 API 명세를 확인할 수 있습니다:
- `http://localhost:8080/swagger-ui/index.html`
11 months ago
---
11 months ago
## 📁 프로젝트 구조 (Project Structure)
11 months ago
```
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 # 공통 유틸리티 및 설정
```