Архитектура системы
Описание взаимодействия
Ниже приводится общая схема архитектуры системы SmartDCIM.

Сервер "SmartDCIM" – серверная часть системы. Представляет собой набор микросервисов, которые производят обработку и анализ поступивших данных, в частности, управляют логикой смены состояний у объектов и связей. В состав серверной части также входят NGINX и REST-сервер.
Kafka – шина данных, которая обеспечивает обмен данными между микросервисами системы SmartDCIM, отправляет Агентам список задач и принимает результат их выполнения.
NOTE
Взаимодействие с устаревшими Агентами версии ниже 3.0 обеспечивается через Redis.
MongoDB – NoSQL-СУБД, которая является основным хранилищем данных о пользователях, объектах и связях, их свойствах, состояниях и авариях.
Redis – это хранилище данных в оперативной памяти (in-memory кэш), благодаря которому реализуется быстрый доступ к часто запрашиваемой информации.
OpenTSDB – специализированное хранилище временных рядов, в котором хранятся числовые метрики, используемые при построении графиков.
NGINX – это HTTP-сервер, обслуживающий запросы клиентов. Отдаёт статические элементы web-интерфейса (HTML, JavaScript, CSS), а также проксирует запросы от клиента к REST-серверу.
REST-сервер – один из микросервисов системы SmartDCIM, который отвечает за обработку REST-запросов от клиентов. Через REST API клиент получает и изменяет информацию, обрабатываемую сервером системы SmartDCIM.
Агент – это программа, устанавливаемая на виртуальный или физический сервер или иной узел сети и осуществляющая выполнение проверок, сбор и передачу информации серверу через шину данных Kafka.
NOTE
Предусмотрена возможность создания пользовательского агента, который будет собирать метрики с локального хоста, опрашивать сторонние сервисы и отправлять данные на сервер через REST API .
Web-клиент и Мобильное приложение – это клиенты, с помощью которых пользователи системы взаимодействуют с сервером через REST API. В роли клиентов могут выступать, например, web-приложения и клиенты для мобильных операционных систем Android и iOS.
NOTE
Для решения специфических задач можно создать индивидуального клиента, который будет работать с сервером через REST API.
Внешние системы – это стороннее ПО, информационные системы или программные модули, которые могут взаимодействовать с сервером с помощью REST API.
Сервисы авторизации – наряду со встроенными механизмами, SmartDCIM также поддерживает сторонние сервисы для авторизации пользователей в системе. Возможна интеграция с AD-сервером и Keycloak (см. LDAP и Интеграция с Keycloak).
Уведомления – сервер может уведомлять Пользователей об авариях и отправлять данные во Внешние Системы с использованием различных каналов, описанных в разделе Действия при смене состояний.
Отказоустойчивость и резервирование
Для обслуживания высокой вычислительной нагрузки система может быть реализована в отказоустойчивом исполнении с дублированием основных компонентов:

Производительность системы может быть увеличена следующими способами:
- Добавление ресурсов виртуальной инфраструктуры;
- Оптимизация параметров программного обеспечения.
Версии используемого и поддерживаемого ПО
- Keycloak 1.0 и выше;
- Драйвер MongoDB 6.16.0 (поддержка MongoDB от 4.0 до 8.0);
- NGINX 1.4 и выше;
- Node.js 20.11.x и выше;
- OpenTSDB 2.3 и выше;
- Redis 3.0 и выше;
- Socket.IO 4.0 и выше;
- TypeScript 4.7.4 и выше.
- KafkaJS 2.2.4