Designing distributed systems : patterns and paradigms for scalable, reliable services / - Burns, Brendan,