GetAnalyst - Навыки • Системный анализ • Бизнес-анализ
19.8K subscribers
2.12K photos
75 videos
208 files
1.2K links
Разбор задач на проектирование систем 🚀 Канал для системных аналитиков, бизнес-аналитиков, тестировщиков и менеджеров проектов

Админ @getanalyst
Сайт https://getanalyst.ru
Чат t.iss.one/getanalystchat
Начинающим в IT @getanalyststart

РКН №5013005196
Download Telegram
💬 Всё про брокеры: как работают и зачем нужны 💬

Брокеры
— это посредники в передаче сообщений между системами или сервисами.

Они позволяют асинхронно обмениваться данными и обеспечивают гарантию доставки сообщений.


👉 Принцип работы:

1. Сервис 1 (Producer/ Производитель) хочет отправить данные в Сервис 2 (Consumer/ Потребитель).

2. Сервис 2 в это время может быть перегружен или занят.

3. Чтобы Сервис 1 не ждал, пока Сервис 2 станет доступен, он кладет сообщение в Брокер и продолжает свою работу.

4. Брокер сохраняет сообщение и ставит его в очередь к обработке.

5. Как только Сервис 2 становится доступен, то он забирает сообщение из Брокера и обрабатывает его.


По сути брокеры - это временные Базы Данных,
которые гарантируют, что сообщения (данные) в них будут храниться, пока их не заберут и не обработают соответствующие системы или сервисы.



👉 Брокеры могут использоваться:
+ в сервисной и микросервисной архитектуре (хореография),
+ в событийно-ориентированной архитектуре (EDA),
+ когда нужна фоновая обработка событий в монолите,
+ для асинхронных интеграций.


👉 Брокеры сообщений предлагают два основных шаблона обмена данными:

1. Точка-точка (Point-to-Point Messaging)
Это паттерн, используемый в очередях сообщений, где существует один отправитель и один получатель. Каждое сообщение в очереди отправляется только одному получателю и может быть обработано только один раз.

2. Публикация-подписка (Publish/Subscribe)
В этом паттерне отправитель (producer) публикует сообщения в определённую тему (topic), а подписчики (consumers) подписываются на темы, чтобы получать сообщения.
Все сообщения, опубликованные в теме, доставляются всем приложениям, подписанным на неё.
Применяется в случаях, где несколько систем должны получить одну и ту же информацию.


Возможности и логика работы брокеров отличаются в зависимости от конкретного решения.

Основные решения по брокерам на рынке:
Apache Kafka
RabbitMQ
ActiveMQ
Amazon MQ, Amazon SQS
Яндекс Message Queue (YMQ) - аналог Amazon
и другие.

#АрхитектураGA
Please open Telegram to view this post
VIEW IN TELEGRAM
18👍9🔥6❤‍🔥1👌1
🕺Хореография микросервисов - детальный разбор с примером 💃

👉 Хореография — это архитектурный шаблон взаимодействия микросервисов, в котором бизнес-процессы реализуются как цепочка независимых реакций на события.


Каждый сервис знает только:
▫️ какие события он слушает,
▫️ что делает при их получении,
▫️ какие события публикует дальше.


👉 Интеграция сервисов в таком подходе в основном асинхронная, через брокер сообщений (Kafka, RabbitMQ) / event bus.


👉 Пример хореографии
Оформления заказа с привязанной карты в сервисе доставки еды


🟡 Запуск хореографии:
Пользователь нажимает "Оформить заказ" в web-приложении:

1. Приложение отправляет запрос на API Gateway

2. API Gateway проверяет авторизацию и маршрутизирует заказ в Сервис Заказов

3. Сервис Заказов:
+ обновляет статус заказа в БД на "Ожидает оплаты"
+ публикует событие в Брокер Kafka - "Заказ подтверждён"
❗️ Деньги с пользователя не списаны

4. Сервис Заказов возвращает ответ на API Gateway.

5. API Gateway возвращает ответ с инфо о заказе на web-приложение, где показываем пользователю сообщение "Заказ принят"


🟡 Асинхронная работа - хореография:
Запускается параллельный поток событий. Frontend и пользователь могут идти по своим делам.

1. Сервис Платежи (далее - С) читает событие "Ожидает оплаты" из Kafka и запускает логику списания денег с карты пользователя.

2. Платежи публикует событие "Платеж упешен" в Kafka.


Параллельно:
----
3А. С Уведомлений читает событие "Платеж упешен" из Kafka и отправляет push+sms пользователю

3C. С Заказов читает событие "Платеж упешен" из Kafka и меняет его статус в своей БД на "Оплачен"

3B. Рестораны читает событие "Платеж упешен" и проверяет:
+ кухня не перегружена?
+ доступность блюд?
+ время работы и т.п.

4. Если ок, то С Рестораны публикует событие "Заказ подтверждён".
----

Параллельно:
4А. С Уведомлений читает "Заказ подтверждён"..
4C. С Заказы читает "Заказ подтверждён"..
4B. С Курьеры читает "Заказ подтверждён"..


Далее на картинке к посту 🖼

- конец процесса


#АрхитектураGA #FoodDeliveryGA
20❤‍🔥7🔥3
🔥 7 вопросов с подвохом по Архитектуре: хореография микросервисов + понимание брокеров в EDA 🔥


1️⃣ Когда хореография микросервисов хуже оркестрации?

✔️ Сложные линейные бизнес-процессы с кучей условий (сложный онбординг, платежные цепочки, обращения тех поддержки и др)

✔️ Надо явно видеть шаги процесса и управлять им

✔️ Когда важны SLA и время на выполнение шагов

В таких случаях удобнее, когда:
+ есть компонент, который явно хранит состояние процесса
+ видно “шаги” и переходы по ним
С этим помогает оркестрация.




2️⃣ Сервис записал данные в свою БД, но упал до публикации события. Что произойдёт в хореографии и как это чинить?

Многие говорят «ретраи к брокеру» (повторные запросы) и всё. Но это лишь часть ответа.

Ситуация:
Обработка данных на микросервисе прошла, но событие в брокер не опубликовано → остальные сервисы никогда не узнают об изменении.


Решение:
Transactional Outbox / Outbox pattern:
В одной транзакции к БД с бизнес-данными пишем запись в специальную outbox-таблицу.

Отдельный воркер (фоновый процесс) читает из outbox и публикует событие в брокер, с ретраями.

Также иногда используют Change Data Capture (CDC) по БД - отслеживание изменений.




3️⃣ Как в хореографии реализовать шаг, который зависит сразу от двух событий из разных сервисов?
Например: бонус начисляем только если есть "пользователь зарегистрирован" и "оплачен первый заказ"?

Нужен агрегатор/process manager (отдельный сервис/Kafka Streams и др), который:
+ хранит состояние двух параметров: userId - , orderId
+ пришло первое событие — пометили “жду второе”
+ пришло второе — выполняем действие (начисляем бонус)

Это уже кусочек оркестрации, спрятанный внутри одного сервиса.

Также нужно учесть что делать, если второе событие не пришло.




4️⃣ Как в хореографии реализовать таймаут шага?
Например, оплата должна пройти за 15 минут, иначе заказ отменяем.

Используется process manager / timeout-сервис / scheduler:

1. При старте процесса публикуется событие "оплата началась"

2. Параллельно где-то создаётся “таймер” на 15 минут (например, Cron)

3. Если за 15 минут не пришло событие "Платеж успешен" / "Ошибка оплаты":
+ таймер генерирует событие "Ошибка таймаута по платежу",
+ другие сервисы реагируют: отменяют заказ, снимают резерв и т.п.

Важно понять: управление интервалами времени в работе процесса не решается «само по себе» брокером — нужен компонент, который хранит состояние ожидания.



5️⃣ Биллинг слушает событие "Заказ оплачен" и должен списать деньги ровно один раз. Любое сообщение может прийти дважды. Как вы гарантируете отсутствие двойного списания?

Ошибочный ответ:
«брокер гарантирует доставку ровно один раз»

Реализуем проверки на уровне потребителя события:
+ идемпотентность операций: бизнес-ключ (orderId + paymentId)
+ уникальность в БД на этот ключ
+ таблица processed_messages с messageId и состоянием.



6️⃣ Можно ли построить систему только на хореографии, без оркестрации?

В теории — можно, но:
+ всё равно появятся сервисы-агрегаторы / процесс-менеджеры / scheduler’ы, которые управляют процессами
+ как только один сервис начинает хранить состояние процесса и ждать другие события, он выполняет роль локального оркестратора.

Более правильный ответ: в реальных системах почти всегда смесь подходов хореографии и оркестрации.



7️⃣ Вы добавляете новый микросервис в существующую хореографию процессов. Как сделать так, чтобы он не поломал остальных, когда начнёт слушать существующие события?

Новый сервис должен быть пассивным наблюдателем:
+ слушает существующие события без изменения процесса их работы
+ никакие его действия не должны влиять на текущие цепочки по процессам

Важно:
+ не добавлять обязательные поля в существующие события (сообщения), которые отправляем в брокер
+ не менять JSON (формат сообщений) уже используемых событий
+ если нужно другое поведение — вводить новые типы событий, а не менять старые.



А какие ещё вопросы по брокерам и хореографии вы встречали на собеседованиях на СА? Делитесь в комментариях ✍️


#АрхитектураGA
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥316❤‍🔥2👍2🤩1
GetAnalyst_Kafka_8_шагов_чтобы_разобраться.png
522.6 KB
🚀 8 шагов, чтобы разобраться с брокером Kafka 🚀

1️⃣ Что такое Kafka?
2️⃣ Сообщения в Kafka
3️⃣ Topics & Partitions
4️⃣ Kafka Producer
5️⃣ Kafka Consumer
6️⃣ Kafka Cluster
7️⃣ Сценарии использования Kafka


🎱 Подробнее про Kafka в подкасте GetAnalyst
🔗 Kafka: что нужно знать Системному аналитику


Сохраняйте схему в личный архив.
Это идеальный чек-лист для подготовки к собеседованиям

#АрхитектураGA
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥24❤‍🔥7👍43👎1
📚👩‍💻 Доступ к бесплатному обучению по Архитектуре открыт 👩‍💻📚

Всем, кто уже зарегистрировался, письмо с доступом пришло на почту сегодня утром.

💎 Хореография и оркестрация микросервисов: практика проектирования процессов

🗓 Доступ до 2 декабря [вт]
🕘 ~4 часа, смотрете в удобное время

🔗 Зарегистрироваться


👉 План:
1. Основы архитектуры: монолит и микросервисы
2. Разработка схемы архитектуры
3. Оркестрация процессов: практика
4. Введение в брокеры сообщений (RabbitMQ, Kafka)
5. Хореография процессов: практика


👉 Это не типичный демо-урок, а полноформатное практическое обучение, после которого вы получите реальные инструменты и знания для работы.

Планируйте слот в календаре и смотрите его, пока доступ открыт 🙌

-----
Этот открытый урок - вводное занятие к практической программе Проектирование архитектуры для системных аналитиков
-----

Вопрос? Пишите @getanalyst или [email protected] 🤝
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥167
Последние месяцы я минимум по 10 часов в неделю учусь - лучший технический университет США прокачивает меня в Generative AI. На прошлой неделе, например, разбиралась с библиотеками в Python для обучения LLM-моделей и работы с NLP.

А параллельно с этим я работаю над AI-Акселератором для аналитиков.

Большая загрузка, мало времени на отдых, без выходных больше месяца. Но я полна мотивации и в восторге от того, что получается 🤩


Программа по AI для аналитиков — это не база про ChatGPT.
Я собираю весь тот опыт, который получила за последние 3 года учёбы и работы:
+ принципы работы нейросетей,
+ что надо знать, прежде чем их использовать,
+ как безопасно встроить AI в свою работу,
+ инструменты,
+ развертывание локальных LLM,
+ интеграции по API,
+ автоматизация процессов через low code,
+ где AI реально экономит время, а где только создаёт иллюзию продуктивности.

Мой перфекционист в восторге от содержания 🫠


Для меня это особенно вдохновляющий период в GetAnalyst:

🔹 Мне удалось привлечь экспертов из США, которые делают ревью материалов по отдельным урокам и помогают докрутить контент

🔹 В курсе будут занятия, записанные специально для GetAnalyst экспертом по AI из Стэнфорда

🔹 Много практики, разбор ошибок и лайфхаки


Этот год я сознательно посвятила обучению, чтобы сместить фокус на AI-проекты и работать с новыми клиентами на разработку.
И сейчас искренне рада, что могу делиться своим опытом с вами.

И чем глубже во всё это погружаюсь, тем сильнее вижу - направление всё ещё очень не развито. Здесь ещё можно успеть занять своё место, пока рынок только формируется, и стать передовиком в транформации и улучшении своей профессии.


Так что да, я сейчас тону в презентациях, схемах, записях…

Но именно это зажигает искру и даёт ощущение сильной мотивации и радости 💙
🔥7221❤‍🔥4🤔3😍2
🐇 Брокер RabbitMQ - полный гайд с разбором примера использования в микросервисной архитектуре 🐇

1. Что такое RabbitMQ и зачем он нужен
2. Как работает RabbitMQ
3. Очереди, обменники (exchange), routing и binding key - ключевая терминология и внутреннее устройство брокера
4. Типы обменников: direct, fanout, topic, headers
5. Пошаговый разбор примера использования RabbitMQ в микросервисной архитектуре

Подробно разбирали брокер в подкасте:
🎧 RabbitMQ и его отличия от Kafka: что важно знать системным аналитикам

Сохраняйте в закладки и делитесь с коллегами 🔖

#АрхитектураGA
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
28🔥16❤‍🔥15😍2👍1
RabbitMQ - исследование через CloudAMQP.pdf
5.9 MB
🐇 Брокер RabbitMQ - практическое руководство по самостоятельному развёрыванию и тестированию через CloudAMPQ 🐇

Один из самых удобных способов “потрогать” RabbitMQ руками, не поднимая инфраструктуру у себя - использовать облачный сервис CloudAMQP.

В нём можно в режиме онлайн:
+ развернуть собственный брокер RabbitMQ,
+ посмотреть его настройки,
+ поменять параметры,
+ поэкспериментировать с обменниками и очередями,
+ отправлять сообщения в брокер и тут же их получать.


Подготовила для вас практический гайд по исследованию RabbitMQ через CloudAMQP, в котором вы пошагово сможете:
1. зарегистрироваться в инструменте;
2. создать свой виртуальный сервер с брокером RabbitMQ;
3. настроить exchange и привязанные к нему очереди;
4. задать bindings и routing keys;
5. протестировать отправку сообщений и чтение их из очередей, без необходимости писать код.


Это пошаговое руководство с картинками 🤩

Идеально, если вы только начинаете знакомство с брокерами сообщений, хотите сделать первые уверенные шаги и понять, в какую сторону двигаться дальше.

Скачивайте, сохраняйте гайд и пробуйте инструмент на практике 🤝


P.S. Доступ к CloudAMQP из России может требовать использование VPN.

#АрхитектураGA
Please open Telegram to view this post
VIEW IN TELEGRAM
25👍9🔥6❤‍🔥1
🔥👩‍💻 Доступ к бесплатному обучению по Архитектуре завершается сегодня 👩‍💻🔥

Сегодня последний день, когда открыт доступ к практическому занятию:


💎 Хореография и оркестрация микросервисов

Формат: запись ~4 часа
, смотрите в удобное время
Доступен только до 23:59 (по Мск).

После урока вы:
понимаете, когда выбирать оркестрацию, а когда хореографию;
не теряетесь в схемах с брокерами и событиями;
можете уверенно обсуждать эти темы на проектах и собеседованиях.


Если ещё не регистрировались:
🔗 Зарегистрироваться

Если уже регистрировались - ссылку на занятие сегодня утром продублировали в письме на e-mail.


-----

👉 Отзывы аналитиков, которые уже успели посмотреть занятие:

Олеся
полезно и довольно доступно! Ранее
пыталась смотреть подобный материал от другого спикера и только сильнее запуталась
, сегодня многие моменты
для
себя прояснила

Юлия
Смотрела в записи, очень полезный вебинар. Для меня
стали понятнее процессы оркестрации и хореографии
. Спасибо огромное!


Арсений:
Очень информативно, доходчиво, шикарные примеры и практика. Спасибо!


Галина:
Интересно, много записала себе и как понимание брокеров, и для понимания Саги)

Алексей:
Всё понравилось, как всегда у Екатерины - много практики, глубокое понимание темы, позитив.


-----

👉 Это полноформатное обучение, после которого вы получите реальные инструменты и знания для работы на проектах с микросервисной архитектурой.

Успевайте посмотреть занятие сегодня, больше возможности не будет!


-----

А если вы нацелены на рост до Senior системного аналитика и планируете работать с микросервисной архитектурой — приглашаем на практическую программу:

👉
Проектирование архитектуры

-----

Вопросы? Пишите @getanalyst или [email protected] 🤝
Please open Telegram to view this post
VIEW IN TELEGRAM
11🔥6❤‍🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
⭐️ Kafka - всё, что нужно знать Системному аналитику 🚀

Apache Kafka — это распределённая платформа потоковой обработки данных.

Предназначена для публикации, хранения и обработки событий/сообщений в реальном времени.


Основные компоненты:

✔️ Продюсеры (Producers)

1) Генерируют сообщения/события к обработке и отправляют в топики (темы).

2) Определяют, в какую партицию топика записывать данные: автоматически или по заданным правилам.

3) Могут быть чем угодно: микросервисы, устройства IoT и другие приложения.

4) Поддерживают режимы отправки:
+ Синхронный — ждёт подтверждения от Kafka перед отправкой следующего сообщения.
+ Асинхронный — отправляет сообщения без ожидания ответа.

5) Могут гарантировать доставку с разными уровнями подтверждения (acks):
+ acks=0 — без ожидания подтверждения (возможна потеря данных, высокая скорость).
+ acks=1 — подтверждение только от лидера партиции (среднее).
+ acks=all — подтверждение от всех реплик (максимальная надёжность).


✔️ Потребители (Consumers)

1) Подписываются на один или несколько топиков и получают сообщения/события.

2) Могут работать как отдельные клиенты или объединяться в группы (Consumer Groups) для параллельной обработки сообщений.

3) В группе консьюмеров каждый участник обрабатывает свою часть партиций.

4) Kafka гарантирует, что каждое сообщение будет обработано хотя бы одним потребителем в группе.

5) Модели доставки сообщений:
+ at-least-once — как минимум 1 раз, возможны дубликаты.
+ exactly-once — ровно один раз.


✔️ Топики (Topics) — логическая тема, куда продюсеры отправляют сообщения, а потребители их читают


✔️ Партиции (Partitions)
— подмножество данных внутри топика, которое позволяет распределять нагрузку и масштабировать обработку сообщений. Каждый топик состоит из одной или нескольких партиций


✔️ Брокер (Broker) — сервер Kafka, который отвечает за хранение, управление и передачу данных внутри кластера


✔️ Кластер — это группа брокеров, работающих вместе для масштабирования и распределённой обработки данных


#АрхитектураGA
Please open Telegram to view this post
VIEW IN TELEGRAM
19👍8❤‍🔥7👏1😍1
This media is not supported in your browser
VIEW IN TELEGRAM
⭐️ Архитектура Kafka - чек-лист: топики, партиции, брокеры, кластеры ⭐️


✔️ Топики (Topics)

1) Логическая категория или тема, куда Продюсеры отправляют сообщения, а Потребители их читают

2) Представляют собой поток сообщений, где каждое имеет: ключ, значение, метаданные

3) Не удаляют сообщения сразу после обработки — данные хранятся в топике в течение заданного времени

4) Могут быть разделены на партиции, что позволяет распределять нагрузку между Продюсерами и Консьюмерами


✔️ Партиции (Partitions)

1) Каждый топик состоит из одной или нескольких партиций (разделов)

2) Сообщения внутри партиции хранятся в строгом порядке (FIFO — "первым пришёл, первым обработался")

3) Разные партиции могут обрабатываться параллельно, что увеличивает производительность Kafka

4) Каждое сообщение в партиции получает уникальный порядковый номер (offset), который используется Потребителями для чтения данных

5) Продюсеры могут отправлять сообщения в партиции автоматически или по определённому ключу (например, все заказы одного клиента попадут в одну партицию)

6) Один потребитель из Группы Консьюмеров читает данные только из своей партиции, что позволяет распределять нагрузку.

7) Повышение надежности обеспечивается через репликацию: выделяют Leader Replica (основная копия данных партиции) и Follower Replica (копирует данные лидера в синхронном или асинхронном режиме)


✔️ Брокеры (Brokers)

1) Хранят топики и их партиции

2) Обрабатывают запросы Продюсеров на запись и Консьюмеров на чтение данных

3) Управляют репликацией партиций для отказоустойчивости

4) Автоматически перераспределяют нагрузку при добавлении новых брокеров в кластер



✔️ Кластер (Cluster)

1) Это группа брокеров, работающих вместе для масштабирования и распределённой обработки данных

2) Использует ZooKeeper или KRaft для координации (назначает лидеров партиций, отслеживает состояние брокеров)

3) Позволяет добавлять новые брокеры без остановки системы

4) Поддерживает автоматическое восстановление при сбоях отдельных узлов


#АрхитектураGA
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥222
📩 Kafka vs RabbitMQ: что выбрать? Детальное сравнение 📩

В распределённых системах Kafka и RabbitMQ очень часто ставят в один ряд.

В результате Kafka пытаются использовать как обычную очередь, а RabbitMQ — как платформу стриминга.

❗️ Хотя на самом деле они решают принципиально разные задачи.


Ниже разбираемся как выбрать правильный инструмент под ваш проект и сценарий:

📌 Какую задачу решает каждый инструмент

Apache Kafka — платформа стриминга событий

Kafka — это распределённый лог событий, а не “очередь сообщений”.

Её сильные стороны:
+ приём большого потока событий
+ real-time аналитика
+ хранение всей истории изменений, а не только текущего состояния (event sourcing)
+ хранение событий как “системы записи”
+ горизонтальное масштабирование

Проще думать о Kafka так:
“бесконечный лог, где события можно читать дважды", а не “очередь, из которой забрали и забыли".


RabbitMQ — брокер сообщений для распределения работы

RabbitMQ — это классический message broker, который отлично подходит для:

+ надёжной доставки сообщений
+ сложной маршрутизации
+ распределения нагрузки между воркерами
+ request/response и RPC-паттернов
+ транзакционного обмена сообщениями.

Образно: умный почтальон, который доставит нужное сообщение нужному потребителю и точно проследит, было ли оно обработано.



📌 Архитектура и модель сообщений

Модель хранения:
Kafka — персистентный лог, сообщения не “исчезают” после чтения, можно переиспользовать.
RabbitMQ — классическая очередь: сообщение забрали → его в очереди больше нет (если не использовать DLQ, плагины и т.п.).

Повторная обработка сообщений:
Kafka — поддержано “из коробки”
RabbitMQ — неестественно, приходится докручивать с помощью плагинов (DLQ, повторные публикации и т.д.).

Порядок сообщений:
Kafka → порядок гарантирован внутри партиции (этого достаточно для большинства event-driven кейсов)
RabbitMQ → порядок гарантирован в рамках одной очереди, но если несколько конкурирующих потребителей – порядок быстро ломается

Пропускная способность:
Kafka → миллионы сообщений в секунду
RabbitMQ → десятки/сотни тысяч, сильно зависит от настроек и сценариев.



📌 Типичные ошибки

1. Использовать Kafka как обычную очередь
Kafka плохо подходит для:
+ коротких задач “выполнил и забыл”;
+ простых приложений.
Результат: переусложнённая инфраструктура, дорогая поддержка и кластеры “на всякий случай”.

2. Пытаться сделать из RabbitMQ “стриминг-платформу”
RabbitMQ начинает "задыхаться", если:
+ события нужно хранить долго
+ важна возможность повторного чтения сообщений
+ несколько независимых потребителей должны прочитать одни и те же данные
+ поток вырастает до миллионов событий.

3. Игнорировать требования к порядку сообщений
В Kafka порядок сохраняется внутри партиции.
В RabbitMQ порядок только внутри очереди, и то, пока один потребитель.
Как только в систему добавляют несколько потребителей, “красивый” порядок перестаёт совпадать с реальностью.

4. Использовать Kafka, не понимая consumer groups

Consumer group в Kafka:
+ даёт параллелизм обработки
+ гарантирует, что одну партицию читает только один consumer группы
+ напрямую влияет на сохранение порядка.
Неправильно настроил группы → сам себя лишил гарантий по порядку.

5. Недооценивать сложность эксплуатации Kafka

Kafka требует:
+ настройки и поддержки кластера
+ планирования партиций
+ стратегии хранения и ретенции данных
RabbitMQ в этом смысле простее в разы.
Использовать Kafka "на всякий случай" в маленьком проекте — дорогое удовольствие.



📌 Когда и что выбирать

👉 Kafka:
+ Стриминг, логи и аналитика в реальном времени
+ Event-driven микросервисы
+ Высокая нагрузка и масштабирование (ожидаете миллионы событий в секунду)
+ Event Sourcing / CQRS
+ Повторная обработка сообщений

👉 RabbitMQ:
+ Фоновая обработка задач/джобов
+ Командный формат сообщений (“сделай X”)
+ Нижкая задержка в обработке задач
+ Request–response поверх очередей
+ Сложная маршрутизация
+ Транзакционный обмен сообщениями (платёжные сценарии, финансовые процессы, процесс обработки заказа в e-commerce)
+ Простая эксплуатация


#АрхитектураGA
👍3317🔥7💯4❤‍🔥3