콘텐츠로 이동

기술 스택

선정 목록

계층 선정 이유
언어 Go 1.25+ 단일 바이너리, 크로스 컴파일, 동시성 우수, 생태계 성숙
웹 프레임워크 Gin 생태계 최대, 미들웨어 풍부
데이터베이스 SQLite 임베디드, 무운영, 단일 머신 시나리오에 적합
SQLite 드라이버 glebarez/sqlite(순수 Go) CGO 없음, 크로스 컴파일 용이
ORM GORM 개발 효율 높음, 복잡한 쿼리는 네이티브 SQL로 폴백 가능
실시간 통신 gorilla/websocket 터미널, 로그 tail, 지표 푸시
작업 스케줄링 robfig/cron 패널 예약 작업
시스템 모니터링 gopsutil 크로스 플랫폼 CPU / 메모리 / 디스크 / 프로세스
Docker 공식 SDK 컨테이너 / 이미지 / 볼륨 / 네트워크
인증 JWT + refresh 무상태 API + 선택적 세션
2FA TOTP(RFC 6238) 로그인 2차 인증
AI 추상화 LLM 인터페이스 OpenAI / DeepSeek / Qwen / Ollama 통합 어댑터
프런트엔드 Vue 3 + ECharts 모던 SPA + 차트

전체 아키텍처

┌──────────────────────────────────────────────────────────┐
│              OpsMini(단일 머신 패널, 단일 바이너리)        │
│                                                          │
│   Vue3 SPA(빌드 산출물을 바이너리에 embed)                │
│        │  HTTP / WebSocket                                │
│   ┌────▼───────────────────────────────────────────────┐  │
│   │  Gin Router → 미들웨어(인증/권한/감사/속도 제한/보안 진입점)│  │
│   │  Controller → Service → Repository                 │  │
│   └────┬──────────────────────────────────────────────┘  │
│        │                                                  │
│   ┌────▼───────────────────────────────────────────────┐  │
│   │  SQLite(비즈니스 데이터)  │  시스템 리소스 어댑터 계층  │  │
│   │  users/cron/...     │  Docker SDK / crontab /        │  │
│   │                     │  gopsutil / 파일 시스템 / SSH   │  │
│   └─────────────────────┴──────────────────────────────┘  │
│                                                          │
│   대외 두 가지 REST API:                                  │
│   · /api/v1   패널 API(JWT + RBAC)                      │
│   · /agent/v1 Agent API(Token + 명령 화이트리스트)        │
└──────────────────────────────────────────────────────────┘