Вопрос проверяет понимание атомарности операций и распределённых отказов.
Если в одном endpoint выполняется несколько побочных операций, появляется риск частичного выполнения. Например, данные в БД сохранились, а сообщение в очередь не отправилось. Это приводит к неконсистентному состоянию системы. Такие ошибки сложно обнаруживать и исправлять.
HTTP-endpoint часто выглядит как «одна операция», но внутри может быть несколько независимых систем.
Перед перечислением важно отметить, что эти операции не образуют единую транзакцию.
Нарушение согласованности данных
БД обновилась
внешний сервис упал
очередь не получила событие
Сложность восстановления
нет информации, что именно выполнилось
невозможно безопасно повторить запрос
Повторные запросы клиента
возможны дубли
возможны повторные списания
Рост сложности кода
много try/except
ручное управление откатами
save_to_db()
call_external_service()
publish_event()
Любой сбой в середине оставляет систему в некорректном состоянии.
outbox pattern
асинхронная обработка
компенсационные операции
идемпотентные endpoint’ы
Чем больше побочных эффектов в одном endpoint, тем выше риск неконсистентности и скрытых ошибок.