Корпоративный сервис межсистемного электронного взаимодействия

почему нас выбирают?

Сделаем ваши инвестиции в разработку максимально эффективными
Icon-1.png

Свяжем все корпоративные системы через единую шину под ключ​

Icon-2-.png

Обеспечим гарантированную доставку и сохранность данных

Почему нам доверяют?

Современный стек технологий

Огромные компетенции команды по созданию систем межведомственного и межсистемного взаимодействия

Включен в реестр росПО

Высокая отказоустойчивость

Системы мониторинга и журналирования обеспечивают высокую скорость реакции на инциденты

Высокая адаптивность системы

Мы вложили более 90 000 000 рублей и более 2-х лет на разработку этого продукта силами опытных разработчиков. Вы можете пройти этот путь самостоятельно или с нашей помощью.

Что выгоднее, решать Вам

Поделиться

тарифы

лицензия

Лицензия Open Source коробочная версия, со всей необходимой документацией для развертывания на вашем предприятии и дальнейшего развития и поддержки собственными силами.

Сопровождение

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

модуль инфраструктурных компонентов

файЛОВЫЙ СЕРВИС

модулЬ Журналирования

модуль мониторинга

модуль адаптерно- ТРанСПОРТНЫЙ

модуль идентификации и АУТЕНТИФИКАЦИИ (SIA)

модулЬ ИнтеграциИ*

ОСНОВНОЙ ФУНКЦИОНАЛ

Структурная схема КСМЭВ

Структурная схема КСМЭВ

Преимущества для бизнеса

Интеграционные решения

Значительное сокращение затрат на интеграционные решения

Снижение затрат на разработку

Снижение затрат на разработку, стандартизированное документирование и сопровождление разработки
 

Уменьшение сроков

Уменьшение сроков настройки интеграции между системами
 

Не нужна собственная команда

Не нужно содержать собственную дорогостоящую команду, в которой нет постоянной необходимости
 

Преимущества для разработки

централизованная маршрутизация

Обеспечение возможности централизованной маршрутизации информационных потоков средствами настраиваемой сервисной шины.

информационный обмен

Обеспечение гарантированного информационного обмена

ЕДИНЫЙ формат

Приведение всех интегрированных информационных систем к единому формату передачи данных для обеспечения гибкости и масштабируемости

Безопасный канал

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

диагностика

Обеспечение возможности диагностики рабочего состояния сервисной шины для выявления проблем с передачей данных

единый журнал взаимодействий

Предоставление единого журнала взаимодействий для межведомственных и корпоративных информационных систем
 

Функционал модулей

Модуль интеграции – обеспечение возможности централизованной маршрутизации информационных потоков средствами настраиваемой сервисной шины.
Модуль адаптерно-транспортный – приведение всех интегрированных информационных систем к единому формату передачи данных для обеспечения гибкости и масштабируемости.
Модуль инфраструктурных компонентов
Модуль инфраструктурных компонентов – обеспечение гарантированного информационного обмена; предоставление единого журнала взаимодействий для межведомственных и корпоративных информационных систем.
СИА – обеспечение идентификации и аутентификации пользователей (в т.ч. через ЕСИА).
Модуль мониторинга и Модуль журналирования – обеспечение возможности диагностики рабочего состояния сервисной шины для выявления проблем с передачей данных.
Модуль мониторинга и Модуль журналирования – обеспечение возможности диагностики рабочего состояния сервисной шины для выявления проблем с передачей данных.

Механизм работы

Большинство запросов в наши сервисы требуют аутентификации и авторизации.
Аутентификация проходит по уже ставшему привычным для всех протоколу OAuth2.
Роль авторизационного сервера выполняет Keycloak, реализующий всю необходимую функциональность для управления пользователями, интеграцией с другими провайдерами идентификации (identity provider), такими как ЕСИА или соцсети, и с поддержкой федеративности (user federation), например LDAP. Содержит возможности по отслеживанию, сбору событий безопасности (успешные и неуспешные события входа, logout и другие). Подобная реализация позволяет минимальными настройками интегрироваться с существующими корпоративными системами идентификации и авторизации.

В целях соответствия SRP (single responsibility principle) авторизация проводится в Шлюзе (gateway-api), а непосредственно программная часть уже пользуется тем, что все проверки выполнены ранее.
Благодаря этому исключаются многократные запросы и проверки в авторизационный сервер и упрощается разработка и тестирование без снижения безопасности.
SenderSendergateway-apigateway-apiRecipientRecipientalt[Нет JWT-токена]ЗапросЗапрос (без ролей)200 OK[Есть JWT-токен]Запрос + JWT-токенПроверка токенаalt[Невалидный токен]Запрос (без ролей)401 Unautorized[Токен валидный]Роли из токенаЗапрос + роли из токена200 OK

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

SenderSenderexternal-integration-apiexternal-integration-apiPostgreSQLPostgreSQLKafkaKafkaНовый запрос "POST/requests"senderIdalt[Не найден активный отправитель]Информация онеактивности отправителей422 PARTICIPANT_NOT_FOUND[Найден активный отправитель]Данные отправителяintegrationIdalt[Не удалось идентифицировать запрос или настройка запроса неактивна]Информация о некорректном значенииintegrationId или отсутстсвии настройки запроса422 BAD_INTEGRATION_ID[Запрос идентифицирован, настройка запроса активна]Информация о настройке запросаПреобразование запросаНовый запрос вext.integration.request.newПодтверждение получениязапроса "200 OK"

Для регистрации и мониторинга запроса по разным сущностям, сообщение о запросе читают из Apache Kafka и после дедупликации сохраняют в базе данных его настройки, статус и состояние. Далее отправляют в следующий этап маршрута запроса.

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

External-Integration-apiExternal-Integration-apiKafkaKafkaPostgreSQLPostgreSQLPoll-запрос вext.integration.request.newЗапрос изext.integration.request.newЗапрос на поиск "запроса" в БД(sender id + id запроса)alt[Запрос найден]Информация о "запросе" в БД[Запрос не найден]Информация об отсутствии "запроса" в БД"Запрос" для сохранения в БД"Запрос" с присвоенным IdЗапрос с регистрационнойинформацией в ext.integration.request.registered

При асинхронном типе взаимодействия происходи обращение к Apache Kafka и загрузка необходимых данных из БД с последующей отправкой соответствующему получателю. Для снижения нагрузки на сеть, контент запроса не скачивается, а передаётся по ссылке на файловый сервис. После получения подтверждения от получателя, в БД обновляется статус запроса, помечая его как ожидающий ответа.

External-Integration-apiExternal-Integration-apiKafkaKafkaPostgreSQLPostgreSQLRecipientRecipientPoll-запрос в ext.integration.request.registeredid "запроса" из ext.integration.request.registeredвызов связывания цепочек вmonitor.requests.event.newid "запроса"alt[Запрос в статусе отличном от "NEW"]"Запрос" в статусе отличном от "NEW"[Запрос в статусе "NEW"]"Запрос" со статусом "NEW""Запрос", отправляемый получателюПодтверждение полученияid "запроса"Сохранение информации оботправке и изменение статусасущности "запрос" на "SENT".

В случае синхронного взаимодействия обработка запроса происходит аналогично, но вместо подтверждения система получает бизнес-ответ (так же по ссылке на файловый сервис). Далее производится обновление записи в БД и отправка сообщения в Apache Kafka.

External-Integration-apiExternal-Integration-apiKafkaKafkaPostgreSQLPostgreSQLRecipientRecipientPoll-запрос в ext.integration.request.registeredid "запроса" из ext.integration.request.registeredвызов связывания цепочек вmonitor.requests.event.newid "запроса"alt[Запрос в статусе ниже "NEW"]"Запрос" со статусом ниже "NEW"[Запрос в статусе выше "NEW"]"Запрос" со статусом выше "NEW"id "запроса" в ext.integration.response.received[Запрос в статусе "NEW"]Ответ с id "запроса" в статусе "NEW" в БД"Запрос", отправляемый получателюОтвет получателяobjectId ответа в file-apiСохранение информации об ответе.Изменение статуса "запроса" на"RESPONSE_RECEIVED"id "запроса"id "запроса" в ext.integration.response.received

Финальной частью обработки становится отправка ответа отправителю. Производится чтение из брокера сообщений, получение данных о запросе и ответе из PostgreSQL, и последующая отправка отправителю с обновлением записи в журнале запросов.

Архитектура сервиса позволяет добавлять практически любые механизмы промежуточной обработки данных добавлением необходимого компонента к адаптерно-транспортному модулю. Например, возможно реализовать функции маскирования (передача другой ИС только части бизнес-данных), выгрузки данных из ИС для дублирования и хранения в файловом сервисе (для безопасности хранения, что также, при необходимости, обеспечит возможность переноса данных в другую ИС) и других.

External-Integration-apiExternal-Integration-apiKafkaKafkaPostgreSQLPostgreSQLSenderSenderPoll-запросв ext.integration.response.receivedid "запроса" изext.integration.response.receivedвызов связывания цепочек вmonitor.requests.event.newid "запроса""Запрос" с ответомobjectId ответа и objectIds вложения ответаalt[Ответ не получен отправителем]ОшибкаОшибкаСохранение информации об ошибке.Изменение статуса сущностей "запроса"на "ERROR"[Ответ получен отправителем]Подтверждение получения "ответа" отправителемПодтверждение получения "ответа" отправителемСохранение информации о полученииотправителем "ответа". Изменениестатуса "запроса" на "FINISHED"Подтверждение сохранения изменений

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

ESB КСМЭВ

Например, происходит длительное отсутствие сетевой связности с получателем или отправителем, приводящее к статусу “ошибка” у записи запроса. В этом случае из UI можно перезапустить неуспешный этап, без потери связанности с другими ИС.

RecipientRecipientExternal-Integration-apiExternal-Integration-apiKafkaKafkaPostgreSQLPostgreSQLPOST /responsesсодержащий objectId "ответа"и objectIds "вложений"(при наличии) в file-apiи techAttributes и systemId для идентификации запросаДедупликацияtechAttributes и systemIdalt[Не найден отправленный запрос]Отправленный "запрос" не найден404 REQUEST_NOT_FOUND[Hайден отправленный запрос]объект "запрос"objectId "ответа" иobjectIds "вложений" (при наличии) в file-apiСохранение информацииоб ответе и изменениестатуса "запроса" на"RESPONSE_RECEIVED"id "запроса"id "запроса" в ext.integration.response.received200 OK

Мы разгружаем конечные ИС, минимизируя нагрузку потока данных, за счёт того что файловый сервис является внешним хранилищем данных для ИС. Все взаимодействия осуществляются через file-api.

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

Полтава 3Полтава 3external-integration-apiexternal-integration-apiasulo-adapter-apiasulo-adapter-apifile-apifile-apiASULOASULOЗаявление в АИС АСУЛО"POST/request"200 OKPOST /requestsЗапрос контента "запроса"Контент "запроса"SOAP /ws "SendApplicationRequestMessage"Синхронный технический ответСинхронный технический ответСинхронный технический ответОтвет SOAP /ws"SendResultRequestMsg"Контент "запроса"200 OKPOST /responses objectId "контента",systemId и techAttributes с id запроса200 OK200 OKОтвет

Как пример расширенного функционала адаптеров, можно рассмотреть возможность синхронного взаимодействия за счёт включения дополнительных шагов (например для аутентификации при отправке запроса).

Полтава 3Полтава 3external-integration-apiexternal-integration-apiais-monitoring-adapterais-monitoring-adapterPostgreSQLPostgreSQLais-monitoringais-monitoringfile-apifile-api"Импорт данныхреестра сведений"200 OKPOST /trainings/requestsЗапрос данных о настройкахаутентификацииalt[аутентификация не нужна]Информация о том,что аутентификация не нужнаGetList[аутентификация необходима]Информация о необходимостиаутентификацииGetList + Authorization: Basic {код аутентификации}GetListResponsePOST /files/{bucketName}/{dirName}file-idfile-id вида {bucket}/{dirs}/{filename}Ответ

На данной схеме можно наблюдать работу по загрузке в MinIO с помощью файлового сервиса. Остальные операции (получение файла, удаление файла, загрузка нескольких файлов в один zip-архив) выполняется тем же способом.

Файловый сервис предназначен для абстрагирования работы с конкретной имплементацией. Как и ранее в презентации, здесь так же указан MinIO, однако архитектура позволяет простым способом сменить MinIO на любое другое S3 хранилище или, с некоторыми доработками, на любое другое хранилище (например S3 от облачного провайдера или какое-то своё объектное хранилище).

SenderSenderfile-apifile-apiMinIOMinIOPOST /files/{bucketName}/{dirName}Проверка наименования "корзины" (bucket)alt[Неверное наименование корзины]ошибка 404 (BUCKET_NOT_SUPPORTED)[Верное наименование корзины]Генерация ObjectIDФайл200 OK200 OK c ObjectID

Инструменты мониторинга предназначены для получения технической информации по состоянию инфраструктуры и сервисов программного комплекса КСМЭВ (Prometeus производит сбор метрик, Grafana отображает алерты на основе метрик, Zipkin производит трейсинг взаимодействий).

Zipkin
Zipkin

Инструменты журналирования обеспечивают сбор и хранение логов в структурированном виде с возможностью полнотекстового поиска (Logstash принимает логи, Kibana их обрабатывает, Elasticsearch хранит).

Vault является не только лучшим современным и безопасным хранилищем секретов, но позволяет удобно управлять конфигурацией. А именно, обеспечивает быстрый доступ к конфигурационным файлам без необходимости заходить на виртуальную машину, обеспечивает версионность (можно вернуться к определённой версии конфигурационного файла).

redis

Компонент синхронизации (Redis) используется для распределённых блокировок и лимитирования количества запросов в ИС в единицу времени. Позволяет легко горизонтально масштабировать количество подов с нашими сервисами без потери синхронности взаимодействия (с любым количеством подов мы не выходим за рейт лимиты и порядок выстраивания очереди запросов не сбивается).

Смежные информационные системы
[(ГИС/ИС/SaaS сервисы третьих лиц]
Внешняя система
[Software System]

Предоставляет данные запросов
Внешняя система
[Software System]

Предоставляет данные запросов
Внешне системы
[Software System]

Предоставляет данные запросов


Внешний компонент
[Software System]

Description
Сервис информационной системы
[Software System: ]

Description
Условные обозначения
Docker
[Container]
База данных
[PSQL: PostgreSQL]

База данных
х2
Docker
[Container]
requests-monitor-ui
[Container: nginx 1.21 и выше, HTML,CSS,TypeScript,AngularJS]

Пользовательский интерфейс монитора запросов
JSON/HTTP
Docker
[Container]
file-api
[Container: Java, SpringBoot]

Файловый сервис
Сервис объектного хранилища
[MINIO: MinIO Object Storage]

Docker
[Container]
external-integration-api
[Container: Java, SpringBoot]

Сервис интеграций
Keykloak
[Component: ]

аутентификация и авторизация
для бизнес-приложений
Docker
[Container]
gateway-api
[Container: Java, SpringBoot]

Сервис серверного прокси
х2
Docker
[Container]
external-integration-ui
[Container: nginx 1.21 и выше, HTML,CSS,TypeScript,AngularJS]

Пользовательский интерфейс сервиса интеграций
JSON/HTTP
Запрос public keys
Docker
[Container]
adapter-api
[Container: Java, SpringBoot]

Адаптеры
adapter-api
[Container: Java, SpringBoot]

Адаптеры
Адаптеры
[Container: Java, SpringBoot]

adapter-api
х2
х2
HTTP
search-api
[Container: Java, SpringBoot]

Сервис поиска
HTTP

Сервис управления очередями сообщений.
Топик мониторинга
[KFK: Kafka v2.8.1 и выше]

База данных мониторинга
[PSQL: PostgreSQL]

База данных
Сервис управления очередями сообщений
[KFK: Kafka v2.8.1 и выше]

Docker
[Container]
х2
х2
JSON/HTTP
HTTP
HTTP
JDBC
TCP
TCP
RESTful Amazon S3
RESTful Amazon S3
HTTP
JDBC
HTTP
HTTP
Тенант «КСМЭВ»
[Container]
Пространство имен на кластере Kubernetes
(external-integration namespace)
[Прикладное ПО (K8S)]
Смежные информационные системы
[(ГИС/ИС/SaaS сервисы третьих лиц]
Внешняя система
[Software System]

Предоставляет данные запросов
Внешняя система
[Software System]

Предоставляет данные запросов
Внешне системы
[Software System]

Предоставляет данные запросов


Внешний компонент
[Software System]

Description
Сервис информационной системы
[Software System: ]

Description
Условные обозначения
Сетевой сегмент КСМЭВ
[Базовое ПО]
requests-monitor-api
[Container: Java, SpringBoot]

Сервис мониторинга запросов
База данных запросов
[PSQL: PostgreSQL]

База данных
х2
Docker
[Container]
requests-monitor-ui
[Container: nginx 1.21 и выше, HTML,CSS,TypeScript,AngularJS]

Пользовательский интерфейс монитора запросов
JSON/HTTP
Docker
[Container]
file-api
[Container: Java, SpringBoot]

Файловый сервис
Объектное хранилище
[MINIO: MinIO Object Storage]

Docker
[Container]
external-integration-api
[Container: Java, SpringBoot]

Сервис интеграций
Keykloak
[Component: ]

Идентификация и аутентификация
для бизнес-приложений
Docker
[Container]
gateway-api
[Container: Java, SpringBoot]

Сервис серверного прокси
х2
Docker
[Container]
external-integration-ui
[Container: nginx 1.21 и выше, HTML,CSS,TypeScript,AngularJS]

Пользовательский интерфейс сервиса интеграций
JSON/HTTP
Запрос public keys
Docker
[Container]
adapter-api
[Container: Java, SpringBoot]

Адаптеры
adapter-api
[Container: Java, SpringBoot]

Адаптеры
Адаптеры
[Container: Java, SpringBoot]

adapter-api
х2
х2
HTTP
search-api
[Container: Java, SpringBoot]

Сервис поиска
HTTP
Брокер сообщений
[KFK: Kafka v2.8.1 и выше]

Docker
[Container]
х2
JSON/HTTP
HTTP
HTTP
JDBC
TCP
RESTful Amazon S3
RESTful Amazon S3
RESTful Amazon S3
HTTP
HTTP
HTTP
Cбор, хранение и отображение
метрик мониторинга
[Exporters and integrations: Prometheus, Grafana ]

Vault
[Хранение и распространение секретов: ]

Сбор, хранение и отображение логов
[Filebeat: Logstash, Elasticsearch]

TCP
JSON/HTTP
JSON/HTTP
HTTP
Docker
[Container]
Компонент базового ПО
[Software System: ]

Description

70% оборота

Приходится на разработку ПО и услуги. С 2014 г. деятельность компании связана только с разработкой ПО и услугами.

600 проектов

На сумму более 4 млрд. рублей

95% контрактов

осуществлялись в интересах госзаказчиков (контрактование в рамках 94, 44, 223 ФЗ)

2008

Год основания

100

Сотрудников

ООО “Высокие технологии” и ООО “АйТи “Ведомственные системы”

Команда имеет большой опыт в разработке корпоративных решений на рынке цифровизации и автоматизации функций федеральных и региональных органов власти, а также разработки и интеграции систем предоставления электронных государственных услуг. Разработчик Системы Межведомственного Электронного Взаимодействия СМЭВ3 по заказу Минкомсвязи.

6

продуктов
в реестре отечественного ПО

Упрощённая схема экосистемы КСМЭВ

Тракт ESB Асинхронный
Тракт ESB Синхр

Технологии

redis
keycloak
nginx
minio
Хотите узнать подробнее о наших продуктах и услугах.

Оставьте заявку и мы перезвоним вам.

Сайт использует cookies. Согласно политике конфиденциальности