Развёртывание Comindware Platform. Архитектура, ландшафт, программное и техническое обеспечение
Введение
Comindware Platform представляет собой целостный программный комплекс на базе стека современных технологий.
Здесь представлено краткое описание архитектуры Comindware Platform, а также даны рекомендации по выбору ландшафта и конфигурации программного и аппаратного (технического) обеспечения для развёртывания Системы на основе Comindware Platform.
Определения
- Сервер приложений — установленный экземпляр ПО Comindware Platform.
- Приложение — обособленное бизнес-решение, реализованное на сервере приложений.
- Активные пользователи — пользователи, регулярно генерирующие данные на сервере приложений.
- DAS — запоминающее устройство, непосредственно подключенное к серверу приложений.
- SAN — сетевая система хранения (СХД, сеть хранения данных).
- IOPS — количество операций ввода-вывода в секунду.
Архитектура Системы
В основе Системы лежит клиент-серверная компонентно-многослойная сервисно-ориентированная архитектура, расширяемая плагинами и адаптерами.
В состав Системы входят следующие компоненты:
- Веб-приложение: одностраничное приложение (SPA) на основе Marionette, Backbone, React, Redux.
- Мобильное приложение: React Native on Expo.
- Бэкенд: компоненты-сервисы на основе .NET 8.0, JRE 17, Mono 6.12 (Linux), .NET Framework 4.8 (Windows).
- СУБД: фирменная патентованная СУБД Comindware ElasticData
- Хранилище данных: распределённая высокопроизводительная СУБД Apache Ignite.
- Сервис журналирования транзакций: OpenSearch (Elasticsearch).
- Сервис сбора и анализа журналов и данных мониторинга Системы: Zabbix, OpenSearch (Elasticsearch), Kibana (OpenSearch Dashboards).
- Сервис файловых журналов: NLog.
- Модули для интеграции: см. «Интеграция с внешними системами».
Внимание!
Если продуктовый контур Comindware Platform изолирован внешним межсетевым экраном, необходимо настроить правила фильтрации для разрешения входящего трафика HTTP/HTTPS и WS/WSS в контур Comindware Platform.
См. Перечень стороннего ПО, входящего в состав и необходимого для работы Системы.

Безопасность и отказоустойчивость Системы
В Системе предусмотрены следующие механизмы обеспечения безопасности и отказоустойчивости:
- Внешняя безопасность — реализуется посредством:
- механизма аутентификации пользователей Kerberos и OpenID;
- сетевого экрана;
- обратного прокси-сервера.
- Внутренняя безопасность — реализуется посредством ролевой модели безопасности.
- Отказоустойчивость — реализуется посредством использованием резервных серверов и дополнительных узлов хранения и обработки данных.
- Масштабируемость — реализуется посредством увеличения количества серверов, обрабатывающих запросы.
См. «Безопасность».
Интеграция с внешними системами
Предусмотрены следующие механизмы интеграции с внешними системами:
- Git — контроль версий приложений, создаваемых с помощью Системы.
- OData — обмен данными с внешними системами посредством REST API.
- OpenLDAP (Active Directory) — аутентификация, управление аккаунтами и единый вход.
- SMTP/IMAP/Exchange — получение и отправка электронных писем.
- ESB (Apache Kafka / RabbitMQ / MSMQ) — обмен сообщениями с внешними системами в распределенных и федеративных конфигурациях.
См. «Подключения».
Ландшафт развертывания Системы
Для достижения бесперебойной работы Систему необходимо развернуть в окружении, обеспечивающем достаточную производительность и отказоустойчивость.
Систему можно развернуть для доступа через интернет и интранет:
- в минимальной конфигурации — на одной виртуальной или физической машине заказчика.
- в продуктовой конфигурации— на мощностях заказчика в отказоустойчивой конфигурации в соответствии с требованиями заказчика.
Рекомендуемые варианты развертывания Системы
Минимальная конфигурация
Компоненты типовой минимальная конфигурации Системы, предназначенной для демонстраций и реализации пилотных проектов:
- Comindware Platform: установленный экземпляр ПО.
- СУБД Comindware ElasticData.
- Сервер журналирования транзакций OpenSearch (Elasticsearch) — в конфигурации с одним узлом.

Продуктовая конфигурация
Компоненты типовой продуктовой конфигурации, обеспечивающей дублирование и резервирование ресурсов, а также отказоустойчивость Системы:
- Comindware Platform: установленный экземпляр ПО.
- СУБД Comindware ElasticData.
- Сервер OpenSearch (Elasticsearch) для журналирования транзакций.
- Обратный прокси-сервер NGINX для фильтрации нежелательных запросов и ретрансляции допустимых запросов во внутреннюю сеть.
- Сервер мониторинга Zabbix для мониторинга доступности служб и свободного пространства на дисках.
- Сервер SMTP/IMAP/Exchange (необязательно) для передачи уведомлений.
- Сервер LDAP (необязательно) для централизованного управления инфраструктурой сети.
- Сервер Git (необязательно) для контроля версий приложений, создаваемых с помощью Comindware Platform.

Продуктовое использование накладывает требования на следующие характеристики Системы:
- безопасность — реализуется за счет настройки сетевого экрана и обратного прокси-сервера;
- отказоустойчивость — реализуется за счет использования резервных серверов и дополнительных узлов на серверах, хранящих данные;
- масштабируемость — реализуется за счет добавления дополнительных серверов, обрабатывающих запросы.

Рекомендуемый набор серверов приложений
Для повышения эффективности разработки и тестирования приложений, а также отказоустойчивости и безопасности эксплуатации приложений рекомендуется развернуть несколько серверов приложений (необходимость использования каждого из этих серверов определяется при составлении технических требований):
- сервер разработки (development), на котором осуществляется разработка приложений;
- сервер тестирования (pre-production), на котором осуществляется тестирование приложений;
- основной сервер (production), на котором осуществляется эксплуатация приложений;
- резервный сервер (standby), который используется в случае перегрузки или выхода из строя основного сервера.
Конфигурация подсистем
Конфигурация сервера распределённой СУБД
Сервер распределённой СУБД Apache Ignite в минимально необходимой конфигурации можно установить автоматически при развертывании Comindware Platform либо самостоятельно в требуемой конфигурации.
Требования к конфигурации
Примеры конфигураций
Конфигурация сервера журналирования транзакций
Сервер журналирования транзакций OpenSearch (Elasticsearch) в минимально необходимой конфигурации можно установить автоматически при развертывании Comindware Platform либо самостоятельно в требуемой конфигурации.
Требования к конфигурации
- Должна быть включена аутентификация.
- Должна быть разрешена работа под любым аккаунтом, кроме стандартного (например,
elastic). - Номер порта должен отличаться от стандартного 9200.
- В конфигурации должно быть задано достаточное количество шардов: минимум 3000.
Примеры конфигураций
Конфигурация обратного прокси-сервера
Обратный прокси-сервер NGINX в минимально необходимой конфигурации можно установить автоматически при развертывании Comindware Platform либо самостоятельно в требуемой конфигурации.
Требования к конфигурации
- NGINX;
- Модуль ModSecurity;
- Модуль GeoIP.
Примеры конфигураций
Конфигурация сервера Zabbix
Требования к конфигурации
Конфигурация сервера Zabbix должна обеспечивать мониторинг работоспособности Системы, как указано ниже.
- Мониторинг доступности сервера распределённой СУБД Apache Ignite.
- Сервер может быть недоступен из-за проблем с сетью.
- На сервере может закончиться свободное место на диске.
- Конфигурация сервера может не позволять обработать запросы, например, ввиду невозможности создания нового индекса или соответствующего ему шарду.
- Мониторинг доступности сервера журналирования транзакций OpenSearch (Elasticsearch)
- Сервер может быть недоступен из-за проблем с сетью.
- На сервере может закончиться свободное место на диске.
- Конфигурация сервера может не позволять обработать запросы, например, ввиду невозможности создания нового индекса или соответствующего ему шарда.
- Мониторинг места на дисках с базой данных, журналами, резервными копиями и т. п.
- Мониторинг ошибок в процессе работы Системы
- Ошибки конфигурации Системы.
- Ошибки в процессе эксплуатации Системы.
- Ошибки, связанные с обновлением окружения, в котором работает Система, или компонентов самой Системы.
Примеры конфигураций