Архитектура программы

Программа построена по принципу микросервисной архитектуры и может быть разделена на основные сервисы и сервисы, работающие в зоне (подробнее про зоны см. в разделе 7 Руководства пользователя). Каждый компонент программы представляет собой DEB-пакет, который размещен в контейнере. Таким образом, программа – это набор взаимодействующих между собой контейнеров, который может быть развернут в любой среде, содержащей Docker Engine, Docker Compose и СУБД (см. также раздел 6).

Основные сервисы (Main services): включают компоненты: Core Service (WAS, EXS, Web UI, Vault), Core Service Database, Asset Manager, Asset Manager Database, Reflector, Module registry.

Сервисы зоны (Zone services): Keeper, Keeper storage, Module.

Схематично архитектура программы приведена на рисунке 1.

Рисунок 1 Архитектура программы

Приведем описание сервисов:

Core Service – основной сервис, отвечающий за бизнес-логику и предоставление API для web-интерфейса. Содержит функциональность по управлению и настройке модулей.

В составе Core Service выделены следующие компоненты:

  • WAS (Web Application Service) – основной бэкенд-сервис, предоставляющий REST API для взаимодействия с UI и другими сервисами.

  • EXS (Executor Service) – отвечает за выполнение автоправил и бизнес-логики.

  • Web UI – пользовательский интерфейс.

  • Vault – защищенное хранилище секретов.

Core Service Database – база данных, в которой хранятся данные сервисов WAS и EXS.

Asset Manager – сервис, отвечающий за примитивные операции с активами – вариации CRUD, обогащение, установка связей, простейшие фильтры.

Asset Manager Database – база данных, в которой хранятся активы, история изменений, модификации, связи, теги.

Reflector – компонент, упрощающий взаимодействие ключевых сервисов с киперами в закрытых зонах.

Keeper – оркестратор модулей, занимается деплоем и запуском модулей, также отправляет информацию об ассетах в ассет-менеджер.

Keeper storage – хранилище данных, в котором хранится информация о модулях и их запусках.

Module – контейнер, выполняющий определенную функциональность по поиску ассетов или сбору данных об ассетах (активах).

Module registry – хранилище (registry) образов контейнеров модулей.