Системные требования для On-Premise инсталляции UX Rocket¶
О продукте¶
Программное обеспечение «UX Rocket» представляет собой веб-приложение, созданное на основе .NET с использованием фреймворка Blazor.
Приложение использует базы данных PostgreSQL, ClickHouse, брокер сообщений Kafka и файлы данных на дисковом хранилище, взаимодействует с пользователями, посещающими сайт и мобильное приложение, взаимодействует с пользователями личного кабинета.
Основные компоненты UX Rocket¶
Группа | Docker-сервисы | Примечание |
---|---|---|
Core | ux-api-cpaapi – API для работы личного кабинета и админки (CPA.API) | Все компоненты группы Core являются обязательными |
ux-front-client – кабинет пользователя (CPA.Client.Web) | ||
ux-front-admin – кабинет администратора (CPA.Admin.Web) | ||
ux-ftp – Сервис ftp для загрузки данных | ||
Background Task Service | ux-api-hostedservices – Сервис фоновых заданий (CPA.HostedServices) | Обязательный компонент |
Site | ux-api-getsitescripts – Cервис инициализации скрипта на сайте и для А/В тестирования на сайте (GetSiteScripts.API) | |
ux-api-saverawdataapi – Сервис сбора данных для сайта (SaveRawData.API) | ||
uxnginx – JS-скрипт сбора данных | ||
ML | ux-ml-api – Сервис для анализа данных пользователей с использованием ML | |
ux-ai-markup – Сервис для анализа данных пользователей с использованием ML | ||
MobileAPI | ux-api-mobileapi – Сервис сбора данных и тестирования мобильного приложения (Mobile.API) | |
Integration | ux-api-partnerdataimport – Сервис импорта данных из сторонних систем(CPA.PartnerDataImport) | Дополнительный компонент |
Database | Clickhouse (база данных) | Все компоненты группы Database являются обязательными |
PostgreSQL (база данных) | ||
Message broker | Apache Kafka | Все компоненты группы Message broker являются обязательными |
Требования к системе¶
Для установки программного продукта UX Rocket необходимы отдельные виртуальные машины (ВМ) для следующих компонент:
- External Backend Services (API) - 1 ВМ
- Internal Backend Services (API) - 1 ВМ
- Background Task Service (API) - 1 ВМ
- Frontend Services (портал) - 1 ВМ
- ML (API) - 1 ВМ
- Apache Kafka (брокер сообщений) -1 ВМ
- Clickhouse (база данных)- 1 ВМ
- PostgreSQL (база данных)- 1 ВМ
Не менее 8 ВМ
Схема взаимодействия компонент для настройки сетевого доступа показана на рисунке ниже:
№ | VM | Сервисы | Процессор, ядро (vCPU) | ОЗУ, ГБ (vRAM) | Объем диска, ГБ | Тип диска | Примечание |
---|---|---|---|---|---|---|---|
1 | vm-app-ext | External Backend Services (API) 1. ux-api-mobileapi –Сервис сбора данных и тестирования мобильного приложения (Mobile.API) 2. ux-api-getsitescripts – Cервис инициализации скрипта на сайте и для А/В тестирования на сайте (GetSiteScripts.API) 3. ux-api-saverawdataapi–Сервис сбора данных для сайта (SaveRawData.API) 4. uxnginx содержит JS-скрипт сбора данных 5. ux-ftp – Сервис ftp для загрузки данных 6. ux-api-partnerdataimport – Сервис импорта данных из сторонних систем (CPA.PartnerDataImport) |
8 | 8 | 60 | SSD или SAS 15k | |
2 | vm-app-int | Internal Backend Services (API) ux-api-cpaapi – API для работы личного кабинета и админки (CPA.API) |
8 | 24 | 60 | SSD или SAS 15k | |
3 | vm-jobs | Background Task Service (API) ux-api-hostedservices – Сервис фоновых заданий |
12+ | 16 | 60 | SSD или SAS 15k | |
4 | vm-ml | ML – Сервисы для анализа данных пользователей с использованием ML: 1. ux-ml-api 2. ux-ml-markup |
12+ | 16 | 60 | SSD или SAS 15k | |
5 | vm-front | Frontend Services (Web-portals) 1. ux-front-client – кабинет пользователя (CPA.Client.Web) 2. ux-front-admin – кабинет администратора (CPA.Admin.Web) |
2 | 8 | 60 | SSD или SAS 15k | |
6 | vm-kafka | Сервер Apache Kafka (Message brokers) | 4 | 8 | 60 | SSD или SAS 15k | |
7 | vm-clickhouse | Сервер Clickhouse (DB) | 12 | 64 | 300 | SSD | ~ За 12 месяцев при 40.000.000 запросов в месяц |
8 | vm-postgres | Сервер PostgreSQL (DB) | 4 | 10 | 120 | SSD | ~ За 12 месяцев при 40.000.000 запросов в месяц |
Обратный прокси-сервер Nginx | |||||||
Шлюз | |||||||
vm-opensearch | Opensearch | 4 | 16 | 150 | SAS 15k | необязательный компонент | |
vm-zabbix | Zabbix | 2 | 8 | 60 | SAS 15k | необязательный компонент | |
vm-smtp | SMTP |
- Для всех ВМ рекомендуется использовать SSD диски, минимум SSD диски должны быть у Clickhouse и PostgreSQL.
- Доступ для Backend (API-2) должны быть публичным (доступен из сети Интернет).
- Доступ для Frontend может быть публичный или с фильтрацией по IP-адресу/ограниченным из локальной сети и пр.
- В зависимости от решения которое использует заказчик, функционал обратного прокси-сервера может быть совмещён со функционалом интернет-шлюза.
- Clickhouse и PostgreSQL лучше не использовать на одном сервере, работа этих двух баз данных на одной виртуальной машине может вызвать конфликты в ресурсах и привести к снижению производительности.
Сводная таблица по развернутым сервисам (сетевые порты)¶
№ | Виртуальная машина | Название docker-контейнеров\сервиса и используемые порты (tcp) | Примечание |
---|---|---|---|
1 | PostgreSQL | postgresql 5432 | |
2 | Clickhouse | clickhouse-server 8123, 9000, 9009 | |
3 | Apache Kafka | kafka0 2181, 9092, 9093 kafka-ui 8080 |
|
4 | Frontend Services | ux-front-client (Nginx 7000 -> UDS) ux-front-admin (Nginx 7500 -> UDS) |
Сервисы должны быть доступны из сети интернет, либо ограниченным корпоративной сетью заказчика. |
5 | Сервер Backend Services (API) - 1 | ux-api-cpaapi (Nginx 8000 -> UDS) |
|
6 | Сервер Backend Services (API) - 2 | ux-ftp 21 ux-api-partnerdataimport (Nginx 8500 -> UDS) Cкрипт сбора данных размещается на Nginx 80 ux-api-mobileapi (Nginx 6002 -> UDS) ux-api-getsitescripts (Nginx 6001 -> UDS) ux-api-saverawdataapi (Nginx 6000 -> UDS) |
Сервисы должны быть доступны из сети интернет. |
7 | Background Task Service (API) | ux-api-hostedservices (Nginx 9500 -> UDS) | |
8 | ML (API) | ux-ml-api 80 ux-ai-markup 8081 |
Новые версии UX Rocket используют в базовом варианте сокет домена Unix (Unix domain socket, UDS), вместо TCP, так как этот вариант более эффективен.
На APP-серверах(Docker-хост)нужно настроить промежуточный обратный прокси-сервера (Nginx) для переадресации запросов на веб-сервер Kestrel внутрь контейнеров по UDS.
Используемые версии ПО¶
Операционная система - Ubuntu 20.04 LTS и выше, Debian 11 и выше, РедОС 8.3 и выше, Astra Linux актуальной версии, мы можем протестировать любой Linux-дистибутив по требованию.
ClickHouse24.4 - база данных для хранения потока данных с сайта/МП и формирования аналитической отчётности;
PostgreSQL 14.8 - база данных для справочников и настроечных таблиц;
.NET (версия 8.0) - платформа для разработки;
docker, docker-compose - система контейнеризации, последних версий из оф. репозиториев;
Apache Kafka 3.0.2 - брокер сообщений;
Nginx - обратный прокси-сервера/веб-сервер последней версии из оф. репозитория.
Для централизованного хранения и просмотра логов может использоваться OpenSearch/fluent-bit последних версий из оф. репозиториев.
Для мониторинга рекомендуется использовать Zabbix из оф. репозитория.
Общие требования к публикации¶
1) Для публикации платформы нужно выделить 3 доменных имени:
Для API, например api.uxrocket-example.ru
Для ЛК, например lk.uxrocket-example.ru
Для Админки, например admin.uxrocket-example.ru
2) Для публикации UX Rocket рекомендуется использовать Nginx.
3) При публикации сервисов в сети Интернет рекомендуется использовать HTTPS.
4) Личные кабинет и админку необязательно делать публичными для всех, доступ к ним может быть ограничен корпоративной сетью заказчика. Для сбора данных достаточно, чтобы был опубликован лишь API.
5) Для отправки паролей и уведомлений сервису нужен доступ к SMTP-серверу.
В зависимости от решения, которое используется для публикации сервисов в корпоративной сети, функционал обратного прокси-сервера может быть совмещён с функционалом интернет-шлюза.