Под капотом Госуслуг: про СМЭВ3 от первого лица
Привет ИТ-сообщество! Я Анастасия Пятько, аналитик-внедренец из РТЛабс. Это компания, которая развивает всем известные Госуслуги и пытается облегчить нашу бюрократическую жизнь.
Недавно мне довелось выступить на 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 играют такие сущности, как «Виды сведений» (ВС).
Схемами транспорта задаются условно-общие поля для всех обменов, например, для правильной маршрутизации, передачи вложений, подписи и т. п.
Схемами ВС задаются правила, по которым будет формироваться смысловая часть «конверта». То есть как раз та информация, ради которой и осуществляется обмен.
В итоге ВС представляют собой:
Правила, по которым формируются запросы и ответы (XSD).
Эталоны (XML) — примеры «конвертов» для работы эмулятора.
Руководство пользователя — документ, составленный автоматически или вручную владельцем или создателем ВС, призванный помочь подключающимся участникам.
Виды сведений в СМЭВ3
ВС в целом может создать и зарегистрировать любой участник взаимодействия. Таких ВС сейчас около 2 750.
Как подключиться к СМЭВ3
Чтобы стать участником взаимодействия, организации нужно пройти 7 шагов.
Оформить заявку на регистрацию организации в СМЭВ. В заявке указывают нормативно-правовое обоснование подключения. В зависимости от типа организации и её целей, эту заявку могут рассмотреть либо очень быстро, либо долго — с выносом на президиум специальной комиссии.
Организовать защищённый канал. Это также делается по заявке, в рамках которой вам предоставят и помогут настроить оборудование.
Получить сертификаты аккредитованного удостоверяющего центра (АУЦ).
Зарегистрировать одну или несколько своих систем с полученными сертификатами в СМЭВ через Личный кабинет участника взаимодействия (ЛК УВ). Выбрать вид сведения, по которому будете работать, или зарегистрировать свой.
Настроить или разработать интеграционный модуль для подключения к СМЭВ. Здесь вам на помощь придёт наш адаптер СМЭВ3.
Получить доступ к ВС, пройдя процедуру технической готовности (ПТГ) на тестовой среде через ЛК УВ.
Переключиться на продуктивную среду.
Как устроен ЛК УВ
Если первые 3 шага инструкции более или менее понятны, то про остальные хотелось бы рассказать подробнее.
Есть у нас потрясающий ЛК УВ. Получить к нему доступ не составит труда, если выполнена заявка из первого пункта. Авторизация происходит под учётной записью ЕСИА. Единственное, администратору профиля вашей организации в ЕСИА нужно будет вас присоединить к организации.
Так выглядит ЛК УВ
В ЛК УВ автоматизированы все регламентированные процедуры, которые необходимо выполнить для полноценной работы в СМЭВ.
В несколько кликов можно:
зарегистрировать систему
поменять ей сертификат
получить доступ к ВС
зарегистрировать свой ВС
пройти ПТГ с эмулятором
проверить наполненность своих очередей
отследить судьбу обмена
сформировать отчёт и многое другое
ЛК УВ развивается семимильными шагами и завоёвывает сердца наших пользователей. Особенно рады те, кто знает, как было до его появления. Знаете, мы как-то считали: получилось, что ЛК УВ экономит участникам годы (!) жизни.
Среды в СМЭВ3
В СМЭВ3 мы предоставляем 3 среды: разработки, тестовую и продуктивную.
Среды в СМЭВ3
Среда разработки. Она даёт уникальную возможность — попробовать свои силы в СМЭВ, не имея ещё ни одного доступа и не дожидаясь выполнения первых пунктов.
На среде разработки можно создать демоверсию организации, зарегистрировать для неё пару систем, вид сведений и попробовать совершить обмены через СМЭВ.
Тестовая среда. Более популярна, чем среда разработки, потому что сюда перед выходом на прод надо обязательно попасть всем. А большинство поддерживают работоспособность своих тестовых систем и после выхода на прод.
Для тестовой среды и среды разработки не нужен защищённый канал. Опять же получается, что тестироваться можно параллельно с организацией канала для прода.
Ещё одна важная штука для этих сред — сертификат для систем можно сгенерировать прямо в ЛК УВ за несколько секунд.
На тестовой среде помимо её прямого назначения, также проходится ПТГ для получения доступа к видам сведений.
Собственно, ПТГ — это полноценный обмен вашей системы в желаемой роли с нашим эмулятором
Продуктивная среда. Здесь экспериментировать уже нежелательно. Доступна она только через защищённый канал. Конверты подписывать можно только сертификатами, полученными в АУЦ.
Интеграционный узел адаптера (ИУА) СМЭВ3
Лирическое отступление: любовь к аббревиатурам в нашей компании и госсекторе в принципе неспроста. У систем такие названия, чтобы можно было их однозначно идентифицировать. Вот так и с ИУА. Конечно, его любят называть просто «адаптер», но это вызывает недопонимание. Адаптерами подрядчики могут обозвать модули своих систем, а у кого-то разработаны и свои универсальные адаптеры СМЭВ. В СМЭВ4 адаптер — это вообще часть другого ПО.
Итак, ИУА СМЭВ3 — это клиентское ПО, поддерживающее все необходимые операции для выполнения обменов через СМЭВ3. Он разворачивается на стороне участника взаимодействия и предоставляет удобные для интеграции интерфейсы.
По сути, это прослойка между вашей системой и СМЭВ, которая облегчит вам жизнь в несколько раз.
ИУА можно поставить как на Windows, так и на Linux. Есть версия для кубера, а есть для домохозяйки: «далее, далее, ок, готово». Также имеется версия в комплекте со всем необходимым окружением: Java, криптопровайдер и СУБД.
Так выглядит интерфейс адаптера
Чем же поможет ИУА
Возьмёт на себя заботы с подписанием конвертов
Будет опрашивать ваши очереди, выполняя get с заданной вами частотой
Поможет удобно логировать все обмены
Позволит выбрать удобный интерфейс: amqp, rest api, soap, БД, через файловую систему и даже встроенный веб-интерфейс. Используя последний, кстати, можно вообще не разрабатывать свою информационную систему, а пользоваться только адаптером СМЭВ3
Сам подберёт конфигурацию для выбранной среды, обернёт в нужный формат передаваемые вложения, отправит статистику и т. д.
ИУА распространяется свободно, и мы настоятельно рекомендуем его использовать всем участникам взаимодействия.
Где почитать подробнее и куда бежать с вопросами
Единая система контекстной справки
Как любые уважающие себя системы, наши СМЭВ, ЛК УВ и ИУА, конечно же, обросли официальной документацией. Много страниц сложно читаемого текста.
Но также у нас есть классная база знаний в виде статей. Называется она Единая система контекстной справки (ЕСКС). Также здесь хранятся официальные документы и дистрибутивы. А ещё есть крайне полезный новостной раздел и форум.
База знаний СМЭВ3
Бот. Судьба сообщения и уведомления
Команда ЛК УВ совместно с другими, внешне не видимыми, но не менее значимыми командами разработали телеграм-бота. С ним можно общаться о судьбе своих обменов и получать уведомления о ключевых событиях, касающихся вас в СМЭВ.
Есть у нас официальный канал связи с эксплуатацией и другими участниками взаимодействия — Ситуационный центр. Там вам ответят здорово и красиво, но не очень быстро.
Однако мы любим наших пользователей, поэтому часто создаём чаты оперативной поддержки в Telegram. Порой они живут годами, а мы с участниками становимся друг другу родными.
Идя в ногу со временем, мы активно ведём телеграм-канал «Новости СМЭВ+». Здесь вы можете не только узнать последние новости, но и задать под любой из них свой вопрос. Неважно, если он будет не в тему новости, — мы ответим!
СМЭВ — это сложная высоконагруженная система. Но мы очень стараемся, чтобы она казалась лёгкой для пользователей, особенно на самом сложном шаге — этапе подключения к ней.
Это всё, что хотелось бы рассказать. Надеюсь на ваш интерес и мотивацию к написанию новых статей.
Благодарю за внимание.
Редактор: Ольга Кочкина