아키텍처 개요
시스템 아키텍처
┌──────────────────────────────────────────────────────────────────┐
│ 사용자 인터페이스 계층 │
│ 웹 UI (React) · S3 클라이언트 (rclone, AWS CLI) · WebDAV │
└──────────────┬──────────────────────┬────────────────┬───────────┘
│ │ │
┌──────▼──────┐ ┌──────▼──────┐ ┌─────▼──────┐
│ REST API │ │ S3 API │ │ WebDAV │
│ :5212 │ │ :5213 │ │ :5214 │
└──────┬──────┘ └──────┬──────┘ └─────┬──────┘
│ │ │
┌──────▼──────────────────────▼────────────────▼──────┐
│ Gin 라우터 │
│ 미들웨어: CORS → 인증 → 속도 제한 │
└──────────┬───────────────────────────────────────────┘
│
┌──────────▼───────────────────────────────────────────┐
│ 서비스 계층 │
│ 인증 · 파일 관리 · 공간 관리 · 공유 │
└──────────┬───────────────────────────────────────────┘
│
┌──────────▼───────────────────────────────────────────┐
│ 스토리지 추상화 │
│ 인메모리 파일 시스템 (Inode + 블록 기반) │
│ ┌──────────┐ ┌──────────┐ ┌──────────────────────┐ │
│ │ RAM │ │ VRAM │ │ 스왑/영속성 │ │
│ │ 드라이버 │ │ 드라이버│ │ 계층 (선택 사항) │ │
│ └────┬─────┘ └────┬─────┘ └──────────────────────┘ │
└───────┼─────────────┼─────────────────────────────────┘
│ │
┌───────▼─────────────▼─────────────────────────────────┐
│ 장치 관리 계층 │
│ mmap / VirtualAlloc / CUDA / NVML │
└───────────────────────────────────────────────────────┘포트 맵
| 포트 | 서비스 | 설명 |
|---|---|---|
| 5212 | REST API + 웹 UI | HTTP API 및 프론트엔드용 메인 포트 |
| 5213 | S3 API | AWS S3 호환 프로토콜 |
| 5214 | WebDAV | WebDAV 프로토콜 |
기술 스택
| 계층 | 기술 |
|---|---|
| 백엔드 | Go 1.22+, Gin, ent, golang.org/x/net/webdav |
| 프론트엔드 | React 18, TypeScript, Ant Design 5, Zustand, Vite |
| 데이터베이스 | SQLite / PostgreSQL (메타데이터 전용) |
| RAM | mmap (Linux/macOS) / VirtualAlloc (Windows) |
| VRAM | CUDA + NVML (스텁, 통합 준비 완료) |