Архитектура решения
Компоненты архитектуры
Компонент | Технология | Назначение |
---|---|---|
PostgresPro Standart 13+ |
Хранение данных системы (OLTP, OLAP) Хранимые процедуры (отчеты) |
|
СУБД |
PostgreSQL |
БД вспомогательных служб Хранимые процедуры (отчеты) |
React+Redux SPA |
Аутентификация пользователей Отображение интерфейса и данных из модели Реализация UI бизнес-логики (custom контроллеры) Асинхронный запуск серверных обработок (Actions) |
|
RabbitMQ+ Python |
Интеграция распределенных сервисов и их обработок в единую инфраструктуру Асинхронное выполнение серверных обработок Распределение и масштабирование обработчиков (workers) |
|
Кеш |
Redis |
Кеш приложений |
Планировщик |
Dkron |
Распределенный планировщик заданий |
Service discovery |
Consul |
Служба обнаружения сервисов |
API шлюз |
KrakenD |
API шлюз |
Camunda |
Автоматизация бизнес-процессов на основе нотации BPMN 2.0 Интеграция с внешними веб-сервисами Автоматизация документооборота |
|
Сервисы бизнес-логики |
Python + Celery |
Воркеры исполнения сервисов бизнес-логики Динамическое управление нагрузкой (увеличение/уменьшение кол-ва воркеров) |
Jaeger + OpenSearch |
Сбор, централизованное хранение и обработка журналов со всех компонентов, входящих в состав системы Трассировка и профилирование времени выполнения методов, входящих в состав прикладных компонентов системы, а также межкомпонентных вызовов |
|
FastReport Online Designer |
Создание и исполнение отчетов из разных источников |
|
Безопасность |
ORY Hydra + ORY Oathkeeper |
Система аутентификации |
Оркестратор контейнерных приложений |
Docker Swarm |
Автоматизация создания приложений, доставки и управления |
Управление оркестратором |
Portainer |
Платформа для управления доставкой контейнерных приложений |
Proxy сервер |
Traefik | Обратный прокси-сервер |
Сервер приложений |
.NET Core | Фреймворк для разработки кросс-платформенных приложений |
Proxy сервер |
Nginx | Обратный прокси-сервер для админ панелей системных компонентов (RMQ, Consul и т.д.) |
Планировщих задач Postgres |
pgAgent | Планировщих задач Postgres |
Управление планировщиком задач Postgres |
pgAdmin4 | Управление планировщиком задач Postgres |
Коллектор журналов логирования |
filebeat | Сбор логов с компонентов приложения |
Средства мониторинга приложения |
Prometheus/Grafana | Мониторинг состояния приложения |
СУБД Postgres Pro
- Postgres Pro - российская СУБД на основе PostgreSQL:
- переработана для соответствия требованиям корпоративных заказчиков
- входит в реестр российского ПО
- сертификат ФСТЭК СВТ 5, НДВ 4
- версия Enterprise содержит ряд существенных доработок, для работы с БД большого объема, высокой производительности и с повышенными требованиями к надёжности (postgrespro.ru/products/postgrespro/enterprise)
- Совместимая с Omni-US схема данных. Jsonb-расширения для доп. полей
- Расширенный инструментарий логирования на уровне БД
- Откат изменений данных
- Поддержка меток времени с временными зонами
- Возможность работы логики БД в sync/async-режиме
- Возможность реализации логики на уровне БД
Модель приложения
- Слой метаданных, описывающий вид и поведение UI:
- Описание атрибутов и метаданных бизнес-объектов приложения
- Определение правил проверки значений реквизитов
- Описание состава, внешнего вида и расположения визуальных элементов представлений (View)
- Настройка варианта вывода представления (включая одновременное отображение списка и формы)
- Настройка условий отображения элементов представлений в зависимости от их значений
- Настройка правил безопасности при доступе к данным
- Привязка обработчиков событий (action) к разделу приложения
- Привязка разделов к пунктам меню
- Визуальная настройка модели (сущности, формы, списки)
- Доступ к модели и данным через REST-интерфейс
Клиентское приложение
- Single Page Application на основе React + Redux
- Аутентификация и ведение клиентской сессии пользователя
- Динамическое отображение представлений модели и данных в них
- Динамическая подгрузка представлений с сервера и их визуализация
- Реализация базовых CRUID-операций с данными в представлениях
- Валидация введенных значений в форме
- Обработка ошибок и предупреждений при сохранении данных
- Управление состоянием формы
- Условное форматирование
- Отображение операций с в представлениях и обеспечение их вызова
- Интеграционная шина для прикладных контроллеров, заданных для представления
- Взаимодействие с сервисной шиной
- Асинхронный запуск операций на сервисной шине
- Publisher событий интерфейса для обработчиков на шине
- Subscriber асинхронных нотификаций от сервисной шины
Сервисная шина
- Среда для универсального обмена сообщениями между сервисами
- Регистрация сервисов на шине. Маршрутизация до сервиса
- Издатель-подписчик (Pub/Sub)
- Удаленный вызов процедур (sync/async) Получение списка сервисов
- Получение списка операций сервиса
- Сервисы на шине представляют собой компоненты бизнес-логики
- Реализуют общий интерфейс взаимодействия через шину
- Не имеют ограничений по технологии реализации
- Реализуют операции, список которых регистрируется на шине
- Операции сервисов видны в модели приложения и доступны для подключения в интерфейсе
- Операции – компоненты сервиса, реализующие функциональность:
- Процедуры бизнес-логики (python, sp pgsql)
- Пакеты интеграции и отчеты (результаты исполнения в WebDAV)
- Кастомные источники данных для интерфейса
- BPMN процессы (camunda)
Шина данных. Компоненты реализации
- RabbitMQ
- Брокер сообщений
- Маршрутизация сообщений
- Pub/Sub
- Celery/Flower
- удаленный вызов процедур поверх RabbitMQ (async/sync)
- Масштабирование загрузки
- Управление нодами воркеров
- Мониторинг загрузки сети
- Сервисы маршрутизации и управления метаинформацией (rest-сервис на python falcon)
- Регистрация/список сервисов и их операций
- Получение точки запуска операции
Сервер процессов на основе Camunda
- BPMN рабочие процессы
- DMN таблицы принятия решения
- Инструментарий создания автоматизированных бизнес процессов
- Интеграция с блоком документооборота Omnis
- АРМ для выполнения задач сотрудниками
- Мониторинг
Конструктор отчётов
- Визуальное проектирование отчётов на основе бизнес-модели
- Расширяемый список витрин бизнес-модели
- Получение быстрых выгрузок данных на основе визуального мастера запросов
- Использование сложных вычисляемых колонок, формул, фильтров, группировок
- Интерактивные отчёты с использованием диаграмм, графиков, карт, рисунков, фигур
- Экспорт в различные форматы файлов
Логирование и трассировка
- Сквозное логирование работы всех компонентов системы в исторической ретроспетиве
- Параметры и заголовки к REST-сервисам
- Запросы к БД (ORM->СУБД)
- Операции на шине Ошибки.
- Ветвление внутри операций (mdc)
- Сборка логов всех компонентов в централизованное хранилище
- Полнотекстовый поиск по логам
- Построение дерева и профиля вызовов