자율주행 지능 학습 관리 통합 사용자 인터페이스 구현 서버
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.
 
 
 
Go to file
bjkim 40d2cc9367
[REMOVE] DynamicMinioAttachmentController, 관련 서비스 및 엔티티 클래스 삭제
2 months ago
gradle [UPDATE] refreshToken 11 months ago
src [REMOVE] DynamicMinioAttachmentController, 관련 서비스 및 엔티티 클래스 삭제 2 months ago
.gitignore [REMOVE] Maven Wrapper 및 관련 파일 삭제 9 months ago
Dockerfile [ADD] Amazon Corretto 21로 애플리케이션을 컨테이너화하기 위한 Dockerfile 9 months ago
Dockerfile_server feat: 배포전 bootJar 설정 10 months ago
README.md [REMOVE] DynamicMinioAttachmentController, 관련 서비스 및 엔티티 클래스 삭제 2 months ago
build.gradle.kts [ADD] S3 파일 업로드 및 외부 DB 등록 API 추가, 관련 Service, Controller 로직 구현, AWS S3 및 관련 Dependencies 설정 8 months ago
gradle.properties first release 11 months ago
gradlew first release 11 months ago
gradlew.bat first release 11 months ago
mvnw first release 11 months ago
mvnw.cmd first release 11 months ago
settings.gradle.kts [ADD] 사용자 권한 수정 10 months ago
spring-security-jwt-auth-spring-boot-flow.png first release 11 months ago
spring-security-refresh-token-jwt-spring-boot-flow.png first release 11 months ago

README.md

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

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

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