Системные требования и сайзинг
Назначение
Страница предназначена для архитекторов, DevOps-инженеров и заказчиков, которые планируют инфраструктуру UniBPM.
Приведённые конфигурации являются стартовыми ориентирами, а не гарантированными пределами производительности. Итоговый sizing определяется по пиковой процессной, пользовательской, API- и интеграционной нагрузке, объёму данных и срокам хранения.
Архитектура и границы расчёта
Пользовательские запросы проходят через публичный слой доступа к Frontend и Application API. Внешние системы могут взаимодействовать с публичным API или Integration Runtime, а обмен событиями между компонентами выполняется через Kafka.
Прикладной слой (application layer) состоит из отдельных компонентов: Frontend, Application API, Process Engine и, когда он используется, Integration Runtime. Application API и Process Engine имеют разные профили нагрузки и отдельные логические хранилища PostgreSQL для Business Data и Process Data.
PostgreSQL, Kafka и Identity Provider могут размещаться внутри контура UniBPM либо предоставляться внешней платформой. Если они не включены в выбранный профиль развёртывания, их ресурсы оцениваются отдельно. Ресурсы внешнего AI provider и локальных AI-моделей также не входят в базовые профили.
Минимальные системные требования
Минимальная конфигурация предназначена для ознакомления, Demo и функционального тестирования без требований высокой доступности.
| Параметр | Минимальное значение | Комментарий |
|---|---|---|
| CPU | 4 vCPU | Стартовый ресурс application layer для небольшого тестового контура |
| RAM | 8 GiB | При совместном размещении зависимостей требуется учитывать их ресурсы отдельно |
| Disk | от 40 GiB SSD | Без длительного хранения вложений, истории и backup |
| PostgreSQL | PostgreSQL 16 | Данные приложения и процессов; может предоставляться внешним сервисом |
| Kafka | Поддерживаемая версией UniBPM | Сервис обмена событиями; может предоставляться внешним сервисом |
| Identity Provider | Совместимый сервис идентификации | Может входить в контур или предоставляться внешней платформой |
| Java | Java 17 | Для Application API и Process Engine |
Рекомендуемые стартовые профили
| Профиль | Зарегистрированные пользователи | Одновременная активность | Application CPU | Application RAM | Runtime disk | Назначение |
|---|---|---|---|---|---|---|
| Demo | до 20–30 | обычно до 10–15 | 4 vCPU | 8 GiB | от 40 GiB SSD | Демонстрация и функциональная проверка |
| Pilot | до 50–100 | ориентировочно до 20–40 | 4–8 vCPU | 12–16 GiB | от 80 GiB SSD | Пилот с ограниченным числом процессов и интеграций |
| Production Small | до 200–300 | ориентировочно до 50–100 | 8 vCPU | 16–32 GiB | от 100 GiB SSD | Стартовый production-профиль при умеренной нагрузке |
| Production Medium | до 1000 | ориентировочно до 150–400 | суммарно 16–32 vCPU | суммарно 32–64 GiB | от 200 GiB SSD с расширением | Несколько процессов и интеграций с выраженными пиками |
| Enterprise | более 1000 либо высокая процессная, API-, интеграционная или AI-нагрузка | по нагрузочному профилю | по нагрузочному тесту | по нагрузочному тесту | по capacity plan | Индивидуальный capacity plan и representative load test |
CPU и RAM относятся только к application layer. Выбор строки по числу пользователей недостаточен: профиль необходимо проверить по process steps/second, API_peak, размеру payload, вложениям и retention.
Для Enterprise инфраструктура, HA/DR, RPO/RTO и ресурсы платформенных сервисов определяются архитектурой заказчика и подтверждаются отдельным capacity plan.
Как оценить нагрузочный профиль
Сначала заполните sizing worksheet для реального пикового периода. Среднее значение за сутки не заменяет профиль пикового окна.
| Параметр | Что измерять |
|---|---|
U | Зарегистрированные пользователи |
C | Одновременно активные пользователи в пиковый период |
P_day | Process instances в пиковые сутки |
A | Среднее число исполняемых шагов на process instance |
T_day | Пользовательские задачи в пиковые сутки |
API_peak | API requests в секунду в пиковое окно |
S_var | Средний и характерный максимальный объём process variables |
F_day | Количество вложений в сутки |
S_file | Средний и характерный максимальный размер вложения |
R_process | Срок хранения истории процессов |
R_file | Срок хранения вложений |
AI_peak | Одновременные AI-запросы |
K | Коэффициент пиковости относительно нагрузки внутри пикового окна |
Процессная нагрузка
process steps/day = P_day × A
process steps/second = (P_day × A × K) / peak_window_seconds
peak_window_seconds — длительность реального пикового окна. Нагрузку нельзя равномерно распределять по 24 часам, если основные операции выполняются в течение 8–12 часов. Коэффициент K выбирается по ожидаемым всплескам и затем уточняется по метрикам.
Пользовательские задачи
human tasks/second = (T_day × K) / peak_window_seconds
Параметр C дополнительно влияет на число параллельных HTTP/WebSocket-соединений, конкурентные запросы к API и connection pools.
API-нагрузка
Если известен фактический или прогнозируемый API_peak, используйте его напрямую. Если известен только суточный объём:
API requests/second = (API_requests_day × K) / peak_window_seconds
Для интеграций также учитываются payload, timeout, retries, concurrency и ограничения внешних систем.
Вложения
attachment data in retention period =
F_day × S_file × business_days_per_year × retention_years
required attachment storage =
attachment data in retention period × reserve_factor
Резерв учитывает рост, индексы, служебные данные и операционный запас. Backup рассчитывается отдельно в соответствии с принятой политикой хранения.
В текущей конфигурации продукта вложения могут храниться в PostgreSQL, поэтому их объём существенно влияет на размер базы, IOPS, время backup и восстановления. reserve_factor уточняется по фактическому росту данных.
Данные процессов
Не используйте универсальный коэффициент «байт на процесс»: размер зависит от BPMN-моделей, числа задач, переменных и истории.
Безопасный способ оценки:
- измерить прирост базы на тестовом стенде за выбранный период;
- сопоставить прирост с числом созданных process instances и задач;
- скорректировать результат на
R_process; - применить резерв;
- подтвердить расчёт нагрузочным тестом.
estimated process storage =
measured average storage per process instance
× process instances in retention period
× reserve_factor
measured average storage per process instance определяется на репрезентативных BPMN-моделях с характерными variables и payload.
AI-нагрузка
AI-функции оцениваются по AI_peak, размеру контекста, выбранной модели, latency и rate limits, а не только по числу пользователей.
При внешнем AI provider основные вычисления выполняются вне application layer, но UniBPM использует ресурсы для подготовки контекста, сетевых соединений и обработки ответов. Для локальной модели GPU, CPU, RAM и storage рассчитываются отдельно и не входят в базовые профили UniBPM.
Пример расчёта
Исходный профиль:
| Параметр | Значение |
|---|---|
| Зарегистрированные пользователи | 300 |
| Одновременно активные пользователи | 80 |
P_day | 10 000 process instances |
A | 12 шагов |
T_day | 2 000 задач |
| Пиковое окно | 8 часов = 28 800 секунд |
K | 3 |
F_day | 100 вложений |
S_file | 2 MiB |
R_file | 1 год |
Расчёт:
process steps/day = 10 000 × 12 = 120 000
process steps/second = 120 000 × 3 / 28 800 = 12.5
human tasks/second = 2 000 × 3 / 28 800 ≈ 0.21
attachment data = 100 × 2 MiB × 250 рабочих дней
= 50 000 MiB ≈ 48.8 GiB в год
Объём вложений указан без backup, индексов и резерва. Для системы с операциями во все календарные дни вместо 250 используется фактическое число рабочих дней в году.
Результат не является обещанием производительности. По нему выбирается стартовый профиль, который затем проверяется нагрузочным тестом с реальными BPMN-моделями, payload, интеграциями и профилем вложений.
Границы применимости
- значения являются стартовыми ориентирами, а не гарантированной ёмкостью;
- ресурсы внешних PostgreSQL, Kafka, Identity Provider, AI provider и monitoring оцениваются отдельно;
- вложения, retention, payload и пиковая нагрузка могут значительно изменить sizing;
- production sizing подтверждается representative load test.
Масштабирование
| Компонент | Горизонтальное масштабирование | Вертикальное масштабирование | Ключевое условие |
|---|---|---|---|
| Frontend | Да, за балансировщиком | Обычно не является основным способом | Реплики используют одинаковую версию статических assets и конфигурации |
| Application API | Только после проверки конфигурации | Да | Необходимо учитывать локальный WebSocket broker, scheduled jobs, session routing и суммарные connection pools |
| Process Engine | Проверяется для конкретной версии и профиля | Да | Общая БД, корректная координация job/external-task processing и representative load test |
| Integration Runtime | Возможно для stateless и идемпотентных интеграций | Да | Идемпотентность, разделение работы и лимиты внешних систем |
| PostgreSQL | Зависит от выбранной платформы и HA-архитектуры | Да | IOPS, connections, backup/restore и retention |
| Kafka | Определяется архитектурой broker cluster или managed service | Да, в пределах выбранной платформы | Throughput, размер сообщений, retention и политика надёжности |
| Identity Provider | Определяется выбранным сервисом | Да | Session/cache topology и поддерживаемый режим кластера |
| Load Balancer / Ingress | Да или средствами внешней платформы | Да | WebSocket, health checks, upload limits и proxy timeout |
| AI provider | По возможностям внешнего provider; локальная модель считается отдельно | Зависит от варианта размещения | AI_peak, latency, rate limits и размер контекста |
Наличие нескольких реплик само по себе не подтверждает HA. Для Enterprise требования к отказоустойчивости и восстановлению определяются архитектурой заказчика.
Подтверждение конфигурации
Нагрузочный тест должен воспроизводить пиковое окно, а не равномерный среднесуточный поток. В сценарий включаются реальные BPMN-модели, пользовательские задачи, характерные process variables, API, интеграции и вложения.
Во время теста контролируются throughput и latency, CPU/RAM, JVM, connection pools, PostgreSQL IOPS и рост данных, Kafka lag, ошибки и ограничения внешних сервисов. Стартовый профиль принимается только после проверки целевой нагрузки с требуемым запасом и повторного теста после изменения архитектуры или ключевых моделей процессов.
