A microservice-based application is a distributed system. The overall system consists of multiple smaller services, and together these services provide the overall application functionality. This architectural style provides numerous benefits, it has several limitations as well. One of the major problems in a microservice architecture is how to handle a transaction that spans across multiple services. Before moving on to more detail about SAGA you should need to know about ACID properties of transactions.
#1. ACID properties of Transactions
ACID refers to the four key properties of a transaction: atomicity, consistency, isolation, and durability.
Atomicity: All changes to data are performed as if they are a single operation. That is, all the changes are performed, or none of them are. For example, in an application that transfers funds from one account to another, the atomicity property ensures that, if a debit is made successfully from one account, the corresponding credit is made to the other account.
Consistency: Data is in a consistent state when a transaction starts and when it ends. For example, in an application that transfers funds from one account to another, the consistency property ensures that the total value of funds in both the accounts is the same at the start and end of each transaction.
Isolation: The intermediate state of a transaction is invisible to other transactions. As a result, transactions that run concurrently appear to be serialized. For example, in an application that transfers funds from one account to another, the isolation property ensures that another transaction sees the transferred funds in one account or the other, but not in both, nor in neither.
Durability: After a transaction successfully completes, changes to data persist and are not undone, even in the event of a system failure. For example, in an application that transfers funds from one account to another, the durability property ensures that the changes made to each account will not be reversed.
#2. What Does Two-Phase Commit (2PC) Mean?
A two-phase commit is a standardized protocol that ensures that a database commit is implemented in the…