Программная архитектура
Программная архитектура Платформы включает следующие компоненты:
-
Среда выполнения (см. следующий рисунок): вычислительное окружение, необходимое для выполнения разработанного на базе Платформы приложения и доступное во время его выполнения.
Программная архитектура Платформы: среда выполнения -
Среда разработки: комплекс программных средств, например, редакторов, трансляторов, инструментов сборки для разработки приложений на базе Платформы. Среда разработки и ее связь со средой выполнения в Платформе показаны на следующем рисунке.
Программная архитектура Платформы: среда разработки и среда выполнения
Платформа и приложения на базе Платформы состоят из клиентской части, разработанной на JavaScript и выполняющейся в браузере, и серверной части. Клиентская и серверная части взаимодействуют через пограничный шлюз на базе Nginx. Шлюз фильтрует потоки данных между клиентами и сервером, а также маршрутизирует запросы и балансирует нагрузку между микросервисами.
Платформа включает следующие микросервисы:
-
Сервис пользовательского интерфейса динамически формирует пользовательский интерфейс клиента на основе метаданных компонентов интерфейса, а также типов запросов и типов данных.
-
Сервис аутентификации аутентифицирует пользователей, используя локальную базу данных пользователей, а также доверенные внешние поставщики аутентификации по протоколам OAuth2 и Active Directory.
-
Сервис авторизации контролирует права доступа к объектам и функциям Платформы. Контроль прав доступа к компонентам пользовательского интерфейса, клиентские запросы к серверу Платформы, межсервисные коммуникации внутри Платформы, доступ к файлам и данным требуют предварительной настройки. Возможно расширение точек контроля прав доступа к любому компоненту Платформы.
-
Сервис аудита обеспечивает ведение и хранение журналов событий безопасности в Платформе. Список событий безопасности и точек их генерации является расширяемым.
-
Сервис доступа к данным выступает в роли слоя абстракции между объектной моделью бизнес-данных, используемой в Платформе, и физическим реляционным хранилищем данных в PostgreSQL или Postgres Pro. Для доступа к данным в Платформе используется протокол GraphQL.
Хранилище файлов обеспечивает загр узку, хранение и выгрузку файлов любых типов и размеров. Протокол доступа к хранилищу файлов совместим с протоколом Amazon S3.
-
Сервис BPMS координирует исполнение бизнес-процессов. Ядро сервиса BPMS основано на программном обеспечении с открытом кодом Camunda и дополнено разработанными для Платформы механизмами контроля прав доступа и исполнения процессов и их шагов.
-
Сервисы диагностики централизованно собирают, обрабатывают и хранят следующие диагностические данные:
- журнал событий;
- журнал трассировки;
- метрики.
Для хранения и обработки данных диагностики используется программное обеспечение с открытым кодом из стеков Grafana и Elasticsearch. Для сбора и передачи диагностических данных используются открытые стандарты OpenTelemetry, которые позволяют перенаправить диагностические данные во внешние по отношению к Платформе сервисы хранения и обработки ди агностической информации.
-
Сервисы серверной части Платформы выполняются в среде ОС Linux с использованием контейнерной виртуализации на базе Docker и Docker Swarm. Использование контейнеров позволяет делать следующее:
- развертывать Платформу в физических и виртуальных средах;
- обновлять и заменять отдельные компоненты и сервисы, не затрагивая остальные компоненты Платформы;
- масштабировать Платформу горизонтально на несколько физических или виртуальных серверов.
Для коммуникации между сервисами Платформы используются следующие протоколы:
- HTTP и REST: для синхронных взаимодействий.
- WebSocket и SignalR: для синхронных и асинхронных двунаправленных взаимодействий.
- RabbitMQ: программный брокер сообщений для работы с очередями сообщений в сценариях асинхронного взаимодействия и событийной модели.
Для коммуникации между клиентами и сервером Платформы используются следующие протоколы:
- HTTP и REST: для синхронных взаимодействий.
- WebSocket и SignalR: для синхронных и асинхро нных двунаправленных взаимодействий, а также реализации событийной модели и отправки уведомлений.