Undo the work performed by a series of steps, which together define an eventually consistent operation, if one or more of the steps fail.
When to use this pattern?
ONLY for operations that must be undone if they fail.
If possible, design your solution to avoid the complexity of requiring compensating transactions.
Considerations
detect eventual consistency Failure.
Not easy to generalized
Idempotent commands
Infrastructure
Original State
Order of steps
Time-out Retry