При создании разных сервисов очередей часто возникает вопрос: «А как лучше реализовать систему уведомлений о событиях в очереди?» Она часто бывает сложнее в реализации, нежели сам сервис очереди. Система распространения уведомлений встречается во многих программных комплексах. Как правило, клиентов у таких систем немного: десятки, реже — сотни.
Давайте обсудим способы построения таких систем в случаях, когда клиентов не сотни, а сотни тысяч.
В куче статей можно встретить тезис, что IT - это такое место, где всё постоянно развивается, и, стоит только отвлечься на полгодика, как ты перестаёшь быть специалистом и прям ну просто никуда уже на работу не устроиться. Дескать, работа программиста - это постоянная учёба. Учёба всю жизнь. Постоянный бег за всё ускоряющимся поездом.
Давайте разберёмся с этим. Может быть, это не поезд, а беличье колесо?
В большом количестве статей, источников микросервисы, помимо всего прочего, представляются как способ построить масштабируемое решение. Рассмотрим на примерах, почему это не так. А так же попытаемся внести свою лепту в извечный вопрос: "Что лучше: монолит или микросервис?"
Очереди - прекрасный инструмент, который практически идеально масштабируется. Не справляется железо? Просто добавили узлов в кластер. Когда очередь присутствует в проекте, то возникает соблазн всё больше функционала реализовывать с её помощью.
О подводных камнях такого пути поговорим в этой статье.
Рано или поздно, применяя очереди, пользователь сталкивается с вопросом использования их совместно с каким-то сервисом, базой данных и т.п.
Не всегда более производительное решение - решение, требующее меньше ресурсов при своей работе, - является лучшим. Часто сопутствующие факторы являются более значимыми: предсказуемость поведения при сбоях, скорость восстановления работоспособности после сбоев и т.п. Рассмотрим это на примере систем межсервисного взаимодействия.