Внимание: это обновленная статья со сравнением ESB-систем. С момента прошлой публикации в 2021 году многое изменилось и на российском рынке, и в разработке. Поэтому мы решили переписать сравнение, включив актуальные параметры анализа и системы.
Мы уже не раз писали про преимущества интеграций систем с помощью ESB. Например, в статьях «Какие интеграции помогут построить слабо связанную ИТ-архитектуру→» и «Правильная интеграция «1С» с другими системами→». Интеграции через шину позволяют (при правильном подходе к архитектуре) обеспечить слабую связанность и асинхронную работу ИТ-систем в вашем контуре.
Чем хороша слабая связанность (low coupling)? Если кратко — это состояние, при котором системы или модули взаимно независимы и изменения в одном модуле не требуют изменений в другом. Это означает, что любые изменения в слабо связанной системе можно реализовать быстро, относительно недорого и с меньшим риском ошибок.
Это касается и минорных правок: добавление новой характеристики в карточку товара, — и крупных изменений в архитектуре: добавление нового 1С для филиала в архитектуру, смену складской программы и т.д.
Но — все ли шины позволяют этого добиться? С какими шинами вы вместо гибкости получите новую точку отказа в архитектуре? Какие шины помогают сразу создать склады и озера данных с витринами (DWH, Datalake), а какие реализуют только ETL-слой? Что изменилось в подходе ESB с развитием ИИ?
И как выбрать ESB, который подойдет именно вашей архитектуре? В этой статье сравним семь интеграционных шин по техническим и бизнесовым параметрам, чтобы облегчить выбор: 1С:Шина, DATAREON, Mule, Red Hat Fuse, WSO2, Apache NiFi, n8n.
Кратко о роли ESB в слабо связанной архитектуре
Скорее всего, вы уже в курсе, что такое и как работает ESB. Если это так, можете смело проматывать этот раздел и переходить к следующему.
Для остальных дадим краткие вводные.
ESB, она же Enterprise Service Bus, интеграционная шина предприятия — это набор программного обеспечения и хранилищ (брокеров и баз данных), которые забирают функцию обмена между сервисами на себя. Шина упрощает обмены и снижая количество кода в конечных сервисах. Иными словами, аче говоря - практическая реализация слабой связанности. Он:
- собирает информацию из систем компании и внешних источников. Например, ESB может забирать данные из вашей ERP и из систем ваших поставщиков;
- сохраняет данные в хранилища (базы данных и брокеры) для дальнейшего использования;
- фильтрует и преобразует данные в те форматы, которые нужны системе-потребителю. В базе могут храниться все заказы, которые сделаны через ваш интернет-магазин. Но склад в Норильске получит информацию только о тех, которые должен обслужить — никакой избыточной нагрузки на конечные системы;
- сохраняет логи и мониторит ошибки передачи данных. Даже если в какой-то момент возникнет ошибка передачи данных в хранилища или в конечную систему, в а) получите сигнал об этом и б) легко определите, из-за чего и в какой момент произошла ошибка.
Традиционно интеграцию через ESB визуализируют примерно так:
Мы же используем для визуализации SOA-карты. Она более наглядна для представления сервисов и связанных с ними потоков данных. К ESB-слою тут относятся контуры ETL и хранилищ:
По каким параметрам анализируем и почему параметры поменялись с 2021 года
В прошлом варианте мы анализировали шины исключительно по техническим параметрам. Но ведь на принятие решения об инструменте влияют не только (и не столько) они. за прошедшие годы мы накопили бизнесовые и технические вопросы, которые задают специалистам KT.Team наши партнёры перед внедрением ESB. В статье используем их:
- Лицензирование — проприетарный или open-source-продукт. У этого вопроса есть две первопричины: политика безопасности компании (которая может допускать или запрещать использование продуктов с открытым кодом) и стоимость владения системой.
- Удобство разработки. Поскольку удобство — трудноизмеряемое качество, в рамках этой статьи уточним его до прикладных параметров:
- Поддержка внешних хранилищ. Собственные механизмы хранения данных облегчают настройку шины. С другой стороны, если шина ограничивает вас в выборе, вы не сможете работать с привычными хранилищами. Набирать ИТ-команду для поддержки интеграций будет сложнее.
- Поддержка внешнего логирования. Встроенные инструменты логирования и мониторинга можно настроить только на определенный набор событий. Если же вам нужно узнавать о специфичных ошибках или проблемах — например, что информация из конкретного поля передается некорректно — вам нужен настраиваемый (внешний) инструмент мониторинга.
- Поддержка внешнего оркестратора. Для управления запуском часто удобнее использовать сторонние опенсорс-решения вроде Kubernetes. Это снижает зависимость от вендора и расширяет возможности. Встроенные оркестраторы могут быть менее гибкими и иметь сложности с масштабированием.
- Поддержка языков программирования. От того, какие языки и фреймворки поддерживает шина, зависит простота подбора людей для ее обслуживания. Для работы с популярными языками вроде Python легче найти специалиста, чем, например, для C++.
- Ширина сообщества. Насколько шина популярна среди компаний и разработчиков. Большая популярность означает обширное сообщество, а оно дает сразу два преимущества:
- специалистов, работающих с этим продуктом, больше. А значит, легче нанять новых сотрудников;
- информации по шине много — разработчикам будет легко найти примеры чужих решений для нестандартных (и стандартных) задач.
- Риск vendor lock. Этот параметр касается и инструмента, и подрядчика: открытый ли код у системы, хорошо ли он документируется, какие условия, связанные со сменой поставщика, прописаны в договорах.
- Обеспечение доступности и отказоустойчивости. Самое главное в этом пункте — может ли сама шина из-за особенностей архитектуры стать единой точкой отказа или нет.
От 1С до Mule: какие ESB анализируем
В сравнении участвуют:
- 1С:Шина
- DATAREON
- Mule
- Red Hat Fuse
- WSO2
- Apache NiFi
- n8n.
«1С:Шина»
Российская шина от (что логично) компании 1С. Известна с 2022 года, самая свежая версия — 4, вышла в середине 2024 года. По умолчанию предусмотрены механизмы интеграции для продуктов 1С. Продукт включен в реестр отечественного ПО.
Лицензирование: проприетарный продукт с закрытым кодом.
Удобство разработки:
- Хранение: Работает с собственной СУБД и внешними базами.
- Логирование: Внутреннее, возможна интеграция внешних модулей
- Оркестратор: Возможно подключение 1С: Оркестратор
- Языки программирования: 1С:Предприятие.Элемент
Размер комьюнити: Только российское комьюнити, точный размер аудитории неизвестен.
Риск вендор-лока: проприетарная шина, поставляется по подписке. Риск Verndor lock высокий.
Доступность и отказоустойчивость: Возможно создание логических кластеров серверов V8. Это делает ESB-шину устойчивой к сбоям: система продолжает работать, пока хотя бы один сервер из кластера работает нормально.
Дополнительная информация: Есть три варианта поставки — на 100 пользователей, на 500 пользователей и без ограничений.
DATAREON
Российская low-code-платформа на базе .Net Сore. Кроме ESB, в платформу входят системы MDM и НСИ для управления качеством данных, EDW для построения корпоративных хранилищ и др. DATAREON входит в реестр российского ПО и имеет лицензию ФСТЭК.
Первая версия платформы вышла в 2014 году. Последнее (на момент написания статьи) масштабное обновление до версии 3.1.0. выпустили в конце июля 2024 года. В нем добавили протокол REST для обмена данными с 1С, перевели компоненты на .NET 6.0 и реализовали механизм «горячего восстановления» данных очередей.
Лицензирование: проприетарный продукт с закрытым кодом.
Удобство разработки:
- Хранение: Работает с собственным хранилищем, поддерживает внешние СУБД.
- Логирование: Внутреннее, возможна интеграция внешних обработчиков
- Оркестратор: Поддерживает внешний оркестраторы.
- Языки программирования: C#
Размер комьюнити: Только российское комьюнити, точный размер аудитории неизвестен. Сообщает о 700+ клиентах.
Риск вендор-лока: проприетарная шина, поставляется по подписке. Риск Verndor lock высокий.
Доступность и отказоустойчивость: Есть возможность вертикального и горизонтального масштабирования (на случай пиковых нагрузок), есть кластеризация для повышения резистентности к сбоям.
Mule
Продукт существует с 2006 года. Обновления выходят регулярно — новые модули дорабатывают буквально каждые несколько дней. Например, в сентябре 2024 обновили коннектор Snowflake, выпустили новую версию JSON-модуля и несколько патчей для ядра платформы. С 2018 ESB Mule принадлежит компании Salesforce и поддерживает миссию по переводу бизнеса в облачное пространство.
Для новых клиентов из России Mule сейчас закрыт. Само программное обеспечение скачать можно, но создание аккаунта и поддержка от вендора для российских компаний недоступны.
Лицензирование: Open source, техподдержка по подписке.
Удобство разработки:
- Хранилища: Из коробки доступно два типа собственных хранилищ и поддержка внешних хранилищ.
- Логирование: CloudHub, возможно подключение внешних инструментов
- Оркестратор: Собственный, возможно подключение Kubernetes
- Языки программирования: Java
Размер комьюнити: 1616 компаний-клиентов и занимает 7,74% рынка iPaaS-решений. За счет распространенного стека, найти или дообучить специалистов легко.
Риск вендор-лока: крайне низок.
Доступность и отказоустойчивость: Масштабируемое количество кластеров, возможность развернуть несколько экземпляров ESB для распределения нагрузки.
Red Hat Fuse
Платформа известна с 2007 года; последняя на данный момент версия вышла в июне-2024. Шина ориентирована на профессиональных разработчиков: «из коробки» имеет относительно небольшой набор компонентов и требует сильной доработки. Но именно благодаря этому RHF называют одним из самых продвинутых и гибко настраиваемых решений на рынке.
Лицензирование: Open source, поддержка и обучение по подписке.
Удобство разработки:
- Хранилища: Поддержка любых облачных хранилищ.
- Логирование: Prometheus, Hawtio, возможность подключения внешних инструментов.
- Оркестратор: Поддержка OpenShift.
- Языки программирования: Java
Размер комьюнити: 340 компаний-клиентов, доля на рынке интеграционных решений — 0,3%. За счет распространенного стека, найти или дообучить специалистов легко.
Риск вендор-лока: крайне низок.
Доступность и отказоустойчивость: Поддержка кластеризации с помощью контейнеров.
WSO2 ESB
WSO2 ESB — один из продуктов платформы WSO2. Первая версия платформы вышла в 2006 году. Текущая версия 4.3.0 появилась в 2024-м — в систему добавили AI-функции и поддержку OpenAPI 3.1.0, углубили интеграцию с Kubernetes, улучшили диагностику и поддержку политик безопасности.Продукт опенсорсный, поставляется в нескольких форматах. WSO2 Micro Integrator — low-code-версия, которая поддерживает централизованную интеграцию микросервисов. WSO2 Ballerina — pro-code-продукт, более гибко настраиваемый и поддерживающий больше возможностей для интеграций.
Последние версии low-code платформы WSO2 Micro Integrator оснащены AI-функциями. Они позволяют писать запросы на естественном языке и автоматически генерировать структуру интеграций.
Лицензирование: Open source, поддержка и непрерывные апдейты — по подписке.
Удобство разработки:
- Хранилища: Собственное временное хранилище, поддержка внешних хранилищ.
- Логирование: Настраиваемая собственная система логирования.
- Оркестратор: Поддержка Kubernetes.
- Языки программирования: Java
Размер комьюнити: 1360 компаний-клиентов, занимает 1,22% рынка интеграционных решений. За счет распространенного стека, найти или дообучить специалистов легко.
Риск вендор-лока: крайне низок.
Доступность и отказоустойчивость: Кластеризация, балансировка нагрузки, инструменты для управления сессиями.
Apache NiFi
Опенсорсный проект, который изначально принадлежал спецслужбам США, но в 2014 году был передан Apache Software Foundation. С тех пор код системы находится в открытом доступе. Самая свежая на момент написания статьи версия 2.0.0-M4 вышла в июле 2024 года. В ней перестроили пользовательский интерфейс, добавили поддержку Kafka 3 и новые функции для работы с данными.
Одна из особенностей NiFi — собственный фреймворк Apache MiNiFi, который собирает данные с разных устройств и интегрирует их в поток данных внутри системы. В недавнем обновлении для MiNiFi добавили поддержку Python processor.
Лицензирование: Open source, нет платных продуктов.
Удобство разработки:
- Хранилища: Работает со всеми типами внешних хранилищ.
- Логирование: Библиотека logback, возможность процессинга логов из различных сервисов.
- Оркестратор: Поддержка Kubernetes.
- Языки программирования: Java
Размер комьюнити: Имеет 1907 активных клиентов по данным 6sense. По HG Data решение используют 8727 компаний. За счет распространенного стека, найти или дообучить специалистов легко.
Риск вендор-лока: крайне низок.
Доступность и отказоустойчивость: Кластеризация с собственным координатором кластеров, автоматическое распределение нагрузки.
n8n
No-code-/low-code-инструмент для автоматизации и интеграции. Он работает в формате конструктора: связи между компонентами можно настроить в визуальном интерфейсе без кодинга. Для реализации сложной логики или операций с данными можно добавлять в модули код на JavaScript. Продукт относительно новый и появился только в 2019 году. Версия 1.58.2, в которой устранены баги предыдущих релизов, вышла в сентябре-2024.
n8n доступен локально и в облачных хранилищах. Инструмент легко расширяется с помощью скриптов на Node.js и встроенных инструментов. Из коробки продукт имеет 400+ готовых интеграций.
Лицензирование: Open source, есть платная версия.
Удобство разработки:
- Хранилища: Работает со всеми типами внешних хранилищ.
- Логирование: Библиотека winston, поддержка перенаправления логов в другие сервисы.
- Оркестратор: Поддержка Kubernetes.
- Языки программирования: JavaScript, Python.
Размер комьюнити: Статистики по использованию нет, но в разделе Community на сайте проекта активно ведутся обсуждения. За счет распространенного стека, найти или дообучить специалистов легко.
Риск вендор-лока: крайне низок.
Доступность и отказоустойчивость: Кластеризация с помощью Kubernetes. Нативная возможность запускать несколько экземпляров пока не предусмотрена.
А как же Kafka?
Существует еще два популярных решения, о которых часто говорят в контексте интеграционных шин, — Apache Kafka и RabbitMQ. Это брокеры сообщений, которые отвечают за маршрутизацию данных — передают сообщения от одного компонента к другому.
Хотя маршрутизация входит в функции ESB, назвать брокеры заменой шины нельзя (в чем минусы и плюсы брокеров, мы писали в одной из предыдущих статей) и мы не будем рассматривать иха этой статье.