Abstract
The problem of making several independent systems agree on a single outcome is
older than most of the technology used to solve it. Historically, one of the
first protocols able to provide this synchronization was 2PC ( two-phase commit )
that the application servers era made an ordinary feature of enterprise development.
Later lightweight frameworks, service-oriented and microservices architectures
have made the same guarantee considerably harder to obtain.
This article follows that problem from its formalization in the X/Open Distributed
Transaction Processing to the present situation. It then examines two working
implementations of an identical use case, one using XA and two-phase commit, the
other using the saga pattern, as specified by MicroProfile LRA, and compares them
on evidence rather than on preference.…