ESB-шина для маленьких и не особо одаренных
Представь типичный IT-зоопарк средней компании, CRM-система, писанная еще при царе Иване Грозном, Бухгалтерия, работающая по лунному календарю, мобильное приложение и древний PHP-скрипт, держащийся на святом духе и сигаретном дыме разработчика. И в один прекрасный день бизнесу приходит в голову "гениальная" мысль - все эти системы должны непрерывно и эффективно разговаривать друг с другом.
Обычно всё начинается с хаотичной ху*ты под названием "точка-в-точку". Разработчики просто натягивают API от каждого сервиса к каждому. Через полгода ваша архитектура начинает напоминать тарелку с дошираком, которую уронили на ковёр (CRM стучится в 1С, 1С в склад, склад в PHP, и никто не понимает, куда уходят данные, потому что все пох*й). Любое мелкое изменение формата в 1С мгновенно роняет все к чертям собачьим, а задача "добавить 11-ю систему" заставляет системного аналитика судорожно обновлять резюме.
Вот здесь на сцену и выходит Enterprise Service Bus (ESB) — она же интеграционная шина.
Простыми словами представь, что твои сервисы - это жильцы сумасшедшей коммуналки. Один шлёт тяжеленный XML, второй изъясняется короткими JSON-ами, а третий вообще аутист и понимает только сообщения в бутылках через очереди. ESB в этом зоопарке - угрюмый, но всесильный диспетчер-переводчик в центре коридора. Теперь никто не общается напрямую, все идут к нему.
Этот диспетчер берёт на себя всю грязную работу.
Сначала он занимается маршрутизацией, CRM кидает шине заказ, а шина сама соображает, что его надо отправить на склад, а если чек больше миллиона ещё и в отдел безопасности. CRM при этом даже не еб*т, кто адресат, ей глубоко фиолетово.
Затем шина делает трансформацию, она на лету пережёвывает красивый JSON от мобилки и сплёвывает его в кривой XML 2003 года, который ждёт склад.
И наконец, шина гарантирует доставку, если склад напился и упал, шина бережно спрячет заказ в карман и будет сувать его в склад до тех пор, пока тот не проспится и не примет данные.
Звучит красиво, но тут есть жирный подвох. Со временем шина превращается в неконтролируемого монолитного монстра. Вся бизнес-логика размазывается прямо по шине, и через пару лет уже ни один человек в компании не понимает, как эта махина работает. К тому же, шина - это идеальная Single Point of Failure (поясняю если пизданулась шина, встала вся компания). Рабочий день окончен.
ESB - это не волшебная таблетка, а центральный распределительный щит с переводчиком. Если у вас три с половиной микросервиса - не трогайте шину, не позорьтесь. Но если вы увязли в десятках разрозненных enterprise-систем, без шины вы просто сгорите в аду интеграций.
На этом всё. Пойду плакать в туалете, потому что бизнес решил заменить 1С на самописный сервис на Rust. ✌️