Как обеспечить отказоустойчивость в микросервисном сценарии: заказ оформлен, платёж прошёл, а дальнейший шаг — уменьшение остатка или уведомление — упал?

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

Короткий ответ

Что ответить на собеседовании

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

Подробный разбор

Ответ с пояснениями

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

Уменьшение остатка и уведомление имеют разную критичность: неудачное письмо обычно не требует отмены оплаты, а нехватка товара может требовать компенсации по бизнес-правилу. Outbox помогает надёжно передать события, reconciliation — найти зависшие процессы. Refund или резервирование должны иметь собственные подтверждённые статусы, retries и защиту от дублей.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее