AI-Ops Documentation

Русский English
  • Главная
  • Карта документации
0. С чего начать
  • Что это за продукт
  • Для кого он
  • Как устроена документация
  • Быстрые ссылки
  • Как начать разработку
  • Как найти нужный сервис
  • К кому идти по вопросам
1. Продукт
Обзор продукта
  • Миссия продукта
  • Ценность для бизнеса
  • Основные сценарии
  • Границы системы
Пользователи и персоны
  • Сегменты пользователей
  • Роли пользователей
  • Основные потребности
Пользовательские сценарии
  • Регистрация / логин
  • Основной пользовательский сценарий
  • Оплата / заказ / действие
  • Поддержка и сценарий восстановления
Функции продукта
Фича: Аутентификация
  • Цель
  • Пользовательская история
  • Бизнес-правила
  • Ограничения
  • Метрики успеха
  • Связанные сервисы
  • Связанные события / данные
  • Фича: Профиль
  • Фича: Организации
  • Фича: Топология
  • Фича: Вычислительные ресурсы
  • Фича: Кластеры
  • Фича: Каталог сервисов
Требования
  • Функциональные требования
  • Нефункциональные требования
  • Требования к производительности
  • Требования к безопасности
  • Конфиденциальность и соответствие
  • Доступность
Метрики
  • Ключевая метрика (North Star)
  • Продуктовые KPI
  • Метрики воронки
  • Метрики качества
  • Метрики экспериментов
2. Домены
Домен: Identity
  • Назначение
  • Основные концепции
  • Сущности
  • Бизнес-правила
  • Сервисы домена
  • Данные домена
  • Связанные фичи
  • Домен: Профиль пользователя
  • Домен: Поиск
  • Домен: Заказы / транзакции
  • Домен: Уведомления
  • Домен: Аналитика
  • Домен: Рекомендации
3. Архитектура
Обзор системы
  • Что входит в систему
  • Что не входит
  • Высокоуровневая диаграмма
C4 Model
  • Контекстная диаграмма
  • Диаграмма контейнеров
  • Диаграмма компонентов
  • Диаграмма развёртывания
Интеграционная архитектура
  • Внешние системы
  • Интеграции API
  • Webhooks
  • Сторонние провайдеры
Потоки данных
  • Онлайн-поток данных
  • Пакетный поток данных
  • Поток событий
  • Владение данными
Архитектура безопасности
  • Аутентификация
  • Авторизация
  • Управление секретами
  • Шифрование
  • Аудит и логирование
Надежность и масштабируемость
  • SLA / SLO
  • Планирование мощностей
  • Отказоустойчивость
  • Обратное давление и повторы
  • Восстановление после сбоев
Архитектурные принципы
  • Границы доменов
  • Принципы проектирования API
  • Принципы проектирования событий
  • Принципы контрактов данных
  • Диаграмма: auth микросервисы
Control plane
  • Архитектура компонентов (control plane)
  • Доменная модель v0
  • Протокол v0 (control plane)
  • Примеры (control plane)
Сервисы (control plane)
Сервис control plane
  • API
  • Модель данных
  • События
  • Модули
  • Операции
Сервис execution plane
  • API
  • Модель данных
  • События
  • Модули
  • Операции
Сервис resource catalog
  • API
  • Модель данных
  • События
  • Модули
  • Операции
4. Инженерия
Сервисы
Каталог сервисов
  • Все сервисы списком
  • Владельцы
  • Критичность
  • Уровень / домен / статус
  • Сервис аутентификации
  • Сервис аккаунтов
  • Облачный сервис
  • Сервис учётных данных
  • Herald
  • Сервис идентификации
  • API Gateway
  • Сервис токенов
Фронтенд
  • Обзор фронтенда
  • Структура приложения
  • Routing (фронтенд)
  • State management (фронтенд)
  • Design system (фронтенд)
  • UI components (фронтенд)
  • API контракты фронтенда
  • Обработка ошибок (фронтенд)
  • Performance (фронтенд)
  • Feature flags (фронтенд)
  • Тестирование фронтенда
Бэкенд
  • Обзор бэкенда
  • Паттерны сервисов
  • Рекомендации по API
  • Событийные паттерны
  • Паттерны доступа к БД
  • Кэширование
  • Асинхронные задачи и воркеры
  • Идемпотентность
  • Обработка ошибок
  • Тестирование бэкенда
Данные
  • Обзор данных
  • Системы-источники
  • Контракты данных
  • Каталог схем событий
  • Хранилище данных
  • Витрины данных
  • ETL / ELT-пайплайны
  • Качество данных
  • Происхождение данных
  • Политики хранения
  • Политики доступа
ML / DS
  • Обзор ML/DS
  • Сценарии (ML)
  • Каталог моделей
  • Feature store
  • Training pipelines
  • Inference pipelines
  • Offline evaluation
  • Online evaluation / A-B
  • Мониторинг (ML)
  • ML runbooks
QA / Качество
  • Стратегия качества
  • Пирамида тестов
  • Тестовые окружения
  • Тестовые данные
  • Ручное тестирование
  • Автоматизированное тестирование
  • Нагрузочное тестирование
  • Тестирование безопасности
  • Критерии приёмки релиза
  • Процесс разбора багов
5. Платформа
Инфраструктура
  • Ansible
  • WireGuard
  • Kubernetes
  • Longhorn
  • Ingress
  • PostgreSQL Cluster
  • Redis
  • Kafka
  • Vault
  • MinIO
  • Authentik
  • Monitoring
  • Logging
  • Tracing
  • Nexus
  • SonarQube
  • GlitchTip
  • GitLab Runner
  • Kubernetes Dashboard
  • OLM
  • Deploy
  • Internal DNS
  • Обзор (инфраструктура)
  • Config generator
  • Пример (инфраструктура)
  • Скрипты (инфраструктура)
Окружения
  • Локальное
  • Stage
  • Pre
  • Продакшен (prod)
  • Tech
  • Облако
  • Объектное хранилище
  • CI/CD
  • Секреты и сертификаты
Наблюдаемость
  • Логирование
  • Метрики
  • Трейсинг
  • Алертинг
  • Резервное копирование и восстановление
6. Разработка
  • Быстрый старт
  • Локальная настройка
  • Карта репозиториев
  • Стандарты кода
  • Git-процесс
  • Стратегия ветвления
  • Руководство по код-ревью
  • Критерии готовности
  • Процесс релиза
  • Флаги фич
  • FAQ разработчика
  • Миграция secure auth
7. Эксплуатация
  • Дежурство
  • Управление инцидентами
  • Уровни критичности
  • Политика эскалации
  • Постмортемы
  • Ранбуки
  • Управление изменениями
  • Непрерывность бизнеса
8. Аналитика
  • План трекинга событий
  • Определения KPI
  • Каталог дашбордов
  • Словарь метрик
  • Эксперименты
  • Стандарты отчётности
9. Управление
  • Решения (ADR)
  • Политика статуса контента
  • Changelog обновлений документации
Безопасность и соответствие
  • Модель угроз
  • Безопасная разработка
  • Управление доступом
  • Конфиденциальность
  • Реагирование на инциденты
Ответственность и владельцы
  • Команды
  • Зоны ответственности команд
  • Владельцы сервисов
  • Владельцы доменов
  • Контакты
Глоссарий
  • Бизнес-термины
  • Продуктовые термины
  • Технические термины
  • Сокращения

Архитектура компонентов (control plane)

Previous Next

Статус: Draft Дата: 2026-04-29 Область: компонентная архитектура проекта platform-core, микросервисы, модули, коммуникация и инфраструктурные технологии.

1. Термины проектирования

В этой архитектуре используются такие уровни:

  • Проект - большой домен, объединяющий несколько микросервисов. Пример: platform-core, auth-platform.
  • Микросервис - bounded context со своей БД и своими контрактами. Микросервисы не ходят в одну общую БД.
  • Модуль микросервиса - отдельный runtime/process/pod внутри микросервиса, который разделяет БД и доменную модель этого микросервиса. Пример: api, worker, scheduler, runner.

Пример из текущего стиля проекта:

1
2
3
4
auth-platform/
  identity-service/
    api
    worker

Для нового platform-core это означает: мы не пытаемся превратить все в один микросервис, но и не выносим сильно связанные части в отдельные сервисы, если это приведет к постоянным синхронным запросам и дублированию данных.

2. Главный принцип разбиения

Микросервисная граница оправдана, если:

  • сервис владеет отдельной моделью данных;
  • другой сервис не должен читать его данные на каждом шаге обычного сценария;
  • данные можно синхронизировать событиями или projections;
  • workload, scaling, risk profile или security boundary существенно отличаются.

Микросервисная граница вредна, если:

  • два компонента постоянно участвуют в одном transaction-like use case;
  • один компонент без другого почти не может отвечать на свои основные запросы;
  • приходится хранить почти полную копию данных соседнего сервиса;
  • большинство запросов превращаются в цепочку синхронных вызовов.

На этом основании scenario-registry не выносится в отдельный микросервис: он слишком тесно связан с control-plane-service.

3. Итоговая структура проекта

1
2
3
4
platform-core/
  resource-catalog-service/
  control-plane-service/
  execution-plane-service/

Подробная документация по каждому core-сервису находится в services/index.ru.md.

Опциональные внешние/соседние домены:

1
2
3
ai-ops-agent-service/
iam-platform/
audit-service/

ai-ops-agent-service не является владельцем операций. Он анализирует, предлагает patches и reviews. iam-platform принимает решения о доступе и ролях. audit-service хранит независимый audit trail.

4. Общая схема компонентов

flowchart TB ui[Web App / API clients] subgraph PlatformCore[platform-core project] catalog[resource-catalog-service] control[control-plane-service] execution[execution-plane-service] end ai[ai-ops-agent-service] iam[IAM / Policy] audit[Audit Service] pgCatalog[(PostgreSQL
catalog DB)] pgControl[(PostgreSQL
control DB)] pgExecution[(PostgreSQL
execution DB)] kafka[(Kafka)] temporal[(Temporal)] vault[(Vault)] objectStorage[(S3 / MinIO)] observability[OpenTelemetry
Prometheus Loki Tempo] ui --> catalog ui --> control catalog --> pgCatalog control --> pgControl execution --> pgExecution control --> temporal control --> execution control --> catalog control --> ai control --> iam execution --> vault execution --> objectStorage catalog --> kafka control --> kafka execution --> kafka kafka --> audit catalog --> observability control --> observability execution --> observability

5. resource-catalog-service

Смысл: что у нас есть.

resource-catalog-service владеет каноническим каталогом ресурсов и их provided capabilities.

Владеет данными

  • Organizations / tenant context для platform resources.
  • Topology: regions, datacenters, layers, segments.
  • Compute nodes.
  • Clusters.
  • Internal/external services.
  • Deployments.
  • Managed resources: postgres, redis, tempo, minio, vault, kafka и другие.
  • Resource relationships.
  • Resource desired state и observed state.
  • Resource health summary.
  • Capability definitions.
  • Provided capabilities.

Модули

1
2
3
4
5
resource-catalog-service/
  api
  worker
  observer
  projector
Модуль Назначение
api UI/API queries и команды каталога
worker Обработка событий от control-plane и execution-plane
observer Получение observed state из Kubernetes, agents, cloud APIs
projector Read models: topology graph, resource graph, capability graph

БД

Одна PostgreSQL БД сервиса.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
resource_catalog_db
  resources
  resource_types
  resource_relationships
  resource_desired_state
  resource_observed_state
  capability_definitions
  provided_capabilities
  topology
  read_models

Важная граница

resource-catalog-service не исполняет долгие операции. Он может принять команду уровня "зарегистрировать ресурс" или "обновить metadata", но создание реального Kubernetes-кластера, установка Tempo или ремонт ноды идут через control-plane-service.

6. control-plane-service

Смысл: что хотим сделать, какой план построен и как идет операция.

control-plane-service владеет намерениями, сценариями, планами, операциями, gates, patches и timeline.

Владеет данными

  • Intent.
  • ScenarioPack.
  • Scenario.
  • PlanTemplate.
  • JobTemplate / JobContract.
  • CapabilityRequirement.
  • ResourceBinding.
  • Plan.
  • PlanNode.
  • Operation.
  • OperationNodeRun.
  • Gate.
  • Intervention.
  • PlanPatch.
  • Artifact metadata.
  • Evidence metadata.
  • Operation timeline.
  • Local catalog/capability projections.

Модули

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
control-plane-service/
  api
  scenario-registry
  planner
  capability-resolver
  operation-manager
  workflow-worker
  policy-adapter
  ai-adapter
  event-worker
Модуль Назначение
api Intent, plan preview, operation start, approve gate, retry, pause, patch review
scenario-registry Executable marketplace scenarios, versions, plan templates, job contracts
planner Построение DAG из intent + scenario
capability-resolver Resolution required capabilities в providers или sub-operations
operation-manager Lifecycle операций, node states, gates, retries, interventions
workflow-worker Durable orchestration через Temporal
policy-adapter IAM/policy checks, approvals, risk decisions
ai-adapter Контекст для AI и прием Diagnosis/PlanPatch/RiskReview
event-worker Kafka events, projections, integration events

Почему scenario-registry здесь

scenario-registry не выносится в отдельный микросервис, потому что:

  • planner постоянно читает scenario templates;
  • resolver читает capability requirements сценариев;
  • plan preview требует scenario, job contracts и policy metadata;
  • operation validation зависит от версии scenario;
  • PlanPatch может ссылаться на templates/jobs из registry.

Если вынести registry отдельно, control-plane-service будет либо постоянно дергать его синхронно, либо держать почти полную копию. Поэтому это модуль внутри control-plane-service, но с четкой внутренней границей, чтобы позже его можно было вынести только при реальной необходимости.

БД

Одна PostgreSQL БД сервиса.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
control_plane_db
  intents
  scenario_packs
  scenarios
  plan_templates
  job_templates
  capability_requirements
  resource_bindings
  plans
  plan_nodes
  operations
  operation_node_runs
  gates
  interventions
  plan_patches
  artifact_metadata
  evidence_metadata
  operation_timeline
  catalog_resource_projection
  catalog_capability_projection
  catalog_topology_projection

Projections вместо постоянных вызовов

control-plane-service держит локальные projections каталога:

  • resources;
  • topology;
  • provided capabilities;
  • capability definitions;
  • active/last operation references при необходимости.

Это нужно, чтобы plan preview и capability resolution не ходили в resource-catalog-service на каждый read.

Синхронные вызовы в catalog нужны только на command boundary:

  • перед стартом operation;
  • перед destructive action;
  • перед финальным bind/update resource;
  • если projection устарела и нужна сильная проверка.

Product API и история операций

control-plane-service обязан иметь собственный API для интерфейса. UI не должен зависеть от Temporal UI, Argo UI или UI другого workflow engine. Workflow engine может быть внутренним runtime, но продуктовый опыт строится поверх нашей доменной модели.

Интерфейс должен уметь показывать operation history примерно как GitLab pipelines:

  • список операций по ресурсу, пользователю, организации, сценарию и статусу;
  • текущую active operation для ресурса;
  • историю completed/failed/cancelled operations;
  • DAG плана;
  • stages и jobs;
  • статусы каждого узла;
  • attempts, retries, duration, started/finished timestamps;
  • logs и raw outputs;
  • artifacts;
  • evidence;
  • gates и approvals;
  • manual interventions;
  • AI diagnosis и PlanPatch history.

Пример продуктовых API:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
GET  /v1/operations
GET  /v1/operations/{operation_id}
GET  /v1/operations/{operation_id}/graph
GET  /v1/operations/{operation_id}/timeline
GET  /v1/operations/{operation_id}/nodes
GET  /v1/operations/{operation_id}/nodes/{node_id}
GET  /v1/operations/{operation_id}/nodes/{node_id}/logs
GET  /v1/operations/{operation_id}/artifacts
GET  /v1/operations/{operation_id}/evidence
GET  /v1/resources/{resource_id}/operations
POST /v1/operations/{operation_id}/pause
POST /v1/operations/{operation_id}/resume
POST /v1/operations/{operation_id}/cancel
POST /v1/operations/{operation_id}/nodes/{node_id}/retry
POST /v1/operations/{operation_id}/gates/{gate_id}/approve
POST /v1/operations/{operation_id}/interventions
POST /v1/operations/{operation_id}/patches/{patch_id}/approve

Для этого нужны read models внутри control-plane-service:

1
2
3
4
5
6
7
8
operation_summary_view
operation_graph_view
operation_timeline_view
operation_node_run_summary
operation_job_log_index
operation_artifact_index
operation_evidence_index
resource_operation_index

Правило: operation history должна быть audit-friendly и immutable на уровне фактов. Если plan меняется во время выполнения, история не переписывается; добавляется PlanPatch, approval и новая версия effective plan.

7. execution-plane-service

Смысл: как реально выполнить job.

execution-plane-service не владеет business operation model. Он владеет execution attempts, runners, raw logs, leases и technical execution records.

Владеет данными

  • ExecutionAttempt.
  • RunnerLease.
  • RunnerStatus.
  • Raw execution logs metadata.
  • Runner output metadata.
  • Temporary job state.

Модули

1
2
3
4
5
6
7
8
9
execution-plane-service/
  dispatcher
  ansible-runner
  kubernetes-runner
  helm-runner
  opentofu-runner
  ssh-runner
  verification-runner
  artifact-worker
Модуль Назначение
dispatcher Выбор runner по job type и запуск execution attempt
ansible-runner Bare metal, WireGuard, kubeadm, prepare nodes
kubernetes-runner Kubernetes API operations
helm-runner Helm install/upgrade/status
opentofu-runner Cloud/IaaS provisioning
ssh-runner Только ограниченные approved commands, не общий root shell
verification-runner Checks и evidence: kubectl, HTTP, systemd, metrics
artifact-worker Logs, manifests, reports, diagnostics bundles в S3/MinIO

БД

Одна PostgreSQL БД сервиса.

1
2
3
4
5
6
execution_plane_db
  execution_attempts
  runner_leases
  runner_statuses
  raw_log_refs
  runner_output_refs

Важная граница

Source of truth по operation остается в control-plane-service. execution-plane-service возвращает execution result, artifacts и evidence, но не решает, завершена ли business operation.

8. AI agent boundary

AI не должен быть execution-plane.

AI-слой может жить как отдельный домен:

1
2
3
4
ai-ops-agent-service/
  analyzer
  planner
  reviewer

Роли:

  • Analyzer - анализ failed operation, logs, artifacts, evidence.
  • Planner - предлагает PlanPatch.
  • Reviewer - проверяет plan до запуска, объясняет risk и blast radius.

AI возвращает structured output:

1
2
3
4
Diagnosis
PlanPatch
RiskReview
Recommendation

control-plane-service применяет результат только через policy, gates и approvals.

9. Инфраструктурные технологии

Технология Роль
PostgreSQL per service Source of truth каждого микросервиса
Kafka Domain events и projections между сервисами, не workflow engine
Temporal Primary durable runtime для long-running операций, не source of truth
Vault Secrets, kubeconfigs, SSH refs, cloud credentials
S3/MinIO Artifacts, logs, diagnostics bundles, rendered manifests
Redis Cache/ephemeral locks только где действительно нужен
OpenTelemetry Traces на operation/job/resource уровне
Prometheus Metrics
Loki Logs
Tempo Distributed traces
Ansible Runner Host automation
Kubernetes API client K8s operations без shell там, где возможно
Helm runner Helm install/upgrade/status
OpenTofu runner Cloud/IaaS provisioning
Policy adapter IAM/OPA/Cedar-like слой за стабильным интерфейсом

Temporal не является доменной моделью. Доменная модель живет в PostgreSQL control-plane-service. Temporal отвечает за durability: retries, timers, signals, pause/resume, human gates и long-running workflows.

10. Выбор workflow/orchestration engine

Под workflow engine здесь понимается runtime для long-running operations: retries, timers, cancellation, resume, human gates, signals, parallel branches и crash recovery.

Важно: какой бы движок ни был выбран, source of truth для продукта остается в control-plane-service. Движок не должен диктовать доменную модель Intent, Plan, Operation, PlanPatch, Evidence.

Решение для текущей архитектуры: Temporal является primary durable runtime за workflow-engine adapter. Остальные варианты остаются кандидатами для будущих specialized adapters или замены runtime, но не являются базовым выбором.

Критерии выбора

Критерий Почему важно
Durable execution Операции могут идти минуты, часы или дни
Dynamic DAG / PlanPatch План может меняться после failed stage
Human-in-the-loop Gates, approvals, manual fix
External workers Ansible, Helm, Kubernetes, OpenTofu, SSH
История выполнения Нужна GitLab-like история jobs/stages
Self-hosted Платформа должна работать в нашей инфраструктуре
Observability hooks Traces, metrics, logs, events
Простая интеграция с Python/Go Под текущий стек проекта

Кандидаты

Вариант Когда подходит Риски / ограничения
Temporal Durable execution, long-running operations, signals, retries, strong SDK model Dynamic DAG и PlanPatch надо реализовывать как интерпретацию нашего Plan, а не как "workflow code = plan"
Cadence Похожая модель на Temporal, open-source predecessor Меньше momentum и ecosystem по сравнению с Temporal
Netflix/Conductor OSS Task/workflow orchestration, JSON/YAML-like definitions, хороший fit для microservice orchestration Менее естественная модель для code-level durable execution; нужно проверить fit для сложных PlanPatch и capability contracts
Argo Workflows Kubernetes-native container jobs, понятный DAG, хороший UI для pod-based workflows Сильно Kubernetes-centric; хуже для SSH/bare metal/human gates/product domain model
Camunda 8 / Zeebe BPMN, human processes, approvals, бизнес-процессы BPMN может быть слишком тяжелым; лицензирование и source-available модель требуют отдельной проверки
Kestra Declarative orchestration, UI, plugins, infra/data workflows Нужно проверить, насколько удобно моделировать наш Operation/PlanPatch protocol
Prefect / Dagster / Airflow Data/batch workflows, Python ecosystem, scheduling Обычно хуже подходят как core control-plane runtime для интерактивных infra operations
Restate / DBOS Durable execution ближе к application code, Postgres-backed модели возможны Более новый класс решений; нужно оценить зрелость для нашего уровня operation history и gates
Собственный DAG engine Максимальный контроль над PlanPatch, capability contracts, UI/history Дорого: retries, timers, leases, cancellation, crash recovery, idempotency, backpressure, versioning придется писать самим

Решение

Архитектурно нужно ввести внутренний workflow-engine adapter, чтобы не зашить Temporal или любой другой движок в доменную модель:

1
2
3
4
5
6
control-plane-service
  operation-manager
  workflow-engine-adapter
    temporal-adapter
    conductor-adapter
    custom-dag-adapter

Primary runtime фиксируется как Temporal, потому что он лучше всего закрывает durable execution, signals, retries и long-running operations. Но продуктовые API, operation history, plan graph, gates и patches должны жить в control-plane-service.

Если позже выяснится, что dynamic DAG/PlanPatch слишком сильно конфликтует с Temporal model, можно рассмотреть специализированные adapters:

  • Conductor/Kestra как более declarative workflow runtime;
  • Argo Workflows для Kubernetes-only execution subgraphs;
  • собственный DAG engine поверх PostgreSQL для operation runtime;
  • гибрид: control-plane own DAG engine + Temporal только для durable activities/timers.

11. Коммуникация

Синхронная коммуникация

sequenceDiagram participant UI as Web App participant CP as control-plane-service participant RC as resource-catalog-service participant EX as execution-plane-service participant AI as ai-ops-agent-service UI->>CP: Create intent / preview plan / start operation CP->>RC: Command-time validation CP->>EX: Execute job via workflow activity EX-->>CP: Execution result + artifact/evidence refs CP->>AI: Analyze failure or review plan AI-->>CP: Diagnosis / PlanPatch / RiskReview CP->>RC: Final resource update / capability binding

Синхронные вызовы должны быть на границах команд, а не на каждом read.

Асинхронная коммуникация

Kafka события:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
resource.created
resource.updated
resource.deleted
capability.definition.published
capability.provided
intent.created
plan.created
operation.started
operation.node.started
operation.node.succeeded
operation.node.failed
operation.completed
operation.cancelled
gate.waiting
gate.approved
gate.rejected
plan.patch.proposed
plan.patch.approved
artifact.created
evidence.recorded

События используются для projections, audit, read models и loosely-coupled integrations. Они не заменяют source of truth.

12. Source of truth matrix

Данные Source of truth
Resource metadata resource-catalog-service
Resource desired/observed state resource-catalog-service
Provided capabilities resource-catalog-service
Capability definitions resource-catalog-service
Scenario packs/templates control-plane-service
Intents/plans/operations control-plane-service
Gates/interventions/patches control-plane-service
Artifact/evidence metadata control-plane-service
Raw logs/artifact blobs S3/MinIO
Secrets/kubeconfigs/credentials Vault
Execution attempts/runner leases execution-plane-service
Audit trail audit-service

13. Типовой flow: установка Tempo

flowchart TB intent[User intent: install Tempo] plan[control-plane planner] projection[local capability projection] missing{object_storage.s3 exists?} subop[sub-operation: install MinIO] dag[Tempo install DAG] temporal[Temporal workflow] runner[execution-plane runners] evidence[Evidence + artifacts] catalog[resource-catalog update] intent --> plan plan --> projection projection --> missing missing -->|yes| dag missing -->|no| subop subop --> dag dag --> temporal temporal --> runner runner --> evidence evidence --> catalog

14. Почему не один микросервис

Один большой platform-core-service быстро смешает:

  • catalog state;
  • operation state;
  • execution attempts;
  • runner security;
  • scenario registry;
  • observed state.

У этих частей разные риски и разные нагрузки. Особенно execution-plane должен быть изолирован: он работает с SSH, Ansible, Helm, Kubernetes API, secrets и потенциально опасными side effects.

15. Почему не больше микросервисов

Не стоит выносить отдельно:

  • organizations внутри platform-core;
  • scenario-registry;
  • planner;
  • capability-resolver;
  • operation-manager.

Причина: они постоянно участвуют в одном planning/operation use case и ходят в одни и те же данные. Разделение создаст лишние синхронные вызовы и сложные projections без реального выигрыша.

16. Финальная граница ответственности

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
resource-catalog-service:
  source of truth for resources, topology, relationships, desired/observed state,
  capability definitions, provided capabilities

control-plane-service:
  source of truth for scenarios, intents, plans, operations, gates,
  interventions, PlanPatches, artifact/evidence metadata

execution-plane-service:
  source of truth for execution attempts, runner state, raw execution outputs

ai-ops-agent-service:
  analyzer/planner/reviewer, returns structured results,
  does not own operations and does not execute jobs by default

17. Открытые вопросы

  1. Должны ли CapabilityDefinition жить в resource-catalog или control-plane? Текущая рекомендация: resource-catalog, потому что это онтология ресурсов.
  2. Какой транспорт выбрать для internal API execution-plane: gRPC, HTTP, Temporal activities wrapper или гибрид?
  3. Какой уровень isolation нужен runners: process, container, Kubernetes Job, Firecracker-like sandbox?
  4. Какой формат scenario packs выбрать: YAML directory, OCI artifact, Git repository, database records?
  5. Как синхронизировать versions scenario packs с уже запущенными operations?
  6. Какую policy technology выбрать под adapter: OPA/Rego, Cedar, custom rules или гибрид?
  7. Какие ограничения заложить в workflow-engine adapter, чтобы Temporal оставался runtime, а не доменной моделью?
  8. Какой минимальный read model нужен для GitLab-like отображения operation history без тяжелых runtime queries?

18. Ссылки по workflow/orchestration engine

  • Temporal documentation
  • Cadence Workflow
  • Conductor OSS
  • Argo Workflows documentation
  • Camunda 8 Zeebe documentation
  • Kestra documentation
  • Apache Airflow documentation
  • Prefect documentation
  • Restate documentation
  • DBOS Transact
Введение (control plane) Доменная модель v0
Меню
Главная Карта документации
0. С чего начать
С чего начать Что это за продукт Для кого он Как устроена документация Быстрые ссылки Как начать разработку Как найти нужный сервис К кому идти по вопросам
1. Продукт
Продукт
2. Домены
Домены Домен: Профиль пользователя Домен: Поиск Домен: Заказы / транзакции Домен: Уведомления Домен: Аналитика Домен: Рекомендации
3. Архитектура
Архитектура Диаграмма: auth микросервисы
4. Инженерия
Инженерия
5. Платформа
Платформа Облако Объектное хранилище CI/CD Секреты и сертификаты Резервное копирование и восстановление
6. Разработка
Разработка Быстрый старт Локальная настройка Карта репозиториев Стандарты кода Git-процесс Стратегия ветвления Руководство по код-ревью Критерии готовности Процесс релиза Флаги фич FAQ разработчика Миграция secure auth
7. Эксплуатация
Эксплуатация Дежурство Управление инцидентами Уровни критичности Политика эскалации Постмортемы Ранбуки Управление изменениями Непрерывность бизнеса
8. Аналитика
Аналитика План трекинга событий Определения KPI Каталог дашбордов Словарь метрик Эксперименты Стандарты отчётности
9. Управление
Управление Решения (ADR) Политика статуса контента Changelog обновлений документации

На странице

1. Термины проектирования 2. Главный принцип разбиения 3. Итоговая структура проекта 4. Общая схема компонентов 5. resource-catalog-service Владеет данными Модули БД Важная граница 6. control-plane-service Владеет данными Модули Почему scenario-registry здесь БД Projections вместо постоянных вызовов Product API и история операций 7. execution-plane-service Владеет данными Модули БД Важная граница 8. AI agent boundary 9. Инфраструктурные технологии 10. Выбор workflow/orchestration engine Критерии выбора Кандидаты Решение 11. Коммуникация Синхронная коммуникация Асинхронная коммуникация 12. Source of truth matrix 13. Типовой flow: установка Tempo 14. Почему не один микросервис 15. Почему не больше микросервисов 16. Финальная граница ответственности 17. Открытые вопросы 18. Ссылки по workflow/orchestration engine