전체 아키텍처¶
본 페이지에서는 OpsAnt의 전체 아키텍처 설계를 소개합니다.
아키텍처 다이어그램¶
graph TB
subgraph 前端
UI[Vue 3 + Ant Design Vue<br/>SPA]
end
subgraph 后端
API[Django API<br/>api/opsant/v1/]
CELERY[Celery Worker]
BEAT[Celery Beat<br/>定时任务]
end
subgraph 执行引擎
ANS[Ansible<br/>SSH 主机]
SALT[SaltStack<br/>Agent 主机]
MINI[OpsMini Server<br/>Go / gRPC]
end
subgraph 数据
DB[(MySQL)]
REDIS[(Redis)]
end
subgraph 监控
PROM[Prometheus]
AM[Alertmanager]
CONSUL[Consul]
end
UI --> API
API --> DB
API --> REDIS
CELERY --> ANS
CELERY --> SALT
CELERY --> MINI
BEAT --> CELERY
API --> PROM
API --> AM
API --> CONSUL
MINI --> REDIS
MINI --> CONSUL
핵심 설계¶
프론트엔드-백엔드 분리¶
- 프론트엔드: Vue 3 + Ant Design Vue, SPA, 빌드 산출물은
static/opsant/에 생성 - 백엔드: Django,
api/opsant/v1/접두사의 REST API 제공, 응답 envelope{code, message, data}
3가지 실행 엔진¶
호스트 관리 방식에 따라 서로 다른 실행 엔진으로 라우팅됩니다:
| 관리 방식 | 실행 엔진 | 설명 |
|---|---|---|
| SSH | Ansible | Agent 없음, SSH 기반 |
| Agent | SaltStack | salt-minion push 모델 |
| OpsMini | OpsMini Server | Go 구현, gRPC 데이터 플레인 |
이중 모드 스위치¶
플랫폼은 OPSANT_ENABLED 스위치를 통해 전환을 지원합니다:
true: 독립 제품 형태 (프론트엔드 및 신규 API 포함)false: 순수 OpsAny Proxy 레거시 라우트
두 라우트는 격리되어 서로 영향을 주지 않습니다.
탈 SaltStack화된 OpsMini Agent¶
OpsMini는 독립적인 Go Agent 프로젝트로서, Agent(패널)가 REST API를 노출하고 Proxy가 능동적으로 풀링하는 pull 모델을 채택하며, 이는 salt-minion의 push 모델이 아닌 Prometheus와 유사한 방식입니다.