Распределенные транзакции

В монолите все операции (склад, платежи, доставка) можно обернуть в одну ACID-транзакцию. Упала одна — откатились все. Но в микросервисах каждый сервис имеет собственную базу данных. Обычный двухфазный коммит (2PC) здесь работает медленно и ненадежно.

Хорошая новость: есть решение — паттерн SAGA. Плохая новость: он сложнее обычных транзакций и требует продуманного дизайна.

SAGA — это способ обеспечить согласованность данных в распределенных системах. Представь это как цепочку локальных транзакций, которые могут «откатить» друг друга, если что-то пошло не так.

С точки зрения сервисов это будет выглядеть вот так: