Change language

Архитектура

Converged построен как модульная среда выполнения, в которой интерфейс, бизнес-логика и инфраструктура разделены, но работают как единая система.

На уровне пользователя система состоит из Поверхностей (Surfaces), организующих рабочий контекст, и Представлений (Projections) — отдельных экранов, предназначенных для решения конкретных пользовательских задач.

Бизнес-логика реализована на TypeScript с помощью нескольких типов Сервисов (Services): Репозиториев, Ламбд и Сред выполнения. Более сложные процессы объединяются в Рабочие процессы (Workflows), которые выполняются через движок обработки DAG Centimanus.

В основе системы находятся Приложения (Apps). Это инфраструктурные среды выполнения с компактным ядром на Zig, в котором запускаются скрипты TypeScript. Приложения предоставляют базовые возможности, на которых работают Сервисы, Рабочие процессы и пользовательский интерфейс.

User ↓ Surfaces └── Projections ↓ Services — TypeScript ├── Repositories ├── Lambdas └── Runtimes ↓ Workflows ↓ Apps — Zig + TypeScript ├── Fujin ├── Centimanus ├── Resonus ├── Behemoth ├── Ptah └── Cruller ↓ Kubernetes ↓ Edge / Server / Cluster

Поверхности и Представления

Поверхность (Surface) — это пользовательское рабочее пространство, организованное вокруг определённого рабочего контекста. Она объединяет данные, действия и представления, необходимые для работы в конкретной области.

Поверхность не обязана соответствовать одному Сервису. Она может объединять данные и действия из нескольких Репозиториев, Ламбд, Сред выполнения и Рабочих процессов.

Представление (Projection) — это отдельный экран внутри Поверхности, предназначенный для выполнения конкретной функции. Он представляет данные в удобной для пользователя форме и предоставляет необходимые действия.

Таким образом, интерфейс организован вокруг того, с чем работает пользователь, а не вокруг внутренней структуры Сервисов.

Сервисы

Бизнес-логика Converged написана на TypeScript и разделена на несколько типов Сервисов.

Репозитории (Repositories) инкапсулируют доступ к данным. Они предоставляют интерфейс для чтения, изменения и запросов к данным, скрывая используемый механизм хранения.

Ламбы (Lambdas) — это функции без состояния, предназначенные для отдельных операций, таких как обработка и преобразование данных, вычисления, валидация или работа в качестве шлюзов к внешним API.

Среды выполнения (Runtimes) предоставляют специализированные среды выполнения для логики, которой требуется собственный контекст выполнения.

Сервисы являются строительными блоками системы. Им не нужно знать о бизнес-процессах, в которых они будут использоваться, и их можно повторно использовать в разных Поверхностях и Рабочих процессах.

Рабочие процессы

Рабочий процесс (Workflow) объединяет Сервисы в полноценный бизнес-процесс.

Вместо соединения Сервисов прямыми вызовами Рабочий процесс определяет, какие операции необходимо выполнить, в каком порядке, какие шаги могут выполняться параллельно, где система должна ожидать событие и что должно произойти при сбое операции.

Например:

Order ↓ Payment ↓ Slicing ↓ Production ↓ Delivery

Рабочий процесс может использовать Репозитории для операций с данными, Ламбы для отдельных операций, а Среды выполнения или Приложения — для специализированных задач.

Centimanus

Centimanus — это DAG-движок, выполняющий Рабочие процессы.

Рабочий процесс представлен в виде графа операций, а Centimanus управляет его выполнением: зависимостями между шагами, повторами, ожиданием событий, параллельными операциями и компенсацией при сбое.

Каждое выполнение создаёт журнал аудита, показывающий, что было запущено, что завершилось, какие операции повторялись и почему произошёл сбой.

Это позволяет создавать длительные и отказоустойчивые процессы, сохраняющие состояние выполнения и способные продолжиться после перезапуска.

Сервисы остаются независимыми, поскольку для реализации конкретного бизнес-процесса их не нужно соединять цепочками прямых вызовов.

Приложения

Приложения (Apps) — инфраструктурная основа Converged.

Приложение — это лёгкая виртуальная среда выполнения. Его системное ядро написано на Zig, а изменяемая логика запускается в виде скриптов TypeScript.

Такое разделение позволяет сохранить критически важную инфраструктуру в компактном высокопроизводительном ядре, одновременно сохраняя гибкость TypeScript для логики приложения и конфигурации.

Приложения предоставляют инфраструктурные возможности, используемые остальной системой:

  • Fujin — коммуникационная ткань для команд, событий, WebSockets и телеметрии оборудования.
  • Centimanus — обработка DAG и выполнение Рабочих процессов.
  • Resonus — шлюз реального времени для голосовой связи, медиа, транскрибации и провайдеров ИИ.
  • Behemoth — изолированное мульт待-хранилище для разных типов данных.
  • Ptah — управление развёртыванием и топологией Kubernetes.
  • Cruller — среда выполнения, в которой работают UI-модули и модули TypeScript.

Приложения не являются ещё одним уровнем бизнес-логики. Они предоставляют инфраструктуру и среды выполнения, в которых работает слой TypeScript.

Fujin

Fujin — это единая ткань для команд, событий и телеметрии.

Все компоненты системы взаимодействуют через Fujin, а не посредством прямых вызовов друг друга. Команда из UI, событие Рабочего процесса, показание датчика оборудования или обновление прогресса производства проходят через один и тот же коммуникационный слой.

WebSockets доставляют изменения в интерфейс в реальном времени без опроса.

Поскольку коммуникация проходит через единый слой, её можно централизованно трассировать, воспроизводить и ограничивать по скорости.

Результат: Сервисы остаются независимыми, взаимодействие в реальном времени становится частью общей инфраструктуры, а системные события становятся наблюдаемыми.

Resonus

Resonus — это единый интерфейс реального времени для голоса, медиа и ИИ.

Он объединяет телефонные звонки, аудиопотоки, транскрибацию и адаптеры провайдеров ИИ в одном слое.

Разговор может перейти от телефонного звонка к транскрибации, а затем к анализу ИИ, не переходя между разными системами. Медиа можно напрямую связывать с заказами, оборудованием и событиями.

Адаптеры провайдеров изолируют систему от отдельных поставщиков голосовых и ИИ-сервисов.

Результат: голос, медиа и ИИ становятся частью общей среды Рабочих процессов, а провайдеров можно заменять без перестройки логики приложения.

Behemoth

Behemoth — это единая система мульт-хранилищ для данных Converged.

Для разных типов данных предоставляется подходящее хранилище: SQL для заказов и клиентов, файлы для моделей и документов, векторы для поиска с помощью ИИ, кэш для оперативного состояния и другие специализированные типы хранения при необходимости.

Изоляция заложена структурно: данные разных рабочих пространств не смешиваются, их можно независимо масштабировать, резервировать и перемещать.

Одна и та же модель работает в развёртываниях Edge, Server и Cluster. На небольшом устройстве Edge все домены хранения могут находиться на одном узле; в Cluster они могут быть распределены по специализированному оборудованию хранения.

Результат: данные изолированы по самой конструкции, а инфраструктура хранения может расти вместе с установкой без изменения прикладного слоя.

Ptah

Ptah — это оркестратор развёртывания Converged поверх Kubernetes.

Он управляет размещением Приложений, контейнеров и данных в соответствии с топологией развёртывания: Edge, Server или Cluster.

Ядро Ptah написано на Zig, а правила управления реализованы в виде скриптов TypeScript. Это позволяет изменять логику размещения, порядок выкатывания, переключение при отказе и распределение данных без пересборки ядра.

Один и тот же механизм используется для разных типов установки — от одного узла Edge до распределённого кластера.

Результат: вся система управляется через единый слой развёртывания, а логика развёртывания остаётся динамичной и изменяемой.

Cruller

Cruller — это среда выполнения для UI и модулей TypeScript.

Она предоставляет среду, в которой выполняется логика Converged на TypeScript, включая UI и модули приложения.

Cruller соединяет динамический слой TypeScript с инфраструктурными возможностями, предоставляемыми Приложениями, позволяя развивать прикладной слой без изменения низкоуровневого ядра.

Kubernetes и топология

Все Приложения и связанные компоненты развёртываются через Kubernetes.

Converged использует одну и ту же архитектурную модель независимо от масштаба установки:

Edge → single node Server → single server with greater resources Cluster → multiple nodes and distributed storage

Физическая топология меняется, но модель приложения — нет. Сервисы, Рабочие процессы, Поверхности и Представления работают одинаково, независимо от того, запущена ли система на устройстве Edge или в полноценном кластере.

Единая модель

Разные части Converged организованы вокруг разных обязанностей:

Поверхность (Surface) — пользовательский рабочий контекст.
Представление (Projection) — конкретная функция и её визуальное представление.
Репозиторий (Repository) — доступ к данным.
Ламба (Lambda) — отдельная операция без состояния.
Среда выполнения (Runtime) — специализированная среда выполнения.
Рабочий процесс (Workflow) — бизнес-процесс, объединяющий Сервисы.
Приложения (Apps) — инфраструктурные среды выполнения с ядром на Zig и TypeScript внутри.
Fujin — коммуникация и события.
Centimanus — выполнение Рабочих процессов.
Resonus — голос, медиа и ИИ в реальном времени.
Behemoth — хранение данных.
Ptah — развёртывание и управление Kubernetes.
Cruller — среда выполнения для UI и TypeScript.

Центральный принцип Converged — разделять пользовательский контекст, логику приложения и инфраструктуру, не заставляя их подчиняться одной и той же структуре.

Поверхность может объединять несколько Сервисов. Рабочий процесс может объединять несколько операций. А несколько Рабочих процессов и Сервисов могут использовать одни и те же базовые Приложения.

В результате получается система, которая остаётся модульной на уровне бизнес-логики, компактной на уровне инфраструктуры и единой с точки зрения пользователя.