Designing Reliable Distributed Systems - Peter Csaba Ölveczky (Springer, 2017)