Designing Distributed Systems

I recently saw a Microsoft post on Twitter advertising this free e-book, so I gave it a go and it’s quite an interesting easy read. It’s only 160 pages, so good stuff for a few evenings. If you are interested in distributed systems..microservices..container and so on, you should read it.

You can download it here:

Designing Distributed Systems

This book gives you an introduction into some of the basic patterns you normally use in distributed systems. If you are like me, you probably will have used at least a few of them but might have not heard the correct “term” of it. That’s fine, I’m really bad it, it’s basically the reason I’m bad at those tech knowledge questions in interviews, where you have to explain pattern xy but you have no idea, until they explain it to you quick and you think, well I have used that for ages. That’s why I like technically discussions about actual work you did more than stupid questions.

Coming back to the book and its content. The book contains four parts:

1. Quick overview about distributed systems and patterns itself

2. Single-Node Patterns – weird because its about distributed systems but it basically all comes down to groups of containers and possible patterns you can you use inside those groups. Those containers are basically your foundation of your distributed system anyway, at least in this book. Patterns explained are:

  • Sidecar Pattern
  • Ambassadors
  • Adapters

3. Serving Patterns – This is basically your introduction to microservices. It builds onto the patterns and groups of containers you read about in part 2. Those groups are the building blocks for larger systems – distributed systems. And with distribution comes a need of reliability, scalability and separation of concerns. To achieve some of it, these are the patterns explained:

  • Replicated Load-Balanced Services
  • Sharded Services
  • Scatter/Gather
  • Functions and Event-Driven Processing
  • Ownership Elections

4. Batch Computational Patterns – So part 3 was mainly about long-running processes but this chapter is now about processes which only run for a short time like batch processing for a daily report. Patterns in this part are:

  • Work Queue Systems
  • Event-Driven Batch Processing
  • Coordinated Batch Processing

It’s obviously only a quick introduction into the basics of distributed systems and its patterns – but it gives something to build on.

There are also labs you can try: https://github.com/brendandburns/designing-distributed-systems-labs

 

Leave a Reply

Your email address will not be published. Required fields are marked *