холивара_для._api_vs_шина_сообщений.1542832690.txt.gz | Хозяин: nikolay_carbonsoft1 | Изменен: 20.05.2019 15:18 nikolay_carbonsoft1 | Утвержден(nikolay_carbonsoft1 2018/11/21 15:38)
Новейший утвержденный
Новейший утвержденный
Это старая версия документа.
Обсуждение
с точки зрения разработки, практика как правило обратная, с очередью получается сложнее кодить и сложнее код.
pl7 ошибка должна проходить без изменений на все уровни вверх, можно дополнять текст но не менять.
в шине тоже есть обработка таймаутов
чем строже тем сложнее расширять, уровень шины становится умным и специфицированным
Возникает асинхронка, это всегда сложнее кодить, особенно джунерам
Мне кажется, что тебе только кажется. Это разные способы общения подсистем, с точки зрения простоты кода call api проще и шина нужна там где call не справляется.
Например шина нужна там, где много событий и есть несколько слушателей которые хотят подписаться на события.
p.s. шина технологичней и универсальней, но никак не проще, если хочешь можно разобрать на примерах.
кстати шина(среда) с сообщениями меж подсистем(объектов) это тру идеолога ооп))
опять же по современным меркам это всего лишь один из патернов.
pl7 пропагандирует другой подход
TODO перенести в PL7 в патерны
Я просто сравнил теплое с мягким немного. Я не сравнивал REST API vs вызов-процедур-через-шину. Тут действительно получается асинхронка, таймауты и прочие стремные вещи, которые во многом схожи с REST API при применении микросервисов, и если сделать умную шину, которая будет заодно контролировать и мониторить работу микросервисов…
Я скорее имел в виду движение в сторону работы с job'ами, вместо вызова API или даже переход на декларативное описание (но тут уже не шина будет, а СУБД, хотя для таких вещей подойдет какой-нибудь NoSQL). И да, еще не понятно что проще: REST API или job. Джоб сильно увеличивает качество абстрагирования, но у вызывающего появляется появляется сложная сущность job, которая может сильно повлиять на ее архитектуру (для web-приложения, это хранение job в своей БД или в сессии пользователя, периодическая проверка состояния, вывод пользователю статуса job'а итд).
А переход на декларативное описание - схожий метод, что был применен в системе интеграции с оборудованием, когда евенты заменили скриптом-синхронизатором. Дополнительной фичей тут будет разбиение на системы, которое доступно для администратора - REST API, обычно, дебажит разработчик, а упавший job в супервизоре - админ.