💃 Хореография в микросервисах: разбор примера для #GreenChargeGA 🕺
Хореография — это подход, при котором каждый сервис самостоятельно реагирует на события, происходящие в системе.
В отличие от оркестрации, здесь нет центрального управляющего компонента, который знает про все шаги алгоритма и все микросервисы для выполнения процесса.
Координация действий происходит через брокер сообщений: Kafka, RabbitMQ и др.
👉 Важно для понимания!
Брокер это место хранения сообщений, как временная БД, и он ничем не управляет, а только временно хранит события к обработке.
Каждый микросервис:
✅ подписан на определённые события в брокере,
✅ обрабатывает их, когда они появляются,
✅ не знает, какие другие сервисы участвуют в процессе.
👉 Пример 1:
Завершение зарядки электромобиля на станции GreenChargeGA
🟢 После завершения сессии зарядки Сервис Телеметрии публикует событие charging.finished в брокер.
Что происходит дальше:
1. Сервис Платежей получает событие charging.finished, списывает средства с карты пользователя и публикует событие payment.success.
2. Сервис Лояльности слушает событие об успешной оплате payment.success и начисляет бонусы. После чего генерирует событие о добавлении бонусов loyalty.bonusAdded.
3. Сервис Уведомлений слушает события payment.success и loyalty.bonusAdded и отправляет пользователю уведомление с итогами.
Таким образом, за счёт правильно спроектированной событийной модели, мы можем организовать асинхронное выполнение всей цепочки действий — без необходимости задерживать пользователя у зарядной станции.
Все шаги выполняются в фоне, это пример гибкой и масштабируемой архитектуры.
👉 Пример 2
Пользователь завершил настройку профиля
После регистрации пользователь может пройти начальную настройку профиля: указать номер автомобиля, предпочитаемые станции, способ оплаты и т.д.
Сразу после завершения настройки можно запустить ряд независимых процессов, реализованных через хореографию:
🟢 Событие profile.setupCompleted — публикуется в брокер от Сервиса Управления Пользователями, когда пользователь завершил заполнение профиля.
Подписанные микросервисы:
🔸 Сервис Уведомлений — отправляет приветственное сообщение с подсказками по началу использования.
🔸 Сервис Лояльности — активирует стартовые бонусы в рамках приветственной кампании.
🔸 Сервис Аналитики — сохраняет событие завершения настройки для последующего анализа поведения новых пользователей.
Все эти действия автономны и могут запускаться независимо, без координации друг с другом. Ни один из них не зависит от результата другого — если, например, уведомление не ушло, это не повлияет на выдачу бонусов или сбор аналитики.
Преимущества хореографии:
💫 Масштабируемость:
Можно легко подключить новые сервисы, которые будут реагировать на события.
Например, маркетинговый сервис, который будет запускать цепочку писем — просто подписав его на profile.setupCompleted.
💫 Устойчивость:
Ошибки одного сервиса не мешают другим.
💫 Параллельность:
Все действия выполняются максимально быстро для пользователя, без задержек на обработку.
Часть схемы архитектуры проекта с хореографией:
🔗 [открыть схему архитектуры C4]
#АрхитектураGA
Post #2491
5.86K
- 👍 18
- ❤ 15
- 🔥 3