Есть вопрос, на котором на собеседованиях плывёт удивительно

много системных аналитиков: чем шина отличается от брокера сообщений.

Kafka и RabbitMQ называют почти все. Про ESB тоже слышали. Разницу внятно объясняют единицы.

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

Шина умеет больше. В ней живёт логика: она переводит сообщение из одного формата в другой, решает, кому его отправить, и может вести целую цепочку вызовов между системами.

Ради следствия из этой разницы я и задаю вопрос. Если маппинг лежит в шине, его описывают в требованиях к шине. Если между сервисами стоит брокер, каждый потребитель разбирает сообщение сам, и формат сообщения становится общим контрактом для всех команд.

Аналитик, который путает эти две вещи, пишет требования не туда. Всплывает это на интеграционном тестировании, когда переделка стоит дороже всего.

Сильный кандидат добавит и обратную сторону. Шина с бизнес-логикой со временем становится узким местом, через которое идут все изменения, поэтому в микросервисах её стараются держать тонкой.

А вы как бы ответили на этот вопрос на собесе?

Есть вопрос, на котором на собеседованиях плывёт удивительно | Сетка — социальная сеть от hh.ru