Глава 4. Продуктовая схема

Платформа «Era» имеет собственный процесс сборки Continuous Integration (далее CI). Результатом является дистрибутив. Это программный каталог, упакованный либо в docker-контейнер, либо в zip-архив, снабженный скриптом развертки.

На каждом из серверов кластера создается docker-контейнер, содержащий все необходимые модули и ассеты. На всех серверах кластера содержание контейнера идентично. Контейнер находится под супервизией демона операционной системы. Внутри контейнера запускается нода ядра, которая обеспечивает оркестрацию и супервизию микросервисов согласно конфигурации. Завершение любого процесса обрабатывается вышестоящим супервизором, вплоть до демонов операционной системы.

При изменении конфигурации состав микросервисов на конкретном сервере и/или их параметры могут изменяться. Применение производится нодой ядра. Обновление платформы может производиться автоматически внутри действующих контейнеров путем подмены модулей и ассетов и последующего перезапуска контейнера. В особых случаях может применяться посерверное обновление путем создания нового контейнера.

Каждый контейнер хранит последнюю актуальную конфигурацию на диске и загружается из нее. Микросервисы системы уже затем подключаются к внешним хранилищам, и загружаются из них. В том числе актуальная конфигурация может обновлена после загрузки ответственных микросервисов из БД.

Продукты, дистрибутивы и процесс сборки

Каждая версия продукта поставляется в форме дистрибутива. Это отдельно docker-образ и архив обновления, получаемые в результате сборки в процессе CI стека платформы «Era». В процессе CI платформы производится модульное и системное тестирования платформы и ее базовых приложений.

Дистрибутив готового продукта содержит программный каталог, содержащий библиотеки входящих в состав приложений, включая саму платформу «Era», файлы окружения (ассеты), среды исполнения. Программный каталог наполняется последовательно результатами сборки всех входящих в поставку приложений.

product_assets

Иные ассеты или среды (например JRE) могут быть добавлены в docker-образ, созданный на базе docker-образа с подходящей версией платформы.

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

Домены, продуктовый слой и предметные области

Все данные в платформе принадлежат доменам. Функциональность доменов может существенно различаться. В каждый домен коммуникационной может быть установлен продуктовый слой. Продуктовым слоем коммуникационная платформа "оплодотворяется" и получает информационную часть. Продуктовый слой поставляется вместе с дистрибутивом, либо отдельно. Версионирование продуктового слоя производится независимо от платформы.

Продуктовый слой делает платформу информационно-коммуникационной.

В информационной части платформы создается базовая модель данных: * Классы * Контролы * Эдиторы * Роли пользователей * Веб-приложения * Серверные микросервисы * Сценарии * Пакеты

Класс - типизированная структура данных, под которую автоматически создается коллекция, REST-API, выделяется в хранилищах, генерируются обертки для JS/TS. Пакет - совокупность сущностей различных типов, в том числе конкретных связанных между собой классов, приложений, ролей, микросервисов. Все эти сущности в пакете представляют собой конкретную предметную область и решают конкретную информационно-коммуникационную задачу. Например, пакет callcenter - представляет собой информационно-коммуникационную обвязку, предоставляющую в конкретном домене функциональность для массовой типизированной обработки звонков, соответствующую отчетность и сервисы.

Пакет расширяет функциональоность домена. Появляются новые роли для пользователей, а обладателям конкретных ролей становятся доступным веб-приложения предметной области. Например, в коллцентре это оператор коллцентра, супервизор, администратор коллцентра и соответствующие им приложения АРМ, Отчеты, Настройки и т.д. Для обслуживания сложных процессов используются микросервисы - клиентские и серверные. Серверные активирются вместе с пакетом с привязкой к конкретному домену, подключаются к API платформы, взаимодействуют между собой путем создания и изменения тех или иных сущностей.

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

Пакеты создаются, экспортируются/импортируются, активируются/деактивируются в базовом приложении продуктового слоя (Билдер). Создание пакетов происходит в low-code форме.