Почему компенсацию в саге называют бизнес-действием, а не откатом транзакции?
- Что такое компенсирующая транзакция?
Откатывать нечего: шаг уже закоммичен и его последствия видны. Компенсация — новая бизнес-операция, отменяющая эффект по смыслу: вернуть деньги, снять резерв, отправить письмо об отмене.
- Компенсация может не восстановить состояние полностью: письмо уже прочитано
- Должна быть идемпотентной и повторяемой
- Шаги без компенсации (отправка товара) ставят в конец саги
А ещё Порядок: сначала проверяемые и отменяемые шаги, необратимые — последними
Подробно
Списанные деньги возвращают отдельным переводом, и в выписке останутся обе операции; отправленное письмо не отзывают, а шлют второе с уведомлением об отмене. Отсюда следуют практические требования, которые ценят на собеседовании. Компенсация обязана быть идемпотентной, потому что её тоже могут повторить. Она может не иметь полного обратного действия — письмо не вернуть, и это нужно закладывать в порядок шагов: необратимые операции ставят как можно позже. Возникает и промежуточная видимость: между шагом и компенсацией другие успевают увидеть незавершённое состояние, поэтому сценарий проектируют с явными статусами вроде ожидания оплаты, а не делают вид, что всё атомарно.
Что хотят услышать
- Почему это не откат.
- Компенсация как бизнес-операция с примерами.
- Идемпотентность и порядок шагов.
Частые ошибки
- Проектировать сагу так, будто она даёт атомарность.
- Ставить необратимые шаги в начало процесса.
Проверьте себя
Один верный вариант. Подумайте, потом откройте ответ.
Показать варианты и ответ
- ✗Потому что компенсация выполняется вручную оператором
- ✓Транзакция уже закоммичена и видна другим — её можно только уравновесить обратным действием
- ✗Потому что компенсация технически откатывает транзакцию, просто делает это в другом сервисе и позже
- ✗Потому что компенсации нужны только в оркестрации
Что спросят дальше
- Что такое семантическая блокировка в саге?
- Как порядок шагов влияет на возможность компенсации?
Разбор темы
- Saga, CDC и event-driven consistency
Почему 2PC не подходит, сага и компенсации, хореография vs оркестрация, CDC и outbox-relay, eventual consistency и границы.
Связанные вопросы
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.