Системный дизайн и НФТ
Системный дизайн и нефункциональные требования
Страница собирает сведения, которые обычно заносят в карточку приложения во внутренней вики: из чего состоит решение, как оно размещается, какие данные обрабатывает и какие требования предъявляет к эксплуатации.
Часть значений заполняет заказчик
Показатели, зависящие от вашей инсталляции — размер, целевые RTO и RPO, классификация данных, число пользователей — отмечены как «определяется заказчиком». Для каждого указано, где взять исходные данные.
Карточка системного дизайна
| Категория | Решение |
|---|---|
| Модель размещения | On-premise или частное облако на инфраструктуре заказчика. Поставка — образ контейнера из реестра поставщика с подписью Cosign |
| Непродуктивные среды | Рекомендуется отдельный стенд для проверки обновлений; лицензирование стенда согласуется с поставщиком |
| Операционная система | Любая ОС с поддержкой контейнеров. Проверены Ubuntu, Debian, RHEL-совместимые, Astra Linux, ALT Linux, РЕД ОС. Среда выполнения — Docker, Podman, CRI-O, containerd |
| Специальные платформы | Не требуются. Kubernetes поддерживается, но не обязателен: одного экземпляра приложения достаточно для большинства инсталляций |
| Программное обеспечение баз данных | PostgreSQL 12 и выше, кодировка UTF8, расширения vector (pgvector), pg_trgm, pgcrypto, uuid-ossp, hstore. Допустима управляемая база провайдера при наличии расширений |
| Объектное хранилище | Любое S3-совместимое хранилище: MinIO, SeaweedFS, управляемый S3 провайдера |
| Шифрование | Транспорт — TLS на балансировщике и до внешних сервисов. Данные в состоянии покоя — средствами базы, хранилища и дисковой подсистемы заказчика. Пароли встроенных учётных записей хранятся в виде хеша, токены сессий подписываются алгоритмом HS512 ключом JWTSECRET длиной не менее 64 символов |
| Размер инсталляции | Минимум 12 vCPU, 24 ГБ ОЗУ, 300 ГБ диска на всю систему; рекомендуемая конфигурация — 16 vCPU, 32 ГБ, 500 ГБ. Разбивка по контейнерам — Системные требования |
| Доступность приложения | Веб-интерфейс по HTTPS через корпоративный балансировщик. Отдельный клиент не устанавливается. Мобильного приложения нет, интерфейс адаптирован для планшетов |
| Аутентификация | OAuth2 / OIDC (рекомендуется режим PKCE), Microsoft ADFS, Keycloak. Встроенная аутентификация по логину и паролю отключается в продуктиве. LDAP — устаревший способ |
| Авторизация | Ролевая модель: право участника в команде, группы привилегий, правила доступа к папкам и страницам вики, персональные доступы к моделям. См. Ролевую модель |
| Интеграции | Исходящие: PostgreSQL, S3, SMTP, IdP, при использовании — Redis, PlantUML, Gotenberg, ListMonk, LLM-провайдер. Входящие: REST API с ключом команды. Экспорт событий в SIEM по syslog, метрики для Prometheus |
| Журналирование приложения | Журнал работы приложения в стандартный вывод контейнера, сбор — средствами платформы контейнеризации |
| Мониторинг приложения | Метрики в формате Prometheus по эндпоинту /actuator, health-проверки; визуализация и алерты — Grafana |
| Управление производительностью | Отдельный APM-агент не поставляется; метрики приложения и базы данных используются для оценки производительности |
| Средство разработки | Серверная часть — Kotlin и Spring Boot на Java 21, клиентская часть — Vue 3 и TypeScript |
| Хранение данных | Все данные платформы — в базе данных заказчика, файлы — в его объектном хранилище. Встроенных политик автоматического удаления данных нет: срок хранения определяется регламентом заказчика и обеспечивается резервным копированием и ручным удалением |
Обрабатываемые данные
| Категория данных | Состав | Примечание |
|---|---|---|
| Учётные данные пользователей | Адрес электронной почты, фамилия, имя, отчество, должность, язык интерфейса, аватар, дата создания и дата последнего входа | Заполняются из корпоративного каталога или пользователем. Пароли хранятся только при включённой встроенной аутентификации |
| Рабочие материалы | Модели процессов, карточки процессов, описания, комментарии, вложенные файлы | Содержимое определяется организацией и может содержать сведения ограниченного доступа |
| Организационные данные | Подразделения, должности, сотрудники, роли | Заполняются организацией, могут содержать персональные данные сотрудников |
| Технические журналы | Время события, идентификатор пользователя и сессии, метод и путь запроса, код ответа, адрес клиента | Направляются в выбранный канал аудита |
Классификацию данных определяет заказчик
Система не задаёт уровень конфиденциальности: он зависит от того, какие процессы вы в ней описываете. Для карточки приложения укажите категорию по вашей внутренней методике и перечислите категории субъектов персональных данных — как правило, это сотрудники организации, а при описании внешних взаимодействий также представители контрагентов.
Нефункциональные требования
| Требование | Значение |
|---|---|
| Доступность | Определяется заказчиком. Приложение не имеет встроенного кластера: типовая инсталляция — один экземпляр, отказоустойчивость обеспечивается средствами виртуализации и резервным копированием. Для нескольких экземпляров требуется Redis |
| Плановая недоступность | Обновление версии — остановка и запуск контейнера, обычно до 15 минут. Миграции базы данных выполняются при старте |
| RTO (целевое время восстановления) | Определяется заказчиком. Восстановление сводится к развёртыванию контейнера и восстановлению базы и объектного хранилища из резервных копий |
| RPO (допустимая потеря данных) | Определяется заказчиком и равно интервалу резервного копирования. Рекомендуемое расписание — ежедневная полная копия базы данных |
| Число пользователей | Определяется лицензией: именные места или одновременные сессии. См. Как работают лицензии |
| Число операций | Определяется заказчиком. Профиль нагрузки — интерактивная работа в браузере: открытие и сохранение моделей, поиск, чтение реестра |
| Производительность | Ключевые операции — открытие модели, сохранение изменений, поиск по материалам, построение представлений реестра. Целевые значения фиксируются на приёмочных испытаниях на инфраструктуре заказчика |
| Масштабирование | Вертикальное — увеличением ресурсов приложения и базы. Горизонтальное — несколькими экземплярами приложения за балансировщиком с общими базой, объектным хранилищем и Redis |
| Совместимость | Современные браузеры на базе Chromium, Firefox, Safari |
| Локализация | Интерфейс на русском и английском языках |
Обслуживание и поддержка
| Требование | Значение |
|---|---|
| Плановое обслуживание | Обновление версии приложения по мере выхода релизов; обновление и обслуживание базы данных, объектного хранилища и ОС — по регламенту заказчика |
| Обновление | Замена образа контейнера на новую версию с последующим перезапуском. Порядок и предупреждения о критических обновлениях — в Changelog и разделе Обслуживание |
| Обслуживание по состоянию | Реагирование на события: заполнение дискового пространства базы и объектного хранилища, рост времени ответа, ошибки health-проверок, неуспешные резервные копии |
| Резервное копирование | База данных PostgreSQL, содержимое объектного хранилища, конфигурационные файлы и переменные окружения. Рекомендуется ежедневная копия базы и еженедельная копия хранилища с контролем успешности |
| Восстановление | Порядок восстановления и проверки — Обслуживание |
| Мониторинг | Метрики Prometheus, health-проверки, алерты в Grafana. Рекомендуемый минимум алертов — недоступность приложения, ошибки резервного копирования, заполнение дисков |
| Поддержка поставщика | Обращения на help@stormbpmn.com; режим и сроки реакции определяются договором. См. Техническая поддержка |
| Ответственность заказчика | Инфраструктура, ОС и её обновления, база данных, объектное хранилище, сертификаты, резервное копирование, интеграция с IdP, права пользователей внутри команд |
Сервисные учётные записи
Система не требует служебных учётных записей в домене заказчика. Ниже — технические доступы, которые нужно завести при развёртывании.
| Учётная запись | Целевой ресурс | Права |
|---|---|---|
| Пользователь базы данных приложения | PostgreSQL | Полные права на схему приложения. При первом запуске нужна возможность создавать расширения либо расширения создаются заранее администратором базы |
| Ключ доступа к объектному хранилищу | S3-совместимое хранилище | Чтение, запись и удаление объектов в выделенном бакете |
| Учётная запись отправителя писем | SMTP-сервер | Отправка почты от адреса системы |
| Клиент приложения в IdP | Корпоративный IdP | Конфиденциальный клиент OAuth2 с областями openid profile email |
| Учётная запись реестра контейнеров | Реестр поставщика | Загрузка образов для последующего переноса во внутренний реестр |
| Ключ API команды | StormBPMN | Доступ внешних систем к REST API в объёме прав команды |
Ограничения
- Лицензионные. Число пользователей ограничено лицензией: именными местами или одновременными сессиями. При исчерпании мест новые учётные записи переходят в состояние «Ожидает активации».
- Технологические. Обязательны PostgreSQL с перечисленными расширениями и S3-совместимое хранилище. Официальный образ PostgreSQL не содержит pgvector — используется сборка с этим расширением.
- Функциональные. Система описывает и согласует процессы, но не исполняет их; границы решения перечислены в каталоге функциональных требований.
- Эксплуатационные. Встроенного кластера высокой доступности нет: отказоустойчивость обеспечивается средствами инфраструктуры заказчика.
- Сетевые. Система не инициирует обращений в интернет. Исключения включаются заказчиком осознанно: внешний LLM-провайдер при использовании AI-модуля и загрузка образов из реестра поставщика при обновлении.
- Географические. Ограничений на регион размещения нет: все компоненты работают в контуре заказчика.
Связанные разделы
- Схема архитектуры — состав компонентов и взаимодействия
- Установка — системные требования, порты, конфигурации развёртывания
- Информационная безопасность — параметры безопасности и чек-лист
- Аудит-логирование — состав событий и каналы
- Обслуживание — обновления, резервные копии, аварийное восстановление
- План внедрения — фазы проекта и распределение зон ответственности