Обзор «1С: Шины»

от автора

На связи Сергей Скирдин, технический директор компании «Белый код». Поставил себе цель — сделать обзоры на шины данных из реестра отечественного ПО. Сегодня в обзоре продукт «1С:Шина».

Ссылка на продукт: https://v8.1c.ru/static/1c-shina/

О компании: продукт фирмы «1С». Первая версия выпущена в конце 2021 года. Решение входит в реестр отечественного ПО. В основе продукта лежит технология «1С:Предприятие.Элемент».

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

Позиционирование

«1С:Шина» хорошо ложится в инфраструктуру, где используется «1С:Предприятие», и особенно актуальна, когда нужно соединить системы на 1С и не-1С. 

Вторая ключевая идея, которую вендор продвигает, — простота. «1С:Шину» сознательно делают простой и понятной: простой в развертывании, простой в эксплуатации, простой в обучении. Цель — чтобы для работы с шиной не требовалась отдельная команда Java-разработчиков, и обычный аналитик или 1С-ник мог разобраться с продуктом. При этом отсечки по размеру компании нет: продукт ориентирован и на крупный бизнес, и на средний.

Технологический стек

Шина является частью технологии «1С:Предприятие.Элемент», представляет собой Java-based интеграционную платформу, в составе которой используются распространенные open-source компоненты и библиотеки.

Полный перечень стороннего ПО и условия его использования приведены в NOTICES AND LICENCES, входящем в поставку продукта. В нем перечислены как базовые интеграционные компоненты, так и вспомогательные библиотеки для работы с сообщениями, сетевым взаимодействием, безопасностью, форматами данных, документами и мониторингом.

Ключевые группы компонентов можно описать так:

Направление

Примеры компонентов

Интеграционный runtime и маршрутизация

Apache Camel

Брокеры и обмен сообщениями

ActiveMQ Artemis, Apache Kafka, RabbitMQ Java Client, Apache Qpid

Сетевое взаимодействие

Netty, Vert.X, gRPC

Наблюдаемость и трассировка

OpenTelemetry, Micrometer, Zipkin, Brave

Работа с JSON/XML/SOAP

Jackson, JsonPath, JAXB, XMLBeans, Xerces

Работа с документами и вложениями

Apache Tika, Apache POI, Apache PDFBox, Apache Batik

Безопасность и криптография

Bouncy Castle, Nimbus JOSE JWT, OAuth2 OIDC SDK

Базы данных и драйверы

PostgreSQL JDBC, Microsoft JDBC Driver, SQLite JDBC, H2

Java/Spring-инфраструктура

Spring Framework, Spring Boot, Spring Security

Служебные библиотеки

Apache Commons, Google Guava, ASM, Byte Buddy

Такой состав показывает, что «1С:Шина» опирается на зрелую Java/open-source экосистему: Apache Camel используется как основа интеграционной маршрутизации, брокеры и клиентские библиотеки обеспечивают поддержку различных сценариев обмена сообщениями, а отдельные группы библиотек закрывают задачи безопасности, сериализации, обработки документов и мониторинга.

Однако вендор сознательно не упоминает эти компоненты в официальной документации и не включает их в контракт с пользователем. Логика следующая: с точки зрения клиента шина — это «черный ящик», какие компоненты внутри — его не касается. Завтра вендор может заменить Artemis на другой брокер, и для пользователя ничего не изменится. 

Функциональные возможности

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

  • создавать каналы отправки и получения,

  • настраивать маршрутизацию по содержимому,

  • выполнять трансляцию сообщений,

  • работать с очередями сообщений,

  • обрабатывать недоставленные сообщения,

  • создавать собственные метрики,

  • вести журналирование,

  • публиковать HTTP- и SOAP-сервисы.

В последних версиях появился узел-разделитель, позволяющий разбивать одно входящее сообщение на несколько. 

Многопоточность и порядок доставки

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

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

Это очень хорошее решение, особенно для интеграций 1С–1С: по умолчанию FIFO с гарантией порядка, при необходимости имеем возможность настроить параллельную обратку. Без гарантии порядка пакетов на продуктовом контуре зачастую возникают различные кейсы, которые практически невозможно повторить на тестовом окружении.

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

Язык, на котором реализуются внутренние функции преобразования и маршрутизации

Маршрутизация, преобразования и кастомная логика реализуются на встроенном языке «1С:Элемент». На встроенном языке доступно:

  • чтение тела сообщения и метаданных,

  • модификация сообщений,

  • реализация условий маршрутизации в обработчиках узла «маршрутизатор по содержимому»,

  • работа с очередями шины,

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

  • запись пользовательских событий в журнал,

  • создание собственных метрик.

Коннекторы

Список коннекторов охватывает основные транспортные протоколы (HTTP/REST, SOAP, JMS, AMQP, RabbitMQ, JDBC, FTP, файлы) плюс сервисы интеграции 1С. 

Объект платформы «Сервисы интеграции» (доступен начиная с версии платформы 8.3.17) взаимодействует с «1С:Шиной» по AMQP и HTTP.

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

Высокоуровневых прикладных коннекторов (например, к СМЭВ, ЕГАИС, «Честному знаку») в продукте нет — таких планов вендор тоже не озвучивает. При этом есть интеграция к SAP: «1С:Шина» предоставляет JMS-очередь, к которой SAP PI может подключиться напрямую, забирать и класть туда сообщения. А преобразование форматов (например, из IDoc в Enterprise Data) уже реализуется внутри шины на встроенном языке. То есть это рабочий сценарий, просто без готовой обвязки с правилами обмена.

Поддержка контрактов и работа со структурами данных

В части работы со структурой сообщений «1С:Шина» опирается на возможности встроенного языка. Валидация по схеме, типизация сообщений, версионирование структур — все это реализуется средствами «1С:Элемент». Какой-то отдельной декларативной схемы данных для маршрутов в продукте на сегодня нет.

Хранилища данных внутри шины

Хотя шина и не обязана ничего хранить в себе — она не хранилище, было бы удобно держать в ней служебные данные. Например, соответствия объектов в разных базах (аналог регистра сведений «Публичные идентификаторы объектов»). Отсюда вопрос: есть ли в шине некое хранилище?

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

А вот справочников внутри шины нет. Из коробки доступен только один предустановленный справочник — «Информационные системы», при добавлении второго возникает ошибка лицензирования. Логика следующая: если разрешить произвольные справочники, шина начнет превращаться в полноценную среду разработки прикладных приложений, и потеряется ее позиционирование как ESB. Если же справочники реально нужны, можно приобрести лицензию «1С:Предприятие.Элемент». Она объединяется с лицензией шины и дает полноценную возможность разработки прикладных объектов.

Масштабирование и отказоустойчивость

Полноценной кластеризации в продукте пока нет — это, пожалуй, наиболее заметный пробел. Для увеличения производительности используется вертикальное масштабирование (более мощный сервер) или проектные решения с распределением нагрузки между несколькими экземплярами шины. Сроки появления кластеризации вендор не озвучивает.

Мониторинг и траблшутинг

В этой части у продукта довольно много возможностей. Доступны:

  • общий журнал событий приложения (по сути — аналог журнала регистрации 1С);

  • отдельный журнал событий конкретного процесса интеграции;

  • встроенные метрики: количество сообщений, ошибки, недоставленные, сообщения в HTTP-узлах, в файловых узлах, в узлах трансляции и т. д.;

  • мониторинг каналов с цветовой индикацией состояния (зеленый — получатель доступен, красный — нет);

  • API в формате Prometheus для выгрузки метрик во внешние системы мониторинга (Grafana, Zabbix и т. п.);

  • возможность создавать собственные метрики на встроенном языке и публиковать их через HTTP/SOAP-сервисы.

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

Для трассировки сообщений доступен следующий подход: на ключевых точках процесса интеграции писать события в журнал с ID сообщения и информацией о маршруте. Потом по журналу можно восстановить весь путь сообщения. Это рабочий подход, но не такой удобный как трассировка, в некоторых других ESB.

Хранение проходящих сообщений

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

Канал недоставленных сообщений

Канал недоставленных сообщений есть. Переотправка возможна как из интерфейса, так и программно — через API или через встроенный язык внутри схемы процесса интеграции. Например, можно прямо в потоке обратиться к каналу недоставленных, проверить, есть ли там накопившиеся сообщения, и инициировать их повторную отправку в другой канал.

API

В продукте есть штатный API, через который можно управлять приложениями (создание, удаление, бэкапы), работать с проектами, ветками для групповой разработки и так далее. При этом стоит подчеркнуть: API не покрывает всю функциональность интерфейса один в один. Часть задач решается только из интерфейса либо через встроенный язык внутри шины. Все возможности самой шины доступны через встроенный язык, а API — это в большей степени средство внешнего управления приложениями. Полный список методов есть в публичной документации.

Интеграция с Git

Интеграция с Git есть, поддерживается групповая разработка, миграция конфигурации между контурами (DEV/TEST/PROD) через CI/CD инструменты технически возможна, функциональность для этого заложена.

Для каких компаний применимо

Решение ориентировано в первую очередь на компании, которые используют экосистему 1С. При этом сам вендор подчеркивает, что продукт широко ориентирован: и на крупных игроков, и на средний бизнес.

Точные цифры продаж вендор в открытых источниках не публикует — они озвучиваются преимущественно на партнерских мероприятиях. Косвенно прикинуть масштаб можно по справочнику внедренных решений на сайте фирмы «1С», там в публичном виде доступно порядка 70+ записей по «1С:Шине», но это неполная картина: партнеры далеко не всегда регистрируют свои внедрения.

Примеры кейсов

«Москвич» — использование «1С:Шины» для интеграции систем и передачи данных в дилерскую сеть. По данным с сайта вендора, в проекте через шину проходит порядка миллиона сообщений в сутки.

«ТНГ-Групп» — интеграция нескольких систем на базе «1С:УПП». В ходе проекта фиксировалась нагрузка более миллиона сообщений в сутки.

Кейс одного из партнеров — необычный, но показательный. Команда решила прогонять через «1С:Шину» каждое событие журналов регистрации с десятков баз 1С. Получилось порядка 177 миллионов сообщений в месяц. Шина с такой нагрузкой справляется.

Требования к ПО

Windows:

  • Windows 7 x64;

  • Windows 10 x64;

  • Windows Server 2012 x64 и выше.

Linux:

  • Ubuntu 20.04 x64;

  • Alpine 3.11 x64;

  • Astra Linux Special Edition 1.7.

Ценообразование

Лицензии

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

  • до 100 пользователей — рекомендованная цена 153 500 рублей;

  • до 500 пользователей — рекомендованная цена 306 800 рублей;

  • свыше 500 пользователей — рекомендованная цена 766 800 рублей.

Отдельных лицензий на ядра, коннекторы или модули нет, схема прозрачная.

Поддержка

Поддержка стандартная для продуктов фирмы «1С».

Наличие пробной версии и условия получения

Версия NFR (Not For Resale) доступна партнерам фирмы «1С».

Наличие версии для preprod- и test-окружений

Отдельной DEV/Test/PreProd-лицензии нет. Для непродуктивных контуров нужно приобрести отдельную коробку — но вендор отмечает, что для разработки и функционального тестирования обычно достаточно самой простой поставки (за 153 500 рублей). Для нагрузочного тестирования с реальным профилем уже потребуется аналог продуктивной лицензии.

Безопасность

Поддерживаются разные механизмы аутентификации: логин/пароль, двухфакторная аутентификация, интеграция с внешними провайдерами (Yandex, GitHub, Google и другие). Для авторизации информационных систем используются токены.

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

Ролевая модель внутри шины простая: есть две роли — администратор приложения и пользователь приложения. Более тонкого разграничения прав (например, на уровне отдельного процесса интеграции) пока нет, но и запросов на это от пользователей вендор не получал.

Что касается сертификации ФСТЭК. Сертификации непосредственно «1С:Шины» нет, но она работает на «1С:Предприятии.Элемент», в составе которого используется Axiom JDK — а Axiom JDK сертифицирована ФСТЭК России (соответствие приказу №45/31). Таким образом, функции защиты информации обеспечиваются средствами сертифицированной среды исполнения. Сама шина при этом не хранит проходящие сообщения в БД (они хранятся персистентно на диске), поэтому, по позиции вендора, отдельная сертификация шины не требуется.

Наличие открытой документации

Документация открытая, доступна на сайте https://1cmycloud.com/.

Наличие обучения

У фирмы «1С» в учебном центре доступны очный (трехдневный) и онлайн-курсы по «1С:Шине». Кроме того, поскольку шина — это часть «1С:Предприятия.Элемент», специалистам полезно проходить и курсы по самому «Элементу»: вся разработка для шины делается на встроенном языке «1С:Элемент», и эти навыки прямо переносятся. По «1С:Элементу» уже есть и сертификация «Профессионал».

Сертификация «Профессионал» отдельно по «1С:Шине» пока в разработке.

Партнерская сеть

Внедрения могут выполнять партнеры фирмы «1С». Дилерская сеть фирмы «1С» объединяет более 10 000 партнеров в 600 городах России и стран СНГ. Отдельного реестра именно по «1С:Шине» пока нет.

Наличие публичной дорожной карты развития продукта

Публичной дорожной карты нет. Планы фирма «1С» традиционно озвучивает на своих официальных мероприятиях.

Информационное сопровождение (упоминание в СМИ, рейтингах, наличие комьюнити)

Продукт широко известен в 1С-сообществе и регулярно упоминается на специализированных площадках. У продукта есть Telegram-сообщество, где можно задавать вопросы и получать поддержку.

Заключение

«1С:Шина» — это понятный, доступный продукт от известного вендора. Главные сильные стороны:

  • понятный известный вендор с огромной партнерской сетью и налаженной системой обучения;

  • адекватное ценообразование, особенно с учетом контекста рынка;

  • относительная простота продукта;

  • FIFO с гарантией порядка из коробки + возможность явно управлять параллельностью на встроенном языке.

К зонам роста и минусам можно отнести:

  • отсутствие штатной кластеризации — для отказоустойчивости и масштабирования приходится использовать проектные решения;

  • закрытость возможности разработки собственных коннекторов — новые добавляет только вендор по пожеланиям;

  • отсутствие поддержки «1С:Шины» на уровне БСП (механизмы регистрации, сериализации, интерфейсы приходится разрабатывать на проекте).

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

Если у вас уже есть инфраструктура на 1С и стоит задача организовать интеграцию между несколькими системами — «1С:Шина» вполне может быть рабочим выбором, тем более что попробовать ее можно относительно недорого даже на тестовом контуре. Как всегда в случае с интеграционными платформами, рекомендую начинать с пилотного проекта на реальной задаче — так быстрее всего становится ясно, насколько продукт ложится в ваш ландшафт.

В статье отражена моя субъективная точка зрения, у которой нет цели нанести ущерб деловой репутации создателям этого продукта.

С 2024 года я встречаюсь с вендорами и делаю обзоры продуктов, которые относятся к классу ESB. За это время удалось пообщаться с разработчиками 20+ разных решений. Недавно выпустил обновленную версию Большого обзора российских ESB-решений. Внутри 17 подробных обзоров и ответы на многие вопросы бизнеса.

Для всех, кто интересуется шинами данных, я также создал сообщество в Телеграме «Шины не для машины». Это площадка для диалога между российскими разработчиками ESB и компаниями, которым нужна интеграционная шина. Если вы хотите узнать больше о DATAREON Platform, «1С:Интеграции КОРП», Factor-ESB и других отечественных решениях, прямо сейчас вступайте в сообщество и задавайте вопросы.

ссылка на оригинал статьи https://habr.com/ru/articles/1048104/