Building distributed systems is notoriously difficult due to the challenges of nondeterminism and partial failures.Nondeterminism refers to the unpredictable outcomes that arise in distributed systems due to factors such as network delays and message reordering.Debugging and reproducing issues in distributed systems become extremely difficult due to the unpredictable nature of nondeterminism.Partial failures, unlike all-or-nothing failures in monolithic systems, further complicate the stability and reliability of distributed systems.