Опишите систему словами или соберите руками. ИИ предложит схему, а детерминированный движок на Rust проверит её по правилам, проиграет отказы — узла, стойки, ЦОДа, региона, обрыв канала, — посчитает RTO, RPO, ёмкость, доступность и стоимость и выдаст настоящий IaC.
Быстрый старт · Что умеет · Эталонные архитектуры · Проверка в CI · Документация · English
Демо-проект с заведомыми дефектами: движок нашёл два риска и один вопрос без данных, а справа — какое исправление даст больше всего, с эффектом, измеренным на копии схемы.
| 956 продуктов в каталоге |
578 вариантов развёртывания |
60 правил проверки |
20 эталонных архитектур |
129 настроек без пересборки |
1150+ автотестов без моков |
«Три ЦОДа, кворум, репликация, бэкапы» на доске выглядит убедительно. Вопросы начинаются потом. Что будет, если ЦОД-1 пропадёт целиком? Сколько данных потеряем? Выдержат ли оставшиеся площадки нагрузку? Уложимся ли в SLO 99.95 %? И чем то, что мы развернём, отличается от того, что нарисовано?
Infra Architect превращает схему в проверяемую модель и отвечает на эти вопросы числами, а не ощущениями:
- ИИ предлагает — движок доказывает. Модель не решает, выживет ли схема. Каждый факт об архитектуре — находка, время восстановления, доступность — считает детерминированный Rust-движок: без сети, без случайности, одинаково в редакторе, в API и в CI. Правки от ИИ применяются только после просмотра diff.
- Отказ можно проиграть. Выключите ЦОД, стойку, узел или канал — и вы увидите, как переключается primary, держится ли кворум, куда уходит трафик, сколько запросов теряется и сколько данных.
- «Зелёного» без проверенных предпосылок не бывает. Если движку не хватает данных (замера задержки, бюджета, уровня площадки), он не рисует «ок», а говорит, что именно заполнить.
- От схемы — к коду. Манифесты Kubernetes, Helm, Terraform/OpenTofu без заглушек; ADR, Runbook, Mermaid, SVG, JSON.
- Свой и открытый. Лицензия Apache-2.0,
docker compose up, PostgreSQL. Данные уходят только туда, куда вы сами направили их: в OpenRouter, если включили ИИ, и на endoflife.date, если обновляете таблицы версий.
Инструмент для архитекторов и SRE, которые защищают схему перед командой, и для техлидов, которым в ревью нужен ответ «а переживёт ли?», подтверждённый расчётом.
flowchart LR
you(["Вы<br/>словами или на холсте"]) --> ai["ИИ<br/>только предлагает"]
ai --> diff["Diff «до / после»"]
diff -- "вы применяете" --> model["Модель архитектуры<br/>единый источник правды"]
you --> model
model --> engine{{"Движок на Rust<br/>детерминированный"}}
engine --> verdict["Правила · отказы · ёмкость<br/>доступность · стоимость"]
model --> export["Экспорт<br/>IaC · ADR · Runbook · SVG"]
model --> ci["CLI в конвейере<br/>infra-architect check"]
classDef core fill:#2e5bec,stroke:#2e5bec,color:#fff
class engine core
Единая типизированная модель — зоны отказа (ЦОД, AZ, регион, стойка), компоненты, связи с семантикой (зависимость, репликация, кворум, резервная копия) и требования (пик RPS, RTO, RPO, бюджет, SLO). Холст, ИИ, проверки, симуляция и экспорт — лишь её представления, поэтому они не могут разойтись друг с другом.
Единые точки отказа, кворум и арбитры, split-brain, RPO и RTO, катастрофа региона, потеря нескольких площадок, ёмкость при отказе, бэкапы, сеть, безопасность, стоимость, сроки поддержки версий. Каждая находка — «критично», «риск» или «нет данных». Рядом — «Что улучшить в первую очередь»: движок пробует каждое исправление на копии схемы, проверяет её заново и ставит исправления в порядок по измеренному эффекту — сколько критичных закрыто, насколько выросла оценка, сколько это стоит.
Экземпляр, узел, кластер, стойка, площадка, канал между площадками, изоляция группы площадок, гео-домен — и несколько отказов сразу. Симулятор считает переключение primary, кворум, fencing, восстановление из бэкапа, масштабирование pilot-light и перераспределение нагрузки; панель отказа показывает время восстановления, потерю данных, ёмкость и число затронутых узлов, а шаги восстановления можно проиграть.
Отказ рассказывает историю: сначала — как идёт трафик без отказа, затем — где запросы теряются, какими объездами нагрузка идёт там, где связи на схеме нет, и какая доля запросов в итоге обслуживается.
Ожидаемая доступность: движок берёт каждый отказ (экземпляр, весь сервис, стойку, площадку, канал, катастрофу, инцидент провайдера), умножает его частоту на простой из симулятора и сравнивает сумму с вашим SLO — и показывает, из чего складывается простой. План ёмкости: нагрузка и запас каждого сервиса, худший отказ, «а если нагрузка ×2». Стоимость — по моделям площадок (свой ЦОД, облако).
![]() |
![]() |
Частоты отказов и SLA провайдеров — допущения, и они настраиваются; «достоверность оценки» честно говорит, сколько вопросов осталось без данных (docs/AVAILABILITY.md).
Генерация схемы, правка, «исправь замечание», чат. Ответ модели проходит проверку схемы, валидацию, ремонт и проверку движком; на выходе — предложение с diff и оценкой «до / после». Оно применяется только явно, а прежнее состояние до этого сохраняется как версия: любую правку можно откатить. Ключ OpenRouter задаётся в админ-панели; без ключа всё остальное работает полностью.
Сотни продуктов — базы данных, очереди, балансировщики, кэши, хранилища секретов, SIEM, ИТ-сервисы, ERP, платформы ИИ — сгруппированы по функции. У продукта есть варианты развёртывания, которые меняют поведение при отказе, кворум и цену (Patroni и Amazon RDS, Redis Sentinel и Cluster, Kafka на KRaft и MSK), и версии с датами конца поддержки из endoflife.date: таблицы обновляются кнопкой, по расписанию и из CI. Мастер размещения собирает полную схему для 1, 2, 3, 5, 10 и более площадок — со стойками, регионами, арбитрами и резервной площадкой.
![]() |
![]() |
Манифесты Kubernetes (kustomize), Helm (helmfile) и Terraform/OpenTofu генерируются из шаблонов, которые правятся в админ-панели, и проверяются по схемам Kubernetes, CRD операторов и провайдеров. «Без заглушек» — принцип: то, что сгенерировать честно нельзя, перечислено в отчёте с причиной; секреты не генерируются никогда. Кроме кода — ADR, Runbook действий при отказах, диаграмма Mermaid, схема в SVG и JSON.
Админ-панель управляет всем без пересборки: OpenRouter и модели, лимиты, правила (включить, изменить серьёзность и вес), каталог продуктов и таблицы версий, схемы размещения, шаблоны архитектур и IaC, промпты, параметры движка, пользователи, журнал аудита, резервная копия конфигурации. В коде нет захардкоженных чисел и текстов: тайминги, пороги, лимиты, правила и каталог — данные.
Анимации в трёх режимах (все, сокращённые, выключены; по умолчанию как в системе), палитра команд Ctrl/⌘+K, мультивыделение и массовые действия, «Отменить» после удаления, тур по интерфейсу, панели, которые двигаются,
сворачиваются и запоминают положение, русский и английский языки, доступность, которую проверяет axe-core.
Полный перечень — docs/FEATURES.md.
Не с чистого листа: в диалоге «Новый проект» — галерея проверенных схем. Поиск идёт по названию, описанию и тегам, кнопки-фильтры сужают выбор, а карточка сразу говорит о размере и целях: SLO, RPO, RTO. Каждая схема
проходит все правила без критичных находок, держит заявленную доступность и собственный шлюз infra-architect check, а её IaC проверяется по схемам — это проверяют тесты и make iac-check
(docs/TEMPLATES.md).
Все эталонные архитектуры · 20
| Архитектура | Теги | SLO | RPO | RTO | Переживает |
|---|---|---|---|---|---|
| 1 ЦОД · 3 стойки | Свой ЦОД · Стойки · HA | 99.9 % | 5 мин | 4 ч | отказ стойки |
| 2 ЦОД + witness | DR · Свой ЦОД · Kubernetes · Kafka · HA | 99.95 % | 0 | 15 мин | отказ площадки |
| 3 AZ в одном регионе | Облако · Kubernetes · Kafka · HA | 99.95 % | 0 | 5 мин | отказ площадки |
| Multi-region, pilot light | DR · Несколько регионов · Облако · Pilot light | 99.9 % | 5 мин | 1 ч | катастрофа: потеря региона/города |
| Event-driven на Kafka | Kafka · Kubernetes · Облако · HA | 99.95 % | 0 | 5 мин | отказ площадки |
| 3 площадки, кворум большинством | Свой ЦОД · Кворум · Много площадок | 99.95 % | 0 | 5 мин | отказ площадки |
| 5 площадок, переживаем 2 одновременно | Много площадок · Кворум · DR · Свой ЦОД | 99.95 % | 0 | 5 мин | отказ площадки |
| 10 площадок в 3 регионах | Много площадок · Несколько регионов · Кворум | 99.95 % | 5 мин | 1 ч | катастрофа: потеря региона/города |
| AWS: веб-сервис в трёх зонах | Облако · AWS · HA · Kubernetes · Управляемые сервисы | 99.7 % | 0 | 5 мин | отказ площадки |
| Azure: веб-сервис в трёх зонах | Облако · Azure · HA · Kubernetes · Управляемые сервисы | 99.7 % | 0 | 5 мин | отказ площадки |
| Google Cloud: веб-сервис в трёх зонах | Облако · Google Cloud · HA · Kubernetes · Управляемые сервисы | 99.7 % | 0 | 5 мин | отказ площадки |
| Yandex Cloud: веб-сервис в трёх зонах | Облако · Yandex Cloud · HA · Kubernetes · Управляемые сервисы · РФ | 99.7 % | 0 | 5 мин | отказ площадки |
| Kubernetes-платформа: GitOps и наблюдаемость | Kubernetes · Платформа · GitOps · Наблюдаемость · Свой ЦОД · HA | 99.95 % | 0 | 10 мин | отказ площадки |
| Платёжная система: 2 ЦОД, HSM, SIEM | Финансы · Безопасность · DR · Свой ЦОД · HSM · Регуляторика | 99.95 % | 0 | 5 мин | отказ площадки |
| Платформа данных: Kafka, Flink, ClickHouse | Данные · Аналитика · Kafka · ClickHouse · HA | 99.9 % | 5 с | 15 мин | отказ площадки |
| RAG-ассистент: LLM на GPU и векторная БД | ИИ · LLM · RAG · Векторная БД · GPU · HA | 99.9 % | 1 мин | 10 мин | отказ площадки |
| Serverless на AWS: API, функции, DynamoDB | Облако · AWS · Serverless · Управляемые сервисы · Быстрый старт | 99.5 % | 1 мин | 15 мин | отказ площадки |
| Микросервисы: интернет-магазин на Kubernetes | Микросервисы · Kubernetes · E-commerce · Service mesh · HA | 99.9 % | 0 | 5 мин | отказ площадки |
| Гибрид: свой ЦОД и резерв в облаке | DR · Гибрид · Свой ЦОД · Облако · Pilot light · Экономия | 99.9 % | 1 мин | 4 ч | отказ площадки |
| IoT-телеметрия: MQTT, EMQX и TimescaleDB | IoT · MQTT · Временные ряды · HA | 99.9 % | 5 с | 5 мин | отказ площадки |
Нужен только Docker (Linux, macOS, Windows через WSL):
git clone https://github.com/Paffin/infraAI.git && cd infraAI
make try # готовый образ ghcr.io/paffin/infra-architect + PostgreSQL, ничего не собирается
# или
make up # то же, но образ собирается из исходниковЗатем откройте http://localhost:8080 в браузере. Файл .env с секретами (APP_SECRET, POSTGRES_PASSWORD, пароль первого администратора) команда пишет сама, случайными, с доступом только вам
(deploy/init-env.sh; существующий .env она не трогает). Без make: sh deploy/init-env.sh && docker compose up -d --build. Копировать .env.example руками не нужно и не получится: секреты в нём пустые, и docker compose откажется стартовать.
Первый администратор создаётся из ADMIN_EMAIL / ADMIN_PASSWORD в .env (admin@example.com и сгенерированный пароль; он нужен один раз, при первом запуске). Если пароль не задан, он генерируется и печатается один раз в журнал (docker compose logs app | grep -A3 "administrator") —
при первом входе его нужно сменить. Ключ OpenRouter задаётся в Администрирование → OpenRouter (или переменной OPENROUTER_API_KEY). Без ключа редактор, проверки, симуляция и экспорт работают полностью —
недоступен только ИИ.
Демо-проект shop-prod создаётся автоматически и содержит заведомые дефекты (Redis без реплики, асинхронная репликация очередей, канал без замера RTT) — на нём видно, как работают проверки.
Всё, включая тесты и линтеры, запускается в контейнерах — на хост ничего ставить не нужно:
make test # cargo test (движок и сервер на настоящем PostgreSQL), typecheck, vitest и сборка фронта
make ha # две реплики за nginx
make smoke # сквозная проверка запущенного стека
make iac-check # IaC эталонных архитектур против схем Kubernetes/CRD, Helm и TerraformСхема архитектуры — такой же артефакт, как код: она лежит в репозитории и меняется вместе с ним. infra-architect check — тот же движок как линтер для конвейера: код выхода, пороги, база «только новое»,
принятые риски со сроком, отчёты в виде сводки задания, аннотаций GitHub и SARIF для code scanning. Ни базы данных, ни сети, ни запущенного сервера не нужно.
$ infra-architect check architecture/shop.json --recommend
shop-prod — architecture/shop.json
Оценка 91/100 · достоверность 98% · критично 0 · риск 3 · нет данных 1 · Доступность ≈ 99.97% (цель 99.95%) · Стоимость 736 810 ₽ в месяц
РИСК Кэш «Redis» не реплицирован между площадками: при потере площадки он потеряется, сессии и корзины пропадут.
HA-CACHE-01 · Кэш реплицирован между площадками
Где: architecture/shop.json:257 redis-dc1 «Redis»
Исправление: Добавить реплику «Redis» на площадку Площадка 3 · облако
Что улучшить в первую очередь
1. Перевести «Kafka» → «Kafka» в синхронную репликацию [DR-KFK-01]
рисков 3 → 2 · оценка 91 → 95Вывод сокращён: в полном — ещё два риска и вопрос без данных, с указанием, что заполнить.
# .github/workflows/architecture.yml: вердикт в сводке, аннотации на файле, находки во вкладке code scanning
- name: Проверить схемы
run: |
docker run --rm --user "$(id -u):$(id -g)" -v "$PWD:/work" -v "$GITHUB_STEP_SUMMARY:/summary" -w /work \
ghcr.io/paffin/infra-architect:latest check architecture/*.json \
--recommend --format github --report sarif=architecture.sarif --report markdown=/summary
- uses: github/codeql-action/upload-sarif@v3
if: always() && hashFiles('architecture.sarif') != ''
with: { sarif_file: architecture.sarif }Образ публикует CI проекта из ветки main; пока его нет, соберите свой: docker build -t infra-architect .. Параметры, коды выхода, форматы отчётов и примеры для GitLab CI — в docs/CLI.md.
- Движок (
backend/crates/engine) — Rust без ввода-вывода: модель, каталог, правила, симулятор, ёмкость, доступность, стоимость, экспорт. Один и тот же код работает в сервере и в CLI. - Сервер (
backend/crates/server) — axum, sqlx, tokio: HTTP API, аутентификация, проекты и версии, конвейер ИИ с задачами в базе, метрики Prometheus, CLIinfra-architect check. - Интерфейс (
frontend) — Vue 3, TypeScript, Vue Flow, Pinia: редактор, админ-панель, тесты (vitest, Playwright, axe-core). - Данные — PostgreSQL: проекты, версии, конфигурация (
config_items), задачи ИИ, аудит. Правила, каталог, шаблоны, промпты и настройки — данные в базе, которые редактирует админ-панель. - Тесты без моков — настоящий PostgreSQL, настоящий движок, настоящий браузер; ответы моделей — записанные живые прогоны.
- Надёжность самого сервиса — stateless-реплики, graceful shutdown, манифесты Kubernetes с PDB, HPA и spread по зонам (docs/DEPLOYMENT.md).
- Это не мониторинг и не управление живой инфраструктурой: движок работает с той моделью, которую вы описали или приняли от ИИ.
- Оценки — это модель, а не измерения. Частоты отказов и SLA провайдеров — допущения (настройки движка); «достоверность оценки» показывает, на какую долю вопросов ответ опирается на ваши данные.
- Каталог описывает типичное поведение продуктов. Если ваша установка отличается — поправьте в админ-панели; ошибку в каталоге можно исправить через issue или pull request: неверное утверждение об отказоустойчивости хуже отсутствующего продукта.
- Версия 0.x: ядро работает, формат данных может меняться между минорными версиями; миграции выполняются при запуске (CHANGELOG.md).
| Документ | О чём |
|---|---|
| docs/FEATURES.md | все возможности: что умеет каждая часть продукта |
| docs/ARCHITECTURE.md | устройство системы, модель данных, потоки, масштабирование и отказоустойчивость |
| docs/CATALOG.md | каталог продуктов: функции, варианты, версии и жизненный цикл, кворум и арбитры, обновление таблиц выпусков |
| docs/TEMPLATES.md | эталонные архитектуры: что обещает каждая, как устроены, как добавить свою |
| docs/PLACEMENT.md | размещение по площадкам: схемы, платформы, генератор для 1/2/3/5/10+ ЦОД, API, настройка |
| docs/RULES.md | движок проверок: статусы, оценка, принятие рисков, исправления, список правил |
| docs/SIMULATION.md | как симулятор считает отказы, RTO, RPO, кворум, ёмкость, трафик |
| docs/AVAILABILITY.md | ожидаемая доступность: как считается, что настраивается, чего оценка не говорит |
| docs/RECOMMENDATIONS.md | что улучшить в первую очередь: как исправления пробуются и ранжируются, настройки, API |
| docs/CLI.md | проверка схем в конвейере: infra-architect check, коды выхода, форматы отчётов, примеры для GitHub Actions и GitLab CI |
| docs/IAC.md | экспорт в Kubernetes, Helm и Terraform: как схема становится кодом, что генерируется и что нет |
| docs/LLM.md | интеграция с OpenRouter, конвейер ИИ, приватность и контроль расходов |
| docs/CONFIGURATION.md | переменные окружения, реестр настроек, конфигурационные элементы, бэкап конфигурации |
| docs/ADMIN.md | руководство по админ-панели |
| docs/API.md | HTTP API |
| docs/DEPLOYMENT.md | Docker, Kubernetes, HA/DR самого сервиса, обновления, наблюдаемость |
| docs/PITFALLS.md | подводные камни и как каждый из них решён |
| docs/DEVELOPMENT.md | разработка, тесты, как добавить правило, компонент, архитектуру, настройку |
| docs/adr | архитектурные решения |
Документация поддерживается вместе с кодом: таблицы правил, настроек, каталога, версий и эталонных архитектур, а также цифры в этом файле генерируются из JSON-реестров (
python3 deploy/gen-docs.py), и CI падает, если они разошлись с кодом.
Баг, неверный факт о продукте, идея или pull request — всё приветствуется. С чего начать, правила кодовой базы и что проверяется до слияния — в CONTRIBUTING.md; об уязвимостях — в SECURITY.md; участвуя, вы соглашаетесь с кодексом поведения.
Infra Architect — открытый проект под лицензией Apache License 2.0: код можно свободно использовать, в том числе в коммерческих целях, изменять и распространять. Лицензия содержит явное разрешение на использование патентов авторов и требует сохранять уведомления об авторстве (NOTICE). Вклад принимается на тех же условиях (раздел 5 лицензии).
Лицензии сторонних компонентов, которые входят в сборку, перечислены в THIRD_PARTY_LICENSES.md: файл генерируется (python3 deploy/licenses.py), а CI не пропустит
зависимость с лицензией вне списка принятых (deploy/licenses.json). Названия продуктов в каталоге принадлежат их владельцам и приведены только для обозначения; сроки поддержки версий — данные endoflife.date.















