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

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)

  • MinIOAWS 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 파일에서 다음 항목들을 설정해야 합니다:

# 데이터베이스 설정
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을 이용한 실행

./gradlew bootRun

소스 빌드 및 배포 (JAR)

./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          # 공통 유틸리티 및 설정