Sagas (#2)

consists of a sequence of autonomous operations, each immediatelly visible to outer world

responsibility of failures handling to developer (handlers)

transaction manager is responsible for calling handlers

Sagas (#3)

compensation handler defined by developer, called by transaction manager

Saga transaction

The concept of the original paper talks about single node database but it could
be applied to distributed transactions (as was already shown).

Saga could be classified as Base transaction (at least from my understanding)
as it does not lock resources a.k.a locks and letting data of resources being available
for other transactions to work with.

As you could see the transaction handling introduced by Saga requires the application to
define compensation actions or define actions as idempotent (you can repeat operation on the
resource multiple times and you will get the same result - operation being repeated not leading to a different outcome).

Still you can handle all the data integrity yourself in your application and design your system architecture
to handle with failures. It’s up to you if concept of Saga is useful for you or not.