Приемлимо ли связывать два фронтенд микросервиса через шину сообщений со своим api сообщений?
Есть приложение враппер, и оно рендерит два сервиса А и Б, прокидывая в них инстанс вебсокета. Эти сервисы автономны, работают непосредственно с сообщениями из вебсокета в pub sub режиме. Если из сервиса А уйдет запрос на изменение значения в БД, то сервис Б об этом узнает например.
Но теперь появилась ситуация уже с ui логикой: например когда я в сервисе А клацну кнопку, в сервисе Б должна появиться какая-нибудь панелька. Если провернуть такое через вебсокет, то получается очень накладно по ресурсам. Выходит что надо дополнительно создать шину сообщений на уровне приложения враппера, прокидывать ее в сервисы А и Б и придумывать дополнительное апи сообщений для подобной ui логики. Но у сервисов все равно выходит что будет зависимость от этой библиотеки с шиной сообщений, и завязка на это апи. Правильно ли это все?
А какая альтернатива? Браузер ведь умеет только WebSocket слушать, но даже так нельзя связать 2 браузера напрямую, поэтому без API не обойтись. Как вариант, можно сделать отдельный микросеврис для такой шины связи, который можно масштабировать под нагрузку.
тут речь про фронтед-микросервисы, это два сервиса работающих на одной и той же странице в 1 браузере. их можно хоть прямой передачей JS колбеков связать. ну или через postMessage если они изолированы в воркерах.
Но у сервисов все равно выходит что будет зависимость от этой библиотеки с шиной сообщений, и завязка на это апи. Правильно ли это все?
Ну так у вас задача именно так и сформулирована - "появилась необходимость завязать два сервиса друг с другом".
Вы не сможете завязать сервис на что-то внешнее если не добавите в него зависимость на это внешнее в том или ином виде.
В такой ситуации завязать на стандартное апи которое абстрагирует один сервис от другого - это хороший и даже правильный вариант.
Я делал нечто подобное, сервис вебсокетов ловил сообщения от ORM. При изменении БД отдавал сообщения на фронт. Если фронт подписан на изменения сущности, то при событии от сокетов обращался к API бэкенда за получением данных условно. И это вполне нормально живет.