Распределённые системы на службе ФССП России. Часть 1. МВВ

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!

В одном из интервью глава Минцифры России Максут Шадаев назвал Федеральную Службу Судебных Приставов (ФССП России) идеальным кейсом тотального импортозамещения. Пришло время раскрыть некоторые технические детали одной из прикладных систем, входящих в АИС ФССП России, — системы межведомственного взаимодействия (МВВ), и рассказать, с какими сложностями мы столкнулись.

Меня зовут Дмитрий, я работаю руководителем отдела разработки в компании «РЕД СОФТ». Наша команда занимается разработкой сервисов для взаимодействия АИС ФССП России с внешними системами, а также распределёнными и высоконагруженными системами. Я инженер, и поэтому до сих пор пишу код, в основном на языке Java.

Это первая обзорная статья из цикла статей про распределённые системы, которые команда РЕД СОФТ разработала и внедрила в ФССП России.

В последующих статьях познакомим читателей с архитектурой и технологиями, которые мы применили при проектировании суперсервиса «Цифровое исполнительное производство». Этот сервис после внедрения стал самым быстрым и одним из самых популярных сервисов на портале Госуслуг.

Проект АИС ФССП России

Наша компания — достаточно известный российский разработчик и поставщик решений на основе программного обеспечения с открытым исходным кодом. Про наше системное ПО – РЕД ОС и СУБД Ред База Данных – на просторах Хабра мы уже писали.

Флагманский проект компании — автоматизированная информационная система Федеральной службы судебных приставов (АИС ФССП России). Этим проектом наша команда занимается с 2009 года, в масштабах целого федерального ведомства мы разработали и внедрили комплексный пакет базового и прикладного ПО, охватывающий большую часть деятельности службы: от операционной системы и базы данных до прикладных систем документооборота.

Техностек прикладных систем построен в основном на продуктах компании СУБД Ред База Данных и Ред Платформа.

СУБД Ред База Данных — сертифицированная СУБД на базе Firebird. СУБД полностью транзакционная ACID-совместимая реляционная с очень быстрым и проверенным временем MVCC движком и продуманным оптимизатором SQL-запросов. СУБД Ред База Данных поддерживает стандарт SQL:2008 и многие возможности SQL:2016. Это значит, что СУБД можно использовать большинству энтерпрайз приложений. Продукт сертифицирован ФСТЭК России (№ 4060 от 12.01.2019), что подтверждает его соответствие требованиям информационной безопасности и допускает его применение в государственных информационных системах. РЕД ОС зарегистрирована в Едином реестре российских программ для ЭВМ и баз данных (№ 3751).

На Ред Платформе построены все узлы системы МВВ, она предоставляет большинство необходимых инструментов для быстрого создания приложений, особенно работающих со СКЗИ и СУБД Ред База Данных (интерфейсы для криптопровайдеров, документооборот, интерфейсы для СУБД Ред База Данных, распределённый документооборот, хранилище для неструктурированных данных, веб-сервисы, в том числе и для СМЭВ, толстые и тонкие клиенты, конфигурация метамодели, быстрый в освоении ORM-движок). Прагматичный инструмент, предоставляющий разработчику большинство из того, что нужно для быстрой разработки Enterprise-приложений на СУБД Ред База Данных и Firebird. Зарегистрирована в Едином реестре российских программ для ЭВМ и баз данных (№ 4370).

В рамках проекта реализовано множество прикладных подсистем, вкратце о самых важных в нашей теме:

ПК ОСП (программный комплекс отдела судебных приставов) — это ПО, на котором работает пристав на местах. Основными функциями являются:

- ведение исполнительного производства;

- ведение розыска должников и их имущества;

- учет и контроль поступления и движения арестованного и изъятого имущества;

- осуществление дознания;

- учет денежных средств;

- ведение делопроизводства (электронного документооборота местного уровня) в рамках указанных процессов;

- ведение архива.

МВВ (система межведомственного взаимодействия) предназначена для обеспечения централизованного взаимодействия ФССП России с другими ведомствами и организациями на федеральном уровне.

Функциональная архитектура АИС ФССП России

Всю IT-инфраструктуру АИС ФССП России можно разделить на 3 уровня:

- местный уровень: представлен отделами ФССП России в крупных населенных пунктах (это более 2,7 тыс отделов);

- региональный уровень: соответствует субъектам России;

- федеральный уровень: Федеральный центр обработки данных (ФЦОД), где и предоставляется доступ к внешнему миру, в основном через СМЭВ и т.д.

СМЭВ представляет собой системную магистраль на сервисо-ориентированной архитектуре, связывающую все федеральные и региональные ведомства, службы и банки для взаимодействия по общепринятым стандартам. Но принципы работы технологического ядра СМЭВ сильно отличаются от версии к версии. На момент написания статьи, текущая версия - СМЭВ v4, но до сих пор ещё работают сервисы на СМЭВ v3 и СМЭВ v2.

Подсистема межведомственного взаимодействия АИС ФССП России

Отдельно про МВВ. Это система, состоящая из узлов (на данный момент их более сотни), которая взаимодействует с другими подсистемами АИС ФССП России с одной стороны, внешними контрагентами и СМЭВ с другой, при этом узлы также взаимодействуют между собой.

Каждый узел («сегмент» в терминах системы) развёрнут и настроен для выполнения какой-то своей задачи: конкретного обмена, сервиса, хранения и обработки определённых данных. Например, приёма и обработки реестров с данными исполнительных производств. Технически это LXC контейнеры, в которых развёрнуты сервер приложений (Tomcat), продуктивная промышленная база данных, БД архивов. БД для отказоустойчивости находится в режиме master-standby репликации.

Контрагентов на данный момент более 580. Среди них федеральные и региональные органы исполнительной власти, банки, крупные взыскатели. Самые активные из них — портал Госуслуг, Федеральное казначейство, органы, выдающие исполнительные документы (например, ГИБДД).

В рамках проекта МВВ разработан и внедрен комплекс популярных сервисов. Самые известные из них — банк данных исполнительных производств, публикуемый на официальном сайте и портале Госуслуг, ограничение выезда за рубеж, обмен с банками и суперсервисы. Также реализованы обмены с Федеральным Казначейством, документооборот с федеральными и региональными органами исполнительной власти, обмен исполнительными документами и постановлениями с банками и органами, выдающими исполнительные документы (например, ГИБДД), запросы и обращения от крупных взыскателей через СМЭВ и т.д.

Например, сервис «Ход исполнительного производства» - самый быстрый на портале Госуслуг, он же победитель в номинации «Лучший государственный сервис» премии «Цифровые вершины 2021». В том же 2021 году АИС ФССП России стала лауреатом премии в области передовых технологий «Приоритет-2021» в номинации «Информационные технологии. Программное обеспечение» за автоматизированную информационную систему Федеральной службы судебных приставов.

Развитие МВВ

История создания проекта начинается в 2010 году.

Появилась система не сразу, разработка стартовала как обычная трёхзвенка, но при добавлении обменов (сначала это были крупные федеральные ведомства и банки, первые сервисы для ЕПГУ) появлялись проблемы, требующие масштабирования: не выдерживали рост нагрузки и требовалась изоляция отказов, повышались требования к доступности, требовалось проще развёртывать и обслуживать.

На протяжении всего времени запускались новые обмены, разрабатывались сервисы, внедрялись новые инструменты и технологии. Эта работа продолжается по сей день.

Чтобы справиться с возникшими нагрузками, мы разделяли монолит на узлы, которые выполняли конкретную функцию. Можно сказать, что тогда мы внедряли микросервисы, причём до того, как это стало популярным.

Вскоре мы столкнулись с другой проблемой. Назвали её — проблема банка данных.

Проблемы больших реестров (банка данных)

Подсистема МВВ состоит из узлов (сегментов). Cегменты для работы различных сервисов и обменов общаются друг с другом, в основном это синхронные веб-вызовы для получения данных по запросам: это представлено на схеме. На данный момент узлов более 100 и их число продолжает расти.

В определённый момент мы столкнулись с проблемой роста данных и масштаба системы и связей между узлами.

Если присмотреться внимательнее, большая часть вызовов идёт на 4 сегмента, и это не случайно.

Дело в том, что часть сегментов (которые мы назвали банк данных) занимаются приёмом, обработкой и хранением достаточно больших объёмов данных реестров из каждого отдела судебных приставов (отделов более 2,7 тыс). По сути это вся операционная деятельность службы: документы, проводки, сами сведения по исполнительным производствам, информация о платежах и ограничениях, арестованное имущество должников. Таблицы некоторых из них достигают десятков миллиардов записей, а размеры БД более 8Тб. Запланированные или незапланированные выходы из строя этих узлов приводили к неработоспособности большинства наших сервисов.

Отказоустойчивость базы и прикладных сервисов на тот момент не обеспечивала предотвращение всех отказов.

Мы сразу начали искать решение проблемы с помощью масштабирования производительности и отказоустойчивости для реестров (банка данных).

В чём заключалась потребность? Данных много — это создавало риск нехватки места на узле. Даже если они поместятся, могла возникнуть проблема со скоростью работы и надёжностью. Требовалась масштабируемая, отказоустойчивая и быстрая распределённая система без единой точки отказа с понятной архитектурой работы.

При этом не стоит забывать, мы живём в мире, где победил SQL: для прикладной системы-клиента должна быть прозрачна схема доступа к данным. Другими словами, клиент ничего не должна знать про её распределённость.

Были попытки сделать кластер своими руками, но чтобы решить все проблемы, надо было придумать как реализовать распределение данных, распределённый SQL, двухфазные транзакции, репликацию. Сейчас с этим проще, но тогда инструментов не было. И, оценив сколько это займёт времени, от идеи отказались и начали поиск Open Source решения.

Статья получилась достаточно обзорной. Уверен, что многим интересно, как же все это работает под капотом, как организована архитектура и какие технологии и подходы нам помогли в решении проблемы. Про это мы расскажем в следующей статье из нашего цикла. Также мы остановимся на проекте суперсервис «Цифровое исполнительное производство», раскроем технические подробности и технологии его реализации.

В конце предлагаю просмотреть видео моего выступления на тему реализации АИС ФССП России.

Источник: https://habr.com/ru/company/redsoft/blog/719152/


Интересные статьи

Интересные статьи

Всем привет, и с вами снова Данил Губанов — backend-разработчик в Точке. В этом материале я расскажу об инструментах, с которыми можно быстро сделать лендинг с формами, создать таблицу и даже разработ...
В прошлой статье https://habr.com/ru/post/589415/ мы говорили о создании подов. В этой статье поговорим о том, что такое сервис, типы сервисов, метки и селекторы, а также создадим свой сервис.
Т.к. помидорами меня за первую часть не закидали — то я продолжу. Там я коснулся аппаратной стороны дела, а именно — определение того, что за рабочая лошадка камера нам досталась:сколько фотоэлектроно...
Привет, Хабр. В прошлой статье я рассказал о начальном анализе предметной области и базовом проектировании нашей новой ECM-системы. Теперь я расскажу о первой практическо...
Мы продолжаем серию публикаций адаптированного и дополненного перевода "Карманной книги по TypeScript". Другие части: Часть 1. Основы Часть 2. Типы на каждый день Часть...