플리트 토폴로지 패턴

godotz.ai는 개발자 노트북 한 대부터 50개 이상의 이종 노드 플리트까지 확장됩니다. 이 페이지는 검증된 배포 패턴을 설명합니다.


패턴 1: 단일 노드 (Solo)

사용 사례: 개발자 머신, 실험, PoC
노드 수: 1
동시 요청: GLM 최대 18개

┌──────────────────────────────┐
│         Solo Node             │
│  ┌──────────────────────┐   │
│  │ LiteLLM Proxy        │   │
│  │ Redis + Postgres     │   │
│  ├──────────────────────┤   │
│  │ OMP/hermes           │   │
│  │ 128 skills           │   │
│  ├──────────────────────┤   │
│  │ Mnemopi + KG         │   │
│  └──────────────────────┘   │
│                               │
│  Platform: x86_64-linux       │
└──────────────────────────────┘

설치

# Nix flake로 단일 노드 설치
nix develop github:omp-team/omp-fleet#solo

# 또는 Docker로 빠른 시작 (개발용)
docker compose -f compose.solo.yml up -d

권장 설정

# config/solo.yml
omp:
  mode: solo
  node_name: "dev-machine"
  
model_gateway:
  concurrency:
    glm_5_1: 10
    glm_5_turbo: 1
    glm_4_7: 2
    glm_4_5_air: 5
    
memory:
  mnemopi:
    max_entries: 5000
  graphify:
    max_files: 1000

비용: 월 $30-80 예상 (GLM 주 사용 기준)


패턴 2: 2-노드 (Companion)

사용 사례: 소규모 팀, 스테이징 환경
노드 수: 2
동시 요청: 36개

┌─────────────────┐    Tailscale     ┌─────────────────┐
│   Primary Node  │◄────────────────►│  Worker Node    │
│  ┌───────────┐  │                  │  ┌───────────┐  │
│  │ Gateway   │  │                  │  │ Executor  │  │
│  │ Orchestr. │  │                  │  │ GLM-5.1   │  │
│  │ Memory    │  │                  │  │ (x10)     │  │
│  └───────────┘  │                  │  └───────────┘  │
│                 │                  │                  │
│  claude-opus    │                  │  glm-5.1/4.7    │
└─────────────────┘                  └─────────────────┘
     x86_64-linux                         aarch64-linux
                                          (ARM 가능)

노드 역할 분리

노드역할실행 모델특성
PrimaryGateway, 오케스트레이터, 메모리claude-opus-4-6고성능 x86
Worker실행자, 코드 생성, 테스트glm-5.1, glm-4.7ARM 가능

Tailscale 설정

# Primary 노드
tailscale up --authkey=<key> --hostname=omp-primary

# Worker 노드
tailscale up --authkey=<key> --hostname=omp-worker-1

# ACL: worker → primary (게이트웨이만 허용)
{
  "acls": [
    {"action": "accept", "src": ["tag:omp-worker"], "dst": ["tag:omp-primary:8000"]}
  ]
}

패턴 3: 팀 플리트 (Team Fleet)

사용 사례: 팀 레벨 AI 인프라
노드 수: 5-10
동시 요청: 90-180개

                    ┌────────────────┐
                    │  Control Plane │
                    │  Temporal      │
                    │  Postgres      │
                    │  Redis         │
                    │  Langfuse      │
                    └───────┬────────┘
                            │ Tailscale Mesh
          ┌─────────────────┼─────────────────┐
          │                 │                 │
    ┌─────┴──────┐   ┌──────┴─────┐   ┌──────┴─────┐
    │ Orch Node 1│   │ Orch Node 2│   │ Memory Node│
    │ Claude-Op. │   │ Gemini-3.1 │   │ Mnemopi    │
    │ (primary)  │   │ (secondary)│   │ KG         │
    └────────────┘   └────────────┘   └────────────┘
          │                 │
    ┌─────┴──────┐   ┌──────┴─────┐
    │ Worker 1   │   │ Worker 2   │
    │ GLM-5.1×10 │   │ GLM-5.1×10 │
    └────────────┘   └────────────┘

고가용성 전략

  • 오케스트레이터 이중화: claude-opus-4-6과 gemini-3.1-pro가 hot standby
  • 워커 수평 확장: 워커 노드 추가만으로 처리량 선형 확장
  • 메모리 노드 분리: 메모리 시스템을 전용 노드에 격리

Komodo 설정

# komodo.yml
fleet:
  nodes:
    - name: control
      role: control_plane
      flake: "github:omp-team/omp-fleet#control"
      
    - name: orchestrator-1
      role: orchestrator
      flake: "github:omp-team/omp-fleet#orchestrator"
      
    - name: orchestrator-2
      role: orchestrator
      flake: "github:omp-team/omp-fleet#orchestrator"
      
    - name: memory
      role: memory
      flake: "github:omp-team/omp-fleet#memory"
      
    - name: worker-1
      role: worker
      flake: "github:omp-team/omp-fleet#worker"
      replicas: 2  # 2개 복제

패턴 4: 풀 플리트 (Full Fleet)

사용 사례: 조직 레벨, 연구 클러스터
노드 수: 20+
동시 요청: 360+

┌────────────────────────────────────────────────────────┐
│                    Full Fleet Topology                   │
│                                                          │
│  ┌──────────────┐   ┌──────────────┐                   │
│  │ Control Zone │   │ Edge Zone    │                   │
│  │  Temporal    │   │  ARM Nodes   │                   │
│  │  Postgres    │   │  Mobile      │                   │
│  │  Redis HA    │   │  IoT         │                   │
│  └──────┬───────┘   └──────┬───────┘                   │
│         │                  │                             │
│  ┌──────┴───────────────────────────┐                   │
│  │         Tailscale Mesh           │                   │
│  └──────────────────────────────────┘                   │
│         │                  │                             │
│  ┌──────┴───────┐   ┌──────┴───────┐                   │
│  │ Orch Zone    │   │ Worker Zone  │                   │
│  │  5 nodes     │   │  15 nodes    │                   │
│  │  claude-opus │   │  glm-5.1×10  │                   │
│  │  gemini      │   │  each        │                   │
│  └──────────────┘   └──────────────┘                   │
└────────────────────────────────────────────────────────┘

지역별 토폴로지

fleet:
  regions:
    seoul:
      nodes: 10
      primary: true
      models: [glm-5.1, glm-4.7]
      
    tokyo:
      nodes: 5
      primary: false
      models: [glm-5.1]
      
    edge:
      nodes: 5
      type: arm
      models: [glm-4.5-air]  # 경량 모델
      connectivity: intermittent  # 간헐적 연결

패턴 5: 모바일-엣지 (Mobile Edge)

사용 사례: 현장 작업, 저연결 환경
노드 수: 1 ARM + 클라우드 백업

ARM Edge Device (RPi 5 또는 유사)
┌──────────────────────────────┐
│  로컬 캐시 (Redis)            │
│  경량 모델 (glm-4.5-air)     │
│  오프라인 메모리 (Mnemopi)   │
│  부분 KG (Graphify 서브셋)   │
└──────────────┬───────────────┘
               │ 간헐적 연결

┌──────────────────────────────┐
│  Cloud Control Plane         │
│  전체 모델 접근              │
│  완전한 메모리               │
│  동기화 (연결 시)            │
└──────────────────────────────┘

오프라인 동작 모드

edge:
  offline_mode:
    enabled: true
    local_models: [glm-4.5-air]
    cache_ttl: 7d
    sync_on_connect: true
    
  # 오프라인 시 제한
  degraded_capabilities:
    - complex_orchestration: unavailable
    - full_kg_queries: unavailable
    - budget_enforcement: local_only

노드 역할 참조

역할최소 사양권장 사양실행 모델
Control2C/4G RAM4C/16G RAM없음 (관리용)
Orchestrator4C/8G RAM8C/32G RAMclaude-opus-4-6
Worker2C/4G RAM4C/8G RAMglm-5.1
Memory4C/16G RAM8C/32G RAM없음 (저장용)
Edge1C/2G RAM4C/4G RAMglm-4.5-air

관련 문서