Получить доступ

Что такое saga pattern в микросервисах?

SeniorSaga и CDC
Ещё спрашивают так:
  • Как сделать транзакцию через несколько микросервисов?
Коротко

Сага — бизнес-процесс как цепочка локальных транзакций сервисов; при сбое шага выполняются компенсирующие действия для уже сделанных шагов.

  • Вместо распределённой транзакции и двухфазного коммита
  • Компенсация — бизнес-действие (вернуть деньги), а не откат
  • Хореография (события) или оркестрация (координатор)

А ещё Промежуточные состояния видны — изоляции нет, нужны статусы и защита от аномалий

Так подсказку видит пользователь sotto на живом собеседовании — за пару секунд, пока вы думаете вслух.

Подробно

Она нужна, когда нельзя или не хочется держать distributed transaction между сервисами. Каждый шаг — локальная транзакция в своём сервисе; при сбое запускаются компенсирующие действия (бизнес-обратные операции, не rollback БД), и они должны быть идемпотентны, т.к. могут повториться. Состояния процесса должны явно отражать eventual consistency и возможные компенсации.

Что хотят услышать

  • Определение саги и почему не 2PC.
  • Компенсации.
  • Хореография и оркестрация.
  • Отсутствие изоляции.

Частые ошибки

  • Думать, что компенсация — это технический rollback или точный undo (это бизнес-действие, и часто неточное).
  • Забывать про идемпотентность компенсаций.
  • Не проектировать промежуточные статусы процесса.

Что спросят дальше

  • Чем choreography отличается от orchestration?
  • Когда saga хуже простой монолитной транзакции?

Разбор темы

Связанные вопросы

Закрытая бета

Подсказки на собеседовании — в реальном времени

sotto слышит вопрос интервьюера и показывает короткий ответ и план, как в блоке «Коротко». Оставьте контакт — пришлём доступ и промокод.

  • Промокод на 2 часа — сверх пробных 30 минут
  • Программа для Windows — скачать сразу, войти — через Яндекс ID или VK ID
  • Прямая связь с разработчиком: что улучшить — сделаем