Одно из наиболее частых возражений против использования ESB -слоя в архитектуре компании или отдельного проекта - независимые системы можно связать и без «посредников».
Достаточно разработать в одной из этих систем модуль интеграции или использовать, к примеру, API .
Давайте рассмотрим эти варианты подробнее.
Первый вариант - модуль интеграции в одной из систем.
Как правило, его разработку делегируют команде, которая непосредственно занимается разработкой этой системы.
Для такой команды разработка интеграций - задача непрофильная, связанная с рисками, например, наделать неочевидных ошибок в интеграции, потратить значительно больше времени, чем запланировано, совершить архитектурные ошибки.
Плюс команде разработки придётся делать «обвязку» системы, чтобы контролировать работоспособность интеграции. А это непростая и объёмная задача.
Нужно не только разработать интеграцию, которая работает без сбоев, но и дать команде поддержки понятные регламенты работы с теми сбоями, которые всё же могут возникнуть. И даже если интеграция работает здесь и сейчас, нет никакой гарантии, что она будет работать завтра. И тем более нет гарантии, что команда разработки узнает об «отвалившейся» интеграции раньше, чем к ней придёт заказчик с претензией: «У меня не работает обмен данными».
Второй вариант - передача данных через интерфейс API или, к примеру, GraphQL.
Тут есть нюанс: API , который система использует для обмена данными с внешним миром, пассивен.
Система может только отвечать на запросы - отдавать данные вовне или изменять их по «инициативе» другой системы. В итоге две интегрируемые системы будут ждать друг от друга «инициативы» для передачи информации (с API это неизбежно).
Чтобы передача состоялась, придётся вводить третьего «игрока» - активную систему, т. е. фактически шину данных ( ESB ). В идеальном кейсе эту «конструкцию» надо дополнить вебхуками в мастер-системе, т. е. в системе, являющейся источником данных.
Они будут «запускать» запросы на изменение данных в системах-приёмниках сразу после того, как эти данные поменяются в мастер-системе.