Системные требования для 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-скрипт сбора данных | ||
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 ВМ
- Apache Kafka (брокер сообщений) -1 ВМ
- Clickhouse (база данных)- 1 ВМ
- PostgreSQL (база данных)- 1 ВМ
Не менее 7 ВМ
Схема взаимодействия компонент для настройки сетевого доступа показана на рисунке ниже:
№ | 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-скрипт сбора данных |
8 | 8 | 60 | SSD или SAS 15k | |
2 | vm-app-int | Internal Backend Services (API) 1. 2. ux-api-cpaapi – API для работы личного кабинета и админки (CPA.API) 3. ux-ftp – Сервис ftp для загрузки данных 4. ux-api-partnerdataimport – Сервис импорта данных из сторонних систем (CPA.PartnerDataImport) 5. Cкрипт сбора данных размещается на Nginx |
4 | 12 | 60 | SSD или SAS 15k | |
3 | vm-jobs | Background Task Service (API) 1. ux-api-hostedservices – Сервис фоновых заданий |
2 | 6 | 60 | SSD или SAS 15k | |
4 | 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 | |
5 | vm-kafka | Сервер Apache Kafka (Message brokers) | 4 | 8 | 60 | SSD или SAS 15k | |
6 | vm-clickhouse | Сервер Clickhouse (DB) | 8 | 64 | 200 | SSD | ~ За 12 месяцев при 40.000.000 запросов в месяц |
7 | vm-postgres | Сервер PostgreSQL (DB) | 4 | 10 | 120 | SSD | ~ За 12 месяцев при 40.000.000 запросов в месяц |
8 | Обратный прокси-сервер Nginx | ||||||
9 | Шлюз | ||||||
10 | vm-opensearch | Opensearch | 4 | 16 | 150 | SAS 15k | необязательный компонент |
11 | vm-zabbix | Zabbix | 2 | 8 | 60 | SAS 15k | необязательный компонент |
11 | 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 7000 ux-front-admin – 7500 |
Сервисы должны быть доступны из сети интернет, либо ограниченным корпоративной сетью заказчика. |
5 | Сервер Backend Services (API) - 1 | ux-api-cpaapi (Nginx 8000 -> UDS) ux-ftp 21 ux-api-partnerdataimport (Nginx 8500 -> UDS) Cкрипт сбора данных размещается на Nginx 80 |
|
6 | Сервер Backend Services (API) - 2 | 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) | |
Новые версии UX Rocket используют в базовом варианте сокет домена Unix (Unix domain socket, UDS), вместо TCP, так как этот вариант более эффективен. |
На APP-серверах(Docker-хост)нужно настроить промежуточный обратный прокси-сервера (Nginx) для переадресации запросов на веб-сервер Kestrel внутрь контейнеров по UDS.
Используемые версии ПО¶
Операционная система- Ubuntu 20.04 LTS и выше, Debian 11 и выше, 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-серверу.
В зависимости от решения, которое используется для публикации сервисов в корпоративной сети, функционал обратного прокси-сервера может быть совмещён со функционалом интернет-шлюза.