# 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) - **MinIO** 및 **AWS S3** 연동을 통한 대용량 파일 저장 및 관리 - 멀티파트(Multipart) 파일 업로드 지원 (최대 500MB) - 동적 MinIO 첨부 파일 관리 시스템 ### 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:** MinIO, AWS S3 - **Batch Processing:** Spring Batch - **API Documentation:** Springdoc OpenAPI (Swagger UI) - **Etc:** Lombok, Jsoup, Caffeine Cache, WebFlux --- ## ⚙️ 설정 방법 (Configuration) ### 사전 요구 사항 - Java 17 이상 설치 - MariaDB 설치 및 데이터베이스 생성 (`autoflow`) - MinIO 또는 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} # MinIO 설정 minio.endpoint={MINIO_ENDPOINT} minio.access-key={ACCESS_KEY} minio.secret-key={SECRET_KEY} # 외부 서비스 연동 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 # 공통 유틸리티 및 설정 ```