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.
|
|
1 month ago | |
|---|---|---|
| gradle | 11 months ago | |
| src | 1 month ago | |
| .gitignore | 9 months ago | |
| Dockerfile | 9 months ago | |
| Dockerfile_server | 1 month ago | |
| README.md | 2 months ago | |
| build.gradle.kts | 8 months ago | |
| deployment_guide.md | 1 month ago | |
| gradle.properties | 11 months ago | |
| gradlew | 11 months ago | |
| gradlew.bat | 11 months ago | |
| kubernetes-aws.yaml | 1 month ago | |
| mariadb-init-configmap.yaml | 1 month ago | |
| mvnw | 11 months ago | |
| mvnw.cmd | 11 months ago | |
| schema-mariadb.sql | 1 month ago | |
| settings.gradle.kts | 10 months ago | |
| spring-security-jwt-auth-spring-boot-flow.png | 11 months ago | |
| spring-security-refresh-token-jwt-spring-boot-flow.png | 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 # 공통 유틸리티 및 설정