콘텐츠로 이동

전체 아키텍처

본 페이지에서는 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와 유사한 방식입니다.

더 자세한 설명