This document discusses strategies for dealing with inconsistency in distributed systems. It begins by introducing the concepts of atomicity, consistency, isolation, and durability (ACID) and how distributed systems violate the isolation aspect of ACID. It then discusses various strategies for handling failures and inconsistencies like two-phase commit, idempotent operations, retrying operations, and sagas with compensation. It argues that orchestration is preferable to choreography for long-running processes. Finally, it discusses workflow engines and platforms that can be used to implement orchestration.