Перейти к основному содержимому

Программная архитектура

Программная архитектура Платформы включает следующие компоненты:

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

    Программная архитектура платформы.png
    Программная архитектура Платформы: среда выполнения
  • Среда разработки: комплекс программных средств, например, редакторов, трансляторов, инструментов сборки для разработки приложений на базе Платформы. Среда разработки и ее связь со средой выполнения в Платформе показаны на следующем рисунке.

    Архитектура среды разработки Платформы.png
    Программная архитектура Платформы: среда разработки и среда выполнения

Платформа и приложения на базе Платформы состоят из клиентской части, разработанной на 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: для синхронных и асинхронных двунаправленных взаимодействий, а также реализации событийной модели и отправки уведомлений.