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

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

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

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

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