projects/platform-new/infra/ARCHITECTURE.md

Платформа — Архитектура инфраструктуры

Версия: 4.0.0
Дата: 2026-03-27
Статус: актуально


Концепция: три блока

Платформа состоит из трёх независимых блоков. Каждый блок — отдельная ответственность, может жить на своём сервере, масштабироваться независимо.

┌─────────────────────────────────────────────────────────────────┐
│                            ЯДРО                                 │
│  Знания · Стандарты · Библиотеки · Системные проекты            │
│  Меняется редко. Один экземпляр. Наш постоянный.                │
└──────────────────────────────┬──────────────────────────────────┘
                               │ знания + код + обновления
               ┌───────────────┴────────────────┐
               ▼                                ▼
┌──────────────────────┐          ┌─────────────────────────────┐
│      ПРОЕКТОР        │          │        ИСПОЛНИТЕЛЬ           │
│                      │          │                              │
│  Управление          │ задачи → │  Docker runtime              │
│  проектами           │ ← статус │  Роутинг · БД · Кэш         │
│  AI агенты           │          │  Сервисы проектов            │
│  Мониторинг          │          │                              │
│  Планировщик         │          │  Меняется часто.             │
│                      │          │  Много экземпляров.          │
│  Меняется умеренно.  │          │  Везде: наш VPS,             │
│  Один или несколько. │          │  клиент облако, onpremise    │
└──────────────────────┘          └─────────────────────────────┘

Ключевые принципы:
- Ядро — единственный источник истины (знания, код, стандарты)
- Проектор — мозг управления: решает что и как делать
- Исполнитель — руки: запускает, деплоит, хранит данные
- Любой блок можно вынести на отдельный сервер или объединить с другим


Блок 1: ЯДРО

Назначение: создание и хранение знаний, стандартов, кода платформы.

Размер: 2 CPU / 4 GB RAM / 40 GB SSD (минимум)
Расположение: EU (нужен доступ к Anthropic API)
Экземпляров: 1 (один, наш, постоянный)

Компоненты Ядра

Компонент Роль Сейчас Альтернативы
Архитектор AI агент: создаёт знания, стандарты, методологию Claude Code + workspace
LLM Драйвер Абстракция над языковой моделью SOCKS5 прокси → Anthropic OpenRouter, Ollama, vLLM
RAG Семантический поиск по знаниям — (будущее) pgvector, Qdrant
Git Репозитории кода и документов Gitea (DEV-PROD-RF) GitLab CE
Библиотека Переиспользуемый стабильный код library/ в workspace
Документация Просмотр знаний (md-viewer) docs.0kt.ru Wiki.js
Бэкап Ядра Снапшоты workspace + git restic + S3

Что живёт в Ядре

workspace/ (git репозиторий)
├── architect/           знания, стандарты, методология
   ├── theory/          теория платформы
   ├── concept/         концепции
   ├── standards/       зафиксированные стандарты
   ├── patterns/        паттерны решений
   └── projects/        системные проекты (разработка платформы)
├── library/             стабильный переиспользуемый код
   ├── connectors/      API коннекторы (ozon, telegram...)
   └── services/        сервисы (session, file-share...)
├── system/              ядро платформы
   ├── agents/          AI агенты (инструкции поведения)
   ├── core/            движок (processor, executor)
   └── monitor/         мониторинг здоровья
└── infra/               конфиги инфраструктуры

Принцип: Ядро = только код и документы. Бинарные данные — в S3.


Блок 2: ПРОЕКТОР

Назначение: управление проектами, координация агентов, наблюдение за работой платформы.

Размер: 2 CPU / 4 GB RAM / 40 GB SSD
Расположение: РФ (данные проектов)
Экземпляров: 1+ (один для нас, отдельный для каждого клиента)

Компоненты Проектора

Компонент Роль Сейчас Альтернативы
Проектор AI агент: управляет проектами (ЧТО делать) Claude (роль ◆)
ПМ AI агент: декомпозиция и планирование Claude (роль 🔷)
Специалисты Доменные AI эксперты (бизнес, техника, маркетинг...) Claude (роли)
Оператор AI агент: инфраструктура и деплой Claude (роль ●)
Планировщик Запуск задач по расписанию и событиям system/scheduler Celery, n8n
Монитор Healthcheck сервисов, uptime Uptime Kuma Grafana+Prometheus
Алертинг Уведомления при проблемах Telegram бот PagerDuty
Авторизация Единый вход, управление доступом Authelia Keycloak
Управление Admin UI (Docker, сервисы) Portainer Собственный
Пайплайн CI/CD: сборка и деплой ручной + скрипты Gitea Actions
Проекты UI Интерфейс работы с проектами — (будущее) pm-platform app

Минимальный vs Полный Проектор

Минимальный — только ядро управления проектами:
- Базовые роли (Оператор, Проектор, ПМ, Архитектор в Claude)
- Планировщик
- Монитор + Алертинг
- Авторизация

Использование: Ядро платформы управляет своими системными проектами через минимальный Проектор.

Полный — полная платформа управления проектами:
- Всё из минимального +
- Все специалисты (Business, Technical, Marketing, Data, PIM...)
- Все исполнительные стеки (Drupal, FastAPI, Telegram, OpenCart...)
- Портал управления проектами
- Пайплайн CI/CD

Использование: Для управления бизнес-проектами клиентов (pirotehnika, lideravto...).


Блок 3: ИСПОЛНИТЕЛЬ

Назначение: среда запуска проектов. Получает задачи от Проектора, исполняет, отдаёт результат.

Размер: 4 CPU / 8 GB RAM / 80 GB SSD (базовый, масштабируется)
Расположение: РФ (или у клиента для onpremise)
Экземпляров: много (наши + клиентские)

Компоненты Исполнителя

Компонент Роль Сейчас Альтернативы
Docker Среда запуска всех сервисов Docker + Compose k8s (при масштабе)
Роутер Входящий трафик: домены → сервисы, SSL Nginx + Certbot Caddy, Traefik
Реляционная БД Основные данные проектов PostgreSQL SQLite (малый масштаб)
Кэш Быстрый доступ, сессии, очереди Redis Valkey
Векторная БД Embeddings для RAG — (будущее) pgvector, Qdrant
Файлы Медиа, документы, артефакты S3 (beget) MinIO (self-hosted)
Бэкап данных Снапшоты данных проектов restic + S3
Логирование Сбор логов сервисов journald + файлы Loki + Grafana
Сервисы проектов FastAPI, Drupal, боты, CMS Docker Compose стеки

Развёртывание Исполнителя

# Одна команда — готовая среда
git clone git.0kt.ru/platform/setup
./setup.sh --profile executor

Полная карта компонентов

Компонент          Блок        Тип        Сервер тип    Сейчас
─────────────────────────────────────────────────────────────────
Архитектор         ЯДРО        AI агент   Core          DEV-PRO
LLM Драйвер        ЯДРО        сервис     Core          DEV-PRO
RAG                ЯДРО        БД+сервис  Core          Git (Gitea)        ЯДРО        сервис     Core/RF       DEV-PROD-RF
Библиотека         ЯДРО        код        Core          workspace
Документация       ЯДРО        сервис     Core          DEV-PRO
Бэкап Ядра         ЯДРО        процесс    Core          DEV-PRO

Проектор AI        ПРОЕКТОР    AI агент   Proj          DEV-PRO
ПМ AI              ПРОЕКТОР    AI агент   Proj          DEV-PRO
Специалисты        ПРОЕКТОР    AI агенты  Proj          DEV-PRO
Оператор AI        ПРОЕКТОР    AI агент   Proj          DEV-PRO
Планировщик        ПРОЕКТОР    сервис     Proj          DEV-PRO
Монитор            ПРОЕКТОР    сервис     Proj/RF       DEV-PROD-RF
Алертинг           ПРОЕКТОР    сервис     Proj          DEV-PRO
Авторизация        ПРОЕКТОР    сервис     Proj/RF       DEV-PROD-RF
Управление UI      ПРОЕКТОР    сервис     Proj/RF       DEV-PROD-RF
Пайплайн           ПРОЕКТОР    процесс    Proj          ручной

Docker             ИСПОЛНИТЕЛЬ runtime    Exec          DEV-PROD-RF
Роутер (Nginx)     ИСПОЛНИТЕЛЬ сервис     Exec          DEV-PROD-RF
PostgreSQL         ИСПОЛНИТЕЛЬ БД         Exec          DEV-PROD-RF
Redis              ИСПОЛНИТЕЛЬ БД/кэш     Exec          DEV-PROD-RF
Файлы (S3)         ИСПОЛНИТЕЛЬ хранилище  External      beget-s3
Бэкап данных       ИСПОЛНИТЕЛЬ процесс    Exec          DEV-PROD-RF
Логирование        ИСПОЛНИТЕЛЬ процесс    Exec          DEV-PROD-RF
Сервисы проектов   ИСПОЛНИТЕЛЬ приложения Exec          DEV-PROD-RF

Серверная топология

Текущее состояние

┌────────────────────────────────────────────────────────────────┐
│  DEV-PRO  91.218.142.168  EU  (2CPU/4GB)                       │
│                                                                 │
│  ЯДРО:        Архитектор + workspace + LLM Драйвер             │
│               Документация (docs.0kt.ru)                        │
│  ПРОЕКТОР:    AI агенты (Проектор, ПМ, Специалисты)            │
│               Планировщик + Алертинг (Telegram)                │
│  ИСПОЛНИТЕЛЬ: Роутер (Nginx) для ядра                          │
└────────────────────────────────────────────────────────────────┘

┌────────────────────────────────────────────────────────────────┐
│  DEV-PROD-RF  45.144.177.147  РФ  (8CPU/16GB)  34 контейнера  │
│                                                                 │
│  ЯДРО:        Gitea (git.0kt.ru)                               │
│  ПРОЕКТОР:    Authelia · Uptime Kuma · Portainer               │
│  ИСПОЛНИТЕЛЬ: Nginx · PostgreSQL · Redis                        │
│               Все сервисы проектов                              │
└────────────────────────────────────────────────────────────────┘

┌────────────────────────────────────────────────────────────────┐
│  pm-platform  155.212.142.142  РФ  (4CPU/8GB)  настраивается  │
│                                                                 │
│  Роль: новый ИСПОЛНИТЕЛЬ                                        │
│  Статус: Ubuntu 22.04, Docker установлен, стек в процессе      │
└────────────────────────────────────────────────────────────────┘

  beget-s3  /mnt/beget-s3
  Файловое хранилище DATASPACE (данные проектов)

  beget-infra  /mnt/beget-infra
  Бэкапы, recovery, инфра-документы

Целевое состояние

┌────────────────────────────────────────────────────────────────┐
  DEV-PRO  EU   ЯДРО                                           
                                                                 
  Архитектор · LLM Драйвер · Gitea · docs.0kt.ru               
  workspace · library · Планировщик · Бэкап Ядра               
└────────────────────────────────────────────────────────────────┘
                     знания + обновления
        ┌───────────┴──────────┐
                              
┌───────────────┐    ┌──────────────────────────────────────────┐
  DEV-PROD-RF        pm-platform  РФ   ИСПОЛНИТЕЛЬ #1       
  РФ                                                         
  ПРОЕКТОР           Nginx · PostgreSQL · Redis              
                     Docker Compose стеки проектов           
  Authelia           pirotehnika · lideravto                 
  Uptime Kuma        Бэкап данных  S3                       
  Portainer        └──────────────────────────────────────────┘
  Пайплайн     
└───────────────┘    ┌──────────────────────────────────────────┐
                       client-server   ИСПОЛНИТЕЛЬ #N         
                       (VPS клиента или onpremise)             
                       то же самое, другие данные              
                     └──────────────────────────────────────────┘

Потоки между блоками

ЯДРО → ПРОЕКТОР:
  git pull (обновления кода + стандартов)
  AI знания (Архитектор → Проектор через context)
  Новые версии библиотек

ПРОЕКТОР → ИСПОЛНИТЕЛЬ:
  Команды деплоя (docker compose up)
  Конфиги сервисов
  Задачи Планировщика

ИСПОЛНИТЕЛЬ → ПРОЕКТОР:
  Статус сервисов (Монитор)
  Логи и метрики
  Результаты задач

ИСПОЛНИТЕЛЬ → ЯДРО:
  Бэкапы данных (→ S3)

ВНЕШНИЙ МИР → ИСПОЛНИТЕЛЬ:
  HTTP/HTTPS запросы (через Роутер/Nginx)
  Данные пользователей

Три режима деплоя

Режим 1: Внутренний (наши проекты)

Все три блока — наши серверы.
Ядро → обновляет → Проектор и Исполнитель.

Блоки: ЯДРО (DEV-PRO) + ПРОЕКТОР (DEV-PROD-RF) + ИСПОЛНИТЕЛЬ (pm-platform...)
Обновления: git pull (live, всегда актуально)
Знания: из Ядра, актуальные
AI: Claude через LLM Драйвер (прокси EU)
Управление: мы
Данные: на наших серверах (РФ)
Лицензия: —

Режим 2: SaaS / Клиент-облако

Ядро — наше. Исполнитель — у клиента (облако) или у нас.
Проектор — наш, управляет чужим Исполнителем.

Блоки: ЯДРО (наш) + ПРОЕКТОР (наш) + ИСПОЛНИТЕЛЬ (VPS клиента)
Обновления: git pull от нашего Ядра
Знания: из нашего Ядра, актуальные
AI: через наш LLM Драйвер
Управление: мы (за клиента)
Лицензия: Подписка (ежемесячно)
Целевой клиент: СМБ, стартапы

Режим 3: Enterprise / On-premise

Все три блока — на серверах клиента.
Нет связи с нашим Ядром. Полная автономия.

Блоки: ЯДРО + ПРОЕКТОР + ИСПОЛНИТЕЛЬ — всё у клиента
Обновления: release-пакет (явный, не git pull)
Знания: snapshot зафиксирован в версии релиза
AI: ЛОКАЛЬНАЯ МОДЕЛЬ (Ollama / vLLM) — запросы не уходят наружу
Управление: клиент сам
Данные: только на серверах клиента (air-gap)
Лицензия: Enterprise (разовая + поддержка)
Целевой клиент: корпорации, госсектор

Enterprise: изолированный режим

┌─────────────────────────────────────────────────────────────┐
│                ENTERPRISE СЕРВЕР (изолирован)                │
│                                                              │
│  ЯДРО          ПРОЕКТОР         ИСПОЛНИТЕЛЬ                 │
│  ─────         ────────         ────────────                 │
│  Знания        AI агенты        Docker                       │
│  (snapshot)    (все роли)       Nginx · БД                   │
│                                 Сервисы                      │
│                                                              │
│  ┌──────────────┐    ┌──────────────────────────────┐       │
│  │ Локальный AI │    │    Матрица данных             │       │
│  │ Ollama/vLLM  │    │                              │       │
│  │              │    │  • данные не уходят наружу   │       │
│  │ LLM запросы  │    │  • API только внутри         │       │
│  │ не покидают  │    │  • логирование всего         │       │
│  │ периметр     │    │  • алерт при нарушении       │       │
│  └──────────────┘    └──────────────────────────────┘       │
│                                                              │
│  Соответствие: ФЗ-152, GDPR, гостайна                       │
└─────────────────────────────────────────────────────────────┘

Профили setup.sh

./setup.sh --profile core
# Устанавливает: LLM proxy, Gitea, md-viewer, Nginx
# Для: DEV-PRO, Ядро платформы

./setup.sh --profile projector
# Устанавливает: Authelia, Uptime Kuma, Portainer, Планировщик
# Для: DEV-PROD-RF, сервер управления

./setup.sh --profile executor
# Устанавливает: Docker, Nginx+Certbot, PostgreSQL, Redis
# Для: pm-platform, production серверы

./setup.sh --profile all
# Всё на одном сервере
# Для: разработка, тестирование, маленький масштаб

./setup.sh --profile enterprise
# Всё + Ollama (local LLM) + Data Governance Matrix
# Для: корпоративный on-premise, air-gap
# Требует: 16+ GB RAM для локальной LLM

Сравнение версий архитектуры

v2.0 (3 сервера) v3.0 (Ядро+Экземпляр) v4.0 (3 блока)
Модель DEV-PRO + Arch2 + Proj2 Ядро + Экземпляр(ы) Ядро + Проектор + Исполнитель
Разделение По серверам Ядро vs остальное По функциям
Масштабирование Фиксировано Много экземпляров Каждый блок независимо
Проектор Не выделен Внутри экземпляра Отдельный блок
Enterprise Нет Да Да + local LLM
setup.sh профили Нет 1 профиль 5 профилей

Текущий статус (2026-03-27)

ЯДРО:              ✅ Работает (DEV-PRO) — смешан с Проектором
ПРОЕКТОР:          ⚠️  Размазан по DEV-PRO и DEV-PROD-RF
ИСПОЛНИТЕЛЬ #1:    ✅ DEV-PROD-RF (34 контейнера)
ИСПОЛНИТЕЛЬ #2:    ⏳ pm-platform — настраивается
setup.sh:          ❌ Не написан
Enterprise:        ❌ В roadmap

Следующие шаги

  1. Разделить DEV-PROD-RF: выделить Проектор-компоненты (Authelia, Kuma, Portainer)
  2. Поднять pm-platform как ИСПОЛНИТЕЛЬ #2 (базовый стек)
  3. Написать setup.sh --profile executor
  4. Написать setup.sh --profile projector
  5. Перенести проектные сервисы с DEV-PROD-RF на pm-platform
  6. Roadmap Enterprise: Ollama + Data Governance Matrix

Предыдущая версия: v3.0.0 (2026-03-27) — двухчастная модель (Ядро + Экземпляр)