TGViewer
GetAnalyst - Навыки • Системный анализ • Бизнес-анализ GetAnalyst - Навыки • Системный анализ • Бизнес-анализ @getanalysts · 22.6K subscribers
Post #2491 5.86K
💃 Хореография в микросервисах: разбор примера для #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
  • 👍 18
  • ❤ 15
  • 🔥 3
More from @getanalysts
  1. Oct 15, 2026✅ 64 API-термина для системного аналитика ✅ Собрала мини-книгу по API для работы и подгото…
  2. Oct 14, 2026⚡ Если вы уже умеете писать простые SELECT, то следующий шаг, где чаще всего начинается бо…
  3. Oct 13, 2026❌🙅‍♀️🙅‍♂️ Что системному аналитику НЕ нужно уметь в работе с логированием и мониторингом…
  4. Oct 12, 2026📊🔥 Grafana, Kibana, OpenTelemetry: какие инструменты наблюдаемости нужны системному анал…
  5. Oct 11, 2026Мы так заняты тем, что ещё не получилось, что забываем радоваться тому, как далеко уже заш…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →