Под капотом Госуслуг: про СМЭВ3 от первого лица

Привет ИТ-сообщество! Я Анастасия Пятько, аналитик-внедренец из РТЛабс. Это компания, которая развивает всем известные Госуслуги и пытается облегчить нашу бюрократическую жизнь.

f20911a2eefa5eb841e4e0fdcbbbf353.png

Недавно мне довелось выступить на HighLoad++ 2022 с похожей темой: «СМЭВ. Сильно проще, чем кажется. Полезные советы, как стартовать интеграцию через СМЭВ3 и СМЭВ4». Организаторы знают своё дело. В зале была заинтересованная аудитория, которая задавала вопросы с неподдельным интересом. С некоторыми разговор у стенда продолжался ещё несколько часов. Так родилась идея — зафиксировать всё текстом в этой статье.

Начнём с небольшой предыстории. Цифровизация пришла в нашу большую страну определённо раньше того, как появились эксперты, которые смогли бы сразу сказать, как надо делать, придумали стандарты и протоколы. Регионы, ведомства, их подрядчики писали свои системы на разных языках программирования, строя различную архитектуру, а потом делали интеграции как получится. В какой-то момент систем стало много. Пришло понимание, что обмениваться информацией между собой без единого унифицированного фреймворка им стало просто невозможно. И вот 12 лет назад появилась Система межведомственного электронного взаимодействия (СМЭВ).

Что такое СМЭВ

СМЭВ — это тот транспорт, которым доставляются миллионы «конвертов», необходимых для оказания госуслуг. Через СМЭВ обмениваются информацией между собой:

  • федеральные и региональные ведомства

  • МФЦ

  • Госуслуги

  • Единая система идентификации и аутентификации (ЕСИА)

  • ряд коммерческих организаций

СМЭВ в цифрах:

Трафик СМЭВ, количество подключённых систем, скорость и безотказность

Трафик СМЭВ, количество подключённых систем, скорость и безотказность

Актуальных СМЭВ два: СМЭВ3 и СМЭВ4. При этом четвёртая версия не заменяет третью. Это две принципиально разные системы с одним предназначением — организация обменов между системами участников взаимодействия. Разница в том, что:

  • СМЭВ3 подходит, когда нужно гарантированно передать информацию

  • СМЭВ4 — когда на первом месте стоит скорость обмена данными

В этой статье речь пойдёт о третьей версии СМЭВ. Как ни крути, она пока остаётся наиболее востребованной. Однако популярность четвёртой растёт на глазах, и о ней я планирую написать в следующей статье.

Как работает СМЭВ3

Собственно, все сообщения в СМЭВ3 — это XML, составленные на основе XSD-схем самого транспорта и вида сведения, отправленные через веб-сервис.

По опыту предыдущих уже неактуальных версий системы в СМЭВ3 сделан упор на гарантии доставки. То есть «доставить любой ценой», несмотря на возможные технические проблемы на стороне любого из участников взаимодействия, — лозунг третьей СМЭВ.

Что такое очереди в СМЭВ3

Важная фишка СМЭВ3 — очереди. В самом транспорте для каждой зарегистрированной системы создаются как минимум 2 очереди: запросов и ответов.

Системы всех участников должны уметь формировать сообщения и подписывать их зарегистрированным сертификатом. Сообщения бывают трёх типов:

  • send — с основной информацией

  • get — для опроса очередей

  • ack — для подтверждения получения

Рассмотрим обмен между информационными системами двух ведомств, одна из которых инициирует обмен или запрашивает информацию, вторая — отвечает на запрос.

1. Инициатор отправляет запрос —SendRequest. Он попадает в очередь запросов ответчика. Там запрос будет храниться до тех пор, пока ответчик его не вычитает, но максимум — 14 дней.

Если за 14 дней запрос не вычитают, инициатору придёт «отбивка» от СМЭВ, что его запрос попал в архив.

2. Ответчик опрашивает очередь — GetRequest. Он должен делать это постоянно. И когда туда попадает запрос, ему возвращается непустой «конверт».

3. Ответчик обрабатывает запрос. Получив «конверт», система ответчика должна выполнить ряд действий: распарсить, уложить в базу и т. п. Затем система отправляет в СМЭВ «конверт» с подтверждением получения запроса — AckRequest. Это ещё один уровень для обеспечения гарантированной доставки. Если СМЭВ не получит от ответчика такое подтверждение, через 15 минут запрос снова вернётся в очередь.

4. Инициатор получает ответ. После того как система ответчика подготовит «конверт» с ответом, происходит всё ровно то же самое:

  • «конверт» попадает в очередь инициатора — SendResponse

  • инициатор его вычитывает — GetResponse

  • инициатор оправляет подтверждение о получении — AckResponse

Только тогда обмен считается завершённым.

Конечно, здесь ещё много нюансов:

  • существуют другие типы обменов, например рассылка

  • на стороне СМЭВ происходят различные проверки

  • формируются разные типы сообщений: статусные и об ошибках

Но в целом все обмены через СМЭВ3 устроены так, как я описала выше.

Что такое виды сведений в СМЭВ

Важную роль в СМЭВ3 играют такие сущности, как «Виды сведений» (ВС).

Схемами транспорта задаются условно-общие поля для всех обменов, например, для правильной маршрутизации, передачи вложений, подписи и т. п.

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

В итоге ВС представляют собой:

  1. Правила, по которым формируются запросы и ответы (XSD).

  2. Эталоны (XML) — примеры «конвертов» для работы эмулятора.

  3. Руководство пользователя — документ, составленный автоматически или вручную владельцем или создателем ВС, призванный помочь подключающимся участникам.

Виды сведений в СМЭВ3

Виды сведений в СМЭВ3

ВС в целом может создать и зарегистрировать любой участник взаимодействия. Таких ВС сейчас около 2 750.

Как подключиться к СМЭВ3

Чтобы стать участником взаимодействия, организации нужно пройти 7 шагов.

  1. Оформить заявку на регистрацию организации в СМЭВ. В заявке указывают нормативно-правовое обоснование подключения. В зависимости от типа организации и её целей, эту заявку могут рассмотреть либо очень быстро, либо долго — с выносом на президиум специальной комиссии.

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

  3. Получить сертификаты аккредитованного удостоверяющего центра (АУЦ).

  4. Зарегистрировать одну или несколько своих систем с полученными сертификатами в СМЭВ через Личный кабинет участника взаимодействия (ЛК УВ). Выбрать вид сведения, по которому будете работать, или зарегистрировать свой.

  5. Настроить или разработать интеграционный модуль для подключения к СМЭВ. Здесь вам на помощь придёт наш адаптер СМЭВ3.

  6. Получить доступ к ВС, пройдя процедуру технической готовности (ПТГ) на тестовой среде через ЛК УВ.

  7. Переключиться на продуктивную среду.

Как устроен ЛК УВ

Если первые 3 шага инструкции более или менее понятны, то про остальные хотелось бы рассказать подробнее.

Есть у нас потрясающий ЛК УВ. Получить к нему доступ не составит труда, если выполнена заявка из первого пункта. Авторизация происходит под учётной записью ЕСИА. Единственное, администратору профиля вашей организации в ЕСИА нужно будет вас присоединить к организации.

Так выглядит ЛК УВ

Так выглядит ЛК УВ

В ЛК УВ автоматизированы все регламентированные процедуры, которые необходимо выполнить для полноценной работы в СМЭВ.

В несколько кликов можно:

  • зарегистрировать систему

  • поменять ей сертификат

  • получить доступ к ВС

  • зарегистрировать свой ВС

  • пройти ПТГ с эмулятором

  • проверить наполненность своих очередей

  • отследить судьбу обмена

  • сформировать отчёт и многое другое

ЛК УВ развивается семимильными шагами и завоёвывает сердца наших пользователей. Особенно рады те, кто знает, как было до его появления. Знаете, мы как-то считали: получилось, что ЛК УВ экономит участникам годы (!) жизни.

Среды в СМЭВ3

В СМЭВ3 мы предоставляем 3 среды: разработки, тестовую и продуктивную.

Среды в СМЭВ3

Среды в СМЭВ3

Среда разработки. Она даёт уникальную возможность — попробовать свои силы в СМЭВ, не имея ещё ни одного доступа и не дожидаясь выполнения первых пунктов.

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

Тестовая среда. Более популярна, чем среда разработки, потому что сюда перед выходом на прод надо обязательно попасть всем. А большинство поддерживают работоспособность своих тестовых систем и после выхода на прод.

Для тестовой среды и среды разработки не нужен защищённый канал. Опять же получается, что тестироваться можно параллельно с организацией канала для прода.

Ещё одна важная штука для этих сред — сертификат для систем можно сгенерировать прямо в ЛК УВ за несколько секунд.

На тестовой среде помимо её прямого назначения, также проходится ПТГ для получения доступа к видам сведений.

Собственно, ПТГ — это полноценный обмен вашей системы в желаемой роли с нашим эмулятором

Собственно, ПТГ — это полноценный обмен вашей системы в желаемой роли с нашим эмулятором

Продуктивная среда. Здесь экспериментировать уже нежелательно. Доступна она только через защищённый канал. Конверты подписывать можно только сертификатами, полученными в АУЦ.

Интеграционный узел адаптера (ИУА) СМЭВ3

Лирическое отступление: любовь к аббревиатурам в нашей компании и госсекторе в принципе неспроста. У систем такие названия, чтобы можно было их однозначно идентифицировать. Вот так и с ИУА. Конечно, его любят называть просто «адаптер», но это вызывает недопонимание. Адаптерами подрядчики могут обозвать модули своих систем, а у кого-то разработаны и свои универсальные адаптеры СМЭВ. В СМЭВ4 адаптер — это вообще часть другого ПО.

Итак, ИУА СМЭВ3 — это клиентское ПО, поддерживающее все необходимые операции для выполнения обменов через СМЭВ3. Он разворачивается на стороне участника взаимодействия и предоставляет удобные для интеграции интерфейсы.

По сути, это прослойка между вашей системой и СМЭВ, которая облегчит вам жизнь в несколько раз.

ИУА можно поставить как на Windows, так и на Linux. Есть версия для кубера, а есть для домохозяйки: «далее, далее, ок, готово». Также имеется версия в комплекте со всем необходимым окружением: Java, криптопровайдер и СУБД.

Так выглядит интерфейс адаптера

Так выглядит интерфейс адаптера

Чем же поможет ИУА

  • Возьмёт на себя заботы с подписанием конвертов

  • Будет опрашивать ваши очереди, выполняя get с заданной вами частотой

  • Поможет удобно логировать все обмены

  • Позволит выбрать удобный интерфейс: amqp, rest api, soap, БД, через файловую систему и даже встроенный веб-интерфейс. Используя последний, кстати, можно вообще не разрабатывать свою информационную систему, а пользоваться только адаптером СМЭВ3

  • Сам подберёт конфигурацию для выбранной среды, обернёт в нужный формат передаваемые вложения, отправит статистику и т. д.

ИУА распространяется свободно, и мы настоятельно рекомендуем его использовать всем участникам взаимодействия.

Где почитать подробнее и куда бежать с вопросами

Единая система контекстной справки

Как любые уважающие себя системы, наши СМЭВ, ЛК УВ и ИУА, конечно же, обросли официальной документацией. Много страниц сложно читаемого текста.

Но также у нас есть классная база знаний в виде статей. Называется она Единая система контекстной справки (ЕСКС). Также здесь хранятся официальные документы и дистрибутивы. А ещё есть крайне полезный новостной раздел и форум.

База знаний СМЭВ3

База знаний СМЭВ3

Бот. Судьба сообщения и уведомления

Команда ЛК УВ совместно с другими, внешне не видимыми, но не менее значимыми командами разработали телеграм-бота. С ним можно общаться о судьбе своих обменов и получать уведомления о ключевых событиях, касающихся вас в СМЭВ.

Есть у нас официальный канал связи с эксплуатацией и другими участниками взаимодействия — Ситуационный центр. Там вам ответят здорово и красиво, но не очень быстро.

Однако мы любим наших пользователей, поэтому часто создаём чаты оперативной поддержки в Telegram. Порой они живут годами, а мы с участниками становимся друг другу родными.

Идя в ногу со временем, мы активно ведём телеграм-канал «Новости СМЭВ+». Здесь вы можете не только узнать последние новости, но и задать под любой из них свой вопрос. Неважно, если он будет не в тему новости, — мы ответим!

48c3d8f8d7289a3f4ec61c844ed3a925.png

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

Это всё, что хотелось бы рассказать. Надеюсь на ваш интерес и мотивацию к написанию новых статей.

Благодарю за внимание.

Редактор: Ольга Кочкина

© Habrahabr.ru