Перейти к основному содержанию

Системный дизайн и НФТ

Около 4 мин

Системный дизайн и нефункциональные требования

Страница собирает сведения, которые обычно заносят в карточку приложения во внутренней вики: из чего состоит решение, как оно размещается, какие данные обрабатывает и какие требования предъявляет к эксплуатации.

Часть значений заполняет заказчик

Показатели, зависящие от вашей инсталляции — размер, целевые 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-модуля и загрузка образов из реестра поставщика при обновлении.
  • Географические. Ограничений на регион размещения нет: все компоненты работают в контуре заказчика.

Связанные разделы