Вопрос проверяет понимание отказоустойчивости и проектирования систем, способных корректно восстанавливаться после ошибок.
Для отката или компенсации нужно сохранять исходное состояние и контекст операции. Важно знать, что именно было изменено, кем и когда. Также требуется идентификатор операции и её статус. Без этих данных невозможно корректно восстановить систему.
Откат (rollback) — возврат системы в предыдущее состояние,
компенсация — выполнение обратной логики, если прямой откат невозможен.
Перед перечислением важно отметить:
чтобы что-то отменить, нужно точно знать, что и почему было сделано.
Идентификатор операции
Уникальный ID
Связь с бизнес-действием
Тип операции
Что именно делалось
Исходные значения
Балансы
Статусы
Новые значения
Для анализа и аудита
Статус операции
In progress / completed / failed
Временные метки
Время начала и завершения
Внешние системы
Асинхронные эффекты
Неидемпотентные действия
В этих случаях применяют компенсационные операции.
Чем критичнее операция, тем больше контекста о ней нужно хранить. Без сохранённых данных корректный откат или компенсация невозможны.