Two-Phase Commit (2PC) — это протокол, гарантирующий консистентность транзакций в распределенных системах. Протокол разделяется на две фазы: на фазе подготовки координатор определяет, могут ли все участники выполнить транзакцию, а на фазе подтверждения координатор решает, должна ли транзакция быть применена или отклонена. В отличие от паттерна Saga, где каждая операция может быть отдельной транзакцией, и откат может быть выполнен с помощью компенсационных действий, 2PC гарантирует, что либо все операции в транзакции успешно применяются, либо ни одна из них не применяется. Это означает, что для применения 2PC все участники должны поддерживать блокировку на время выполнения всей транзакции, что может быть неприемлемо для некоторых приложений. Outbox Pattern обеспечивает атомарность на уровне отдельного микросервиса, гарантируя, что либо обновление данных, либо отправка сообщения, либо оба этих действия успешно выполняются. Это позволяет асинхронно передавать сообщения между микросервисам