Changed the step attribute for NumberField components in the VpsEditSheet to "any" for vCPU, RAM, and disk inputs. Updated the vpsSchema to accept real numbers for vCPU, diskGb, and bandwidthTb. Adjusted database schema to store vCPU, diskGb, and bandwidthTb as REAL instead of INTEGER for better precision.
6.7 KiB
name, overview, todos, isProject
| name | overview | todos | isProject | |||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| EvoBGP без NATS | Код EvoBGP уже работает без NATS и прочих брокеров: очередь задач in-process в `evobgp-all`. Оптимизировать Go под ваш compose не требуется — достаточно подчистить сам compose (убрать мёртвый сервис nats) и по желанию ужесточить prod-флаги. |
|
false |
Анализ compose без NATS: нужен ли рефакторинг EvoBGP?
Вердикт
Нет — оптимизировать текущий Go-код под этот compose не нужно. Приложение уже спроектировано как monolith (evobgp-all) с in-process очередью. NATS в репозитории — задел на будущее, не рабочая зависимость.
Как устроен runtime без брокера
flowchart LR
subgraph host [Хост /opt/evobgp]
Web[evobgp-web nginx]
All[evobgp-all]
PG[(postgres)]
Bird[bird2]
Agent[evobgp-agent]
Edge[evobgp-edge Traefik]
end
Edge --> Web
Web -->|"/v1 proxy"| All
All --> PG
All --> Bird
Agent --> Bird
All -->|"HTTP wake NODE_DISPATCH"| Agent
| Компонент | Роль для кода | Нужен ли NATS? |
|---|---|---|
evobgp-all |
API + jobs + scheduler/ingest/render/deploy in-process | Нет |
postgres |
Store + job_audit reclaim (ADR-001) |
Нет |
bird2 + evobgp-agent |
Локальный speaker / birdc | Нет |
EVOBGP_NODE_DISPATCH_ENABLED |
HTTP POST на remote agent (internal/nodedispatch) |
Нет |
EVOBGP_BROKER_URL |
Только internal/broker/connect.go — лог, если URL задан |
Нет |
| NATS-контейнер | Не читается бинарником | Можно удалить |
Источник правды: docs/architecture.md, docs/adr/001-durable-job-queue.md — «NATS JetStream remains optional (EVOBGP_BROKER_URL logged only)».
Ваш закомментированный # EVOBGP_BROKER_URL — корректно. Даже если URL оставить, поведение jobs не изменится.
Что в вашем YAML лишнее / рискованное (ops, не код)
Можно убрать без правок Go:
- Сервис
natsцеликом. depends_on: natsуevobgp-all.natsиз спискаSERVICESвstack-runtime-logs.- Проброс
4222:4222(если не нужен снаружи).
Prometheus — тоже опционален для функционала: скрейпит /metrics с evobgp-all. Удаление не ломает BGP/UI; ломает только локальный monitoring. Код менять не нужно.
Не трогать без замены: postgres, bird2, evobgp-agent, evobgp-all, evobgp-web, evobgp-edge, volumes bird_* / pgdata / ACME.
Prod-флаги в compose (важно, но это конфиг, не рефакторинг)
Сейчас example и ваш файл совпадают с lab-режимом:
EVOBGP_SEED_DEMO: "1"→ доступенBearer dev(см.docs/access.md,docs/production-checklist.md)EVOBGP_DEV_INSECURE: "1"— dead/lab флаг; приEVOBGP_PRODUCTION=1процесс не стартует (internal/config/production.go)POSTGRES_PASSWORD: evobgp+sslmode=disable— ок только в private Docker networkEVOBGP_BUNDLE_SEED_HEXзахардкожен в yaml — ок для lab; в бою лучше свой секрет в.env
Для «настоящего» prod достаточно env, не переписывания архитектуры.
Нужны ли изменения в коде проекта?
| Вопрос | Ответ |
|---|---|
Убрать/упростить internal/broker? |
Не обязательно: пакет уже no-op без URL |
| Переписать jobs на PG-only? | Уже есть durable reclaim через job_audit; брокер не требуется |
| Вырезать NATS из бинарника/зависимостей? | В Go NATS-клиент как runtime consumer не подключён — нечего «оптимизировать» |
Менять evobgp-all под monolith? |
Уже monolith; reference-воркеры (scheduler/ingest/…) вам не нужны |
Итог: отказ от NATS — правильное решение для текущего этапа; код уже соответствует этой модели. Оптимизация = правка compose/docs, не приложения.
Рекомендуемые действия (если согласуете выполнение)
Только инфраструктура/документация в репо:
- Обновить
deploy/compose/docker-compose.production.example.yaml(и при необходимостиstack.microvps-full.yaml/docker-compose.microvps-full.yaml): удалитьnats,depends_on, порт 4222, упоминание в runtime-logs. - Подправить
docs/quickstart.md/ architecture: NATS — optional future, не часть minimal production stack. - На сервере: тот же diff в
/opt/evobgp/docker-compose.yaml→docker compose up -d(nats исчезнет).
Go/CI/образы — не трогать ради этого решения.
Опциональный hardening env на сервере (отдельно от «оптимизации кода»): EVOBGP_SEED_DEMO=0, убрать EVOBGP_DEV_INSECURE, при желании EVOBGP_PRODUCTION=1 + checklist.