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

Почему компенсацию в саге называют бизнес-действием, а не откатом транзакции?

SeniorSaga и CDC
Ещё спрашивают так:
  • Что такое компенсирующая транзакция?
Коротко

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

  • Компенсация может не восстановить состояние полностью: письмо уже прочитано
  • Должна быть идемпотентной и повторяемой
  • Шаги без компенсации (отправка товара) ставят в конец саги

А ещё Порядок: сначала проверяемые и отменяемые шаги, необратимые — последними

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

Подробно

Списанные деньги возвращают отдельным переводом, и в выписке останутся обе операции; отправленное письмо не отзывают, а шлют второе с уведомлением об отмене. Отсюда следуют практические требования, которые ценят на собеседовании. Компенсация обязана быть идемпотентной, потому что её тоже могут повторить. Она может не иметь полного обратного действия — письмо не вернуть, и это нужно закладывать в порядок шагов: необратимые операции ставят как можно позже. Возникает и промежуточная видимость: между шагом и компенсацией другие успевают увидеть незавершённое состояние, поэтому сценарий проектируют с явными статусами вроде ожидания оплаты, а не делают вид, что всё атомарно.

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

  • Почему это не откат.
  • Компенсация как бизнес-операция с примерами.
  • Идемпотентность и порядок шагов.

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

  • Проектировать сагу так, будто она даёт атомарность.
  • Ставить необратимые шаги в начало процесса.

Проверьте себя

Один верный вариант. Подумайте, потом откройте ответ.

Показать варианты и ответ
  • ✓Локальная транзакция уже закоммичена и видима другим, поэтому отменить её нельзя — можно лишь выполнить обратное по смыслу действие с собственными следами
  • ✗Потому что компенсация выполняется вручную оператором
  • ✗Потому что компенсация технически откатывает транзакцию, просто в другом сервисе
  • ✗Потому что компенсации нужны только в оркестрации

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

  • Что такое семантическая блокировка в саге?
  • Как порядок шагов влияет на возможность компенсации?

Разбор темы

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

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

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

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

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