Архитектура
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 — разделять пользовательский контекст, логику приложения и инфраструктуру, не заставляя их подчиняться одной и той же структуре.
Поверхность может объединять несколько Сервисов. Рабочий процесс может объединять несколько операций. А несколько Рабочих процессов и Сервисов могут использовать одни и те же базовые Приложения.
В результате получается система, которая остаётся модульной на уровне бизнес-логики, компактной на уровне инфраструктуры и единой с точки зрения пользователя.