Глава 4. Продуктовая схема
Платформа «Era» имеет собственный процесс сборки Continuous Integration (далее CI). Результатом является дистрибутив. Это программный каталог, упакованный либо в docker-контейнер, либо в zip-архив, снабженный скриптом развертки.
На каждом из серверов кластера создается docker-контейнер, содержащий все необходимые модули и ассеты. На всех серверах кластера содержание контейнера идентично. Контейнер находится под супервизией демона операционной системы. Внутри контейнера запускается нода ядра, которая обеспечивает оркестрацию и супервизию микросервисов согласно конфигурации. Завершение любого процесса обрабатывается вышестоящим супервизором, вплоть до демонов операционной системы.
При изменении конфигурации состав микросервисов на конкретном сервере и/или их параметры могут изменяться. Применение производится нодой ядра. Обновление платформы может производиться автоматически внутри действующих контейнеров путем подмены модулей и ассетов и последующего перезапуска контейнера. В особых случаях может применяться посерверное обновление путем создания нового контейнера.
Каждый контейнер хранит последнюю актуальную конфигурацию на диске и загружается из нее. Микросервисы системы уже затем подключаются к внешним хранилищам, и загружаются из них. В том числе актуальная конфигурация может обновлена после загрузки ответственных микросервисов из БД.
Продукты, дистрибутивы и процесс сборки
Каждая версия продукта поставляется в форме дистрибутива. Это отдельно docker-образ и архив обновления, получаемые в результате сборки в процессе CI стека платформы «Era». В процессе CI платформы производится модульное и системное тестирования платформы и ее базовых приложений.
Дистрибутив готового продукта содержит программный каталог, содержащий библиотеки входящих в состав приложений, включая саму платформу «Era», файлы окружения (ассеты), среды исполнения. Программный каталог наполняется последовательно результатами сборки всех входящих в поставку приложений.
Иные ассеты или среды (например JRE) могут быть добавлены в docker-образ, созданный на базе docker-образа с подходящей версией платформы.
В особых случаях процесс сборки может быть кастомизирован иным составом приложений и ассетов.
Домены, продуктовый слой и предметные области
Все данные в платформе принадлежат доменам. Функциональность доменов может существенно различаться. В каждый домен коммуникационной может быть установлен продуктовый слой. Продуктовым слоем коммуникационная платформа "оплодотворяется" и получает информационную часть. Продуктовый слой поставляется вместе с дистрибутивом, либо отдельно. Версионирование продуктового слоя производится независимо от платформы.
Продуктовый слой делает платформу информационно-коммуникационной.
В информационной части платформы создается базовая модель данных: * Классы * Контролы * Эдиторы * Роли пользователей * Веб-приложения * Серверные микросервисы * Сценарии * Пакеты
Класс - типизированная структура данных, под которую автоматически создается коллекция, REST-API, выделяется в хранилищах, генерируются обертки для JS/TS. Пакет - совокупность сущностей различных типов, в том числе конкретных связанных между собой классов, приложений, ролей, микросервисов. Все эти сущности в пакете представляют собой конкретную предметную область и решают конкретную информационно-коммуникационную задачу. Например, пакет callcenter - представляет собой информационно-коммуникационную обвязку, предоставляющую в конкретном домене функциональность для массовой типизированной обработки звонков, соответствующую отчетность и сервисы.
Пакет расширяет функциональоность домена. Появляются новые роли для пользователей, а обладателям конкретных ролей становятся доступным веб-приложения предметной области. Например, в коллцентре это оператор коллцентра, супервизор, администратор коллцентра и соответствующие им приложения АРМ, Отчеты, Настройки и т.д. Для обслуживания сложных процессов используются микросервисы - клиентские и серверные. Серверные активирются вместе с пакетом с привязкой к конкретному домену, подключаются к API платформы, взаимодействуют между собой путем создания и изменения тех или иных сущностей.
Один из существенных принципов продуктового слоя - реалтайм отслеживание изменений. Каждое приложение или микросервис может подписаться на изменения тех или иных коллекций или конкретных сущностей, чтобы моментально получить уведомление.
Пакеты создаются, экспортируются/импортируются, активируются/деактивируются в базовом приложении продуктового слоя (Билдер). Создание пакетов происходит в low-code форме.
-
Следующая глава: Методики управления атрибутами качества
-
Предыдущая глава: глава: Кейсы для глубокого погружения в архитектуру