← Все новости
[Перевод] Что делать, если HTTP‑запрос прошёл, а транзакция в БД откатилась?

[Перевод] Что делать, если HTTP‑запрос прошёл, а транзакция в БД откатилась?

Если ваш сервис одновременно пишет в БД и дёргает внешние API, прямо сейчас у вас есть как минимум один из этих сценариев:– деньги списаны, заказа в базе нет;– товар на складе заблокирован навсегда под «призрачный» заказ;– курьерская служба везёт посылку, которую никто не заказывал.Это не баги в коде – это архитектурная проблема двойной записи. И у неё есть классическое решение: паттерны Transactional Outbox, Result Table и Saga Compensation. Под катом – не только теория, но и живой рабочий проект на Scala, который можно склонировать и запустить. Читать далее