Программное обеспечение «ПРОВИАНТ»

Описание технической архитектуры системы


Редакция 1.0

Москва

2025 год


1.Преамбула

Настоящий документ содержит описание технической архитектуры программного обеспечения «ПРОВИАНТ» (далее - «Продукт») компании ООО «В Теме» (далее - «Правообладатель»). Документ предназначен для внесения в Единый реестр российского программного обеспечения Министерства цифрового развития, связи и массовых коммуникаций Российской Федерации.

2.Общая архитектура Продукта

Продукт реализован в соответствии с архитектурой клиент-сервер. Серверная часть представляет собой совокупность модулей, работающих на серверах под управлением ОС «Ubuntu». Клиентская часть представляет собой приложение, работающее на мобильных устройствах с установленной на них ОС «Android», начиная с версии 5; либо портал, работающий через интернет-браузер.
Продукт находится на переходной стадии от монолитной к микросервисной архитектуре. В процессе развития Продукта часть функционала выносится из монолитной составляющей Продукта в микросервисы.
Продукт состоит из трех основных частей:
●Личного кабинета, доступного из Web-браузера
●Мобильного приложения
●Монолитной составляющей и микросервисов
●Баз данных

3.Технологический стэк Продукта

Бизнес-логика Продукта прописана в монолитной составляющей и микросервисах. При этом используются языки програмирования PHP Symfony 2.8 и 7.2 версий, а также язык Go.
Для хранения справочной информации, настроек, пользователей и накопления результатов работы сервисов, связанных с Продуктом используются базы данных MariaDB 10.11.11, Clickhouse 22.1.37, PostgreSQL 16.4.
Для разработки мобильного приложения Продукта используются языки программирования Kotlin 1.7.20 и Java 1.8.
Экземпляр Продукта представляет собой настраиваемый web-интерфейс и/или мобильное приложение.
Текущая реализация Продукта позволяет использовать систему оркестровки Kubernetes  1.30.12 (K8s 1.28) и контейнеризации компонентов Docker 28.1.1.
В Продукте для логирования событий и работы с логами используются компоненты экосистемы Elastic Stack (ELK).


4.Функциональная схема продукта

ПО «Провиант» включает в себя следующие функциональные модули:
1)Личный кабинет пользователя, разработанный в виде Web-интерфейса, обеспечивающий следующие функции:
1.Просмотр и контроль со стороны руководителей полевых сотрудников Правообладателя результатов работы их подчинённых
2.Просмотр и контроль со стороны заказчиков Правообладателя качества предоставления услуг
3.Получение отчётности о ключевых бизнесс-процессах Правообладателя его руководством
4.Получения отчётности о предоставленных услугах Правообладателем со стороны его заказчиков
5.Выдача заданий на выполнение работ для полевых сотрудников Правообладателя со стороны его руководителей
6.Ввод справочных данных
7.Заведение новых пользователей
8.Настройка личного кабинета для пользователей
9.Настройки и ввод служебных данных

2)Мобильное приложение для ОС «Android», обеспечивающее следующие функции:
1.Выполнение основных бизнес-процессов полевыми сотрудниками Правообладателя и сотрудниками заказчиков услуг Правообладателя
2.Отчетность о выполнении основных бизнес-процессов полевыми сотрудниками Правообладателя перед своими руководителями и заказчиками услуг Правообладателя
3.Получение производственных заданий полевыми сотрудниками Правообладателя от своих руководителей заказчиков услуг Правообладателя
4.Получение обратной связи по выполнению своих работ полевыми сотрудниками Правообладателя

3)Ядро бизнес-логики осуществляет обработку информации о бизнес-процессах и справочной информации Правообладателя, управление накоплением информации о бизнес-процессах и  справочной информации Правообладателя, управление бизнес-процессами работодателя, управление доступом к функционалу Продукта, загрузки информации от партнеров Правообладателя, выгрузки информации заказчикам услуг Правообладателя.

4)Базы данных различных форматов и файловые хранилища выполняют функции накопления и выдачи информации: справочной, накопленной об основных производственных процессах Правообладателя, предоставленной партнерами Правообладателя.


5.Технологическая схема Продукта

Личный кабинет представляет собой web-интерфейс, доступный из любого интернет-браузера. Он написан с помощью шаблонизатора Twig и языка JavaScript.
Ядро бизнес-логики Продукта написано на языках программирования PHP фреймворк PHP Symfony 2.8 и 7.2.
Мобильное приложение написано на языках Kotlin 1.7.20 и Java 1.8.
В качестве web-сервера используется Nginx 1.24.0.
Для записи, хранении и частичной обработки данных, поступающих от поставщиков информации используется БД на технологиях СУБД Clickhouse.
Для основной хранения результаты работы бизнес-процессов и данных для работы бизнес-процессов используются базы данных на технологиях СУБД Clickhouse, PostgreSQL и MariaDB.
Обмен информации с поставщиками данных происходит через объектное хранилище данных, поддерживающее протокол обмена S3.  
Загрузчик информации из объектного хранилища данных написан на языке Golang.