ты наверное в курсе что я увлекаюсь микросервисами, и до сих пор в них нихрена не шарю :)
основные траблы можно объединить в несколько пулов трабл: транспорты, мониторинг/логгирование/дебаг, деплой/оркестрация
по каждому из пулов куча инфы для обсуждения на самом деле, все офигенски интересно :) щас конкретно по транспортам расскажу свой поток сознания:
за последние два года я перемерил кучу их...
фулер в своих статьях все время говорит "глупые каналы передачи данных, умные эндпоинты"... на самом деле это только один из паттернов проектирования, то есть не истина высеченая в камне
все их виды можно разделить на две группы: pull и push
все push-паттерны это условно говоря "пушим логику куда ни попадя": http/https (со всевозможными rest, graphql и прочим), http2 (персистентные конекшны) и тп
проблема этих паттернов в том что, условно, если сервису А надо отрабатывать действия из сервиса Б то надо чтобы сервис Б после действия разослал всем уведомления "я сделал это", то есть отсылка уведомлений спецом прописывается в бизнес-логике... жутко неудобно (стоимость модификаций большая)
pull-паттерны это то что называется "event-driven микросервисы": сюда попадают такие протоколы как ampqp, mqtt и прочие, грубо говоря все кому не лень эмиттят события и те кому лень их слушают
любые действия эмитятся глобально и все кому надо подписываются... удобно но не очень (потом начинаешь задумываться о безопасности, нагрузке на каналы и тп)
вот и получается: с одной стороны, щас популярны push - все под них щас заточено но они ограничены и есть доструя решений исправляющих их слабости (kubernetes/istio/linkerd/куча-непонятных-слов), с другой стороны pull нигде не рекламируются но неистово юзаются во всяких крутых конторах и имеют все что надо из коробки
и там и там есть свои аутсайдеры, есть чемпионы
так, размышлений ради решил написать, и вдруг кто захочет ковырять все это под пиво сможем обсудить :)