× О компании Решения Проекты Новости Контакты
Импортозамещение Предприятиям ТЭК Автоматизация ЖКХ Дополнительные решения и сервисы

Архитектура решения

Компоненты архитектуры

Компонент Технология Назначение

СУБД

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)​
  • Сборка логов всех компонентов в централизованное хранилище
  • Полнотекстовый поиск по логам
  • Построение дерева и профиля вызовов​
​​