Describir: Designing distributed systems :