Спроектируй архитектуру отказоустойчивой системы обработки платежей, чтобы при падении банковского шлюза пользователи не видели ошибок 500, но платежи гарантированно обрабатывались

При недоступном шлюзе сохраняйте платёж как принятую к обработке операцию и возвращайте её статус, а не ложный успех. Надёжность строится на идемпотентности, очереди и сверке результата.

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

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

При недоступном шлюзе сохраняйте платёж как принятую к обработке операцию и возвращайте её статус, а не ложный успех. Надёжность строится на идемпотентности, очереди и сверке результата.

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

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

При недоступном шлюзе сохраняйте платёж как принятую к обработке операцию и возвращайте её статус, а не ложный успех. Надёжность строится на идемпотентности, очереди и сверке результата.

После долговечной записи операции клиент получает идентификатор и pending. Worker обращается к банку с устойчивым ключом, использует ограниченные повторы и circuit breaker. Если ответ потерян, сначала выясняется статус, чтобы не списать деньги повторно. Webhook проверяется и обрабатывается идемпотентно, периодическая сверка восстанавливает пропуски. Пользователь видит ожидание или окончательный отказ. Абсолютную гарантию успешной оплаты дать нельзя: возможны отказ банка и истечение срока; гарантируют сохранность и доведение операции до определённого состояния.

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

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

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

Подробнее