Fault Tolerance in Distributed Systems essay