Three years ago, I read a book called Distributed Systems. Design Patterns by Brendan Burns.
The author is one of those who stood at the origins of kubernetes, so his experience in the design of distributed systems is quite relevant:) The book seemed good, but at the same time too simple. But due to this, it is perfect for beginners entering the confusing path of distributed systems:) The book consists of 3 parts: Single-node design patterns Design patterns of constraining systems Design patterns for batch computing systems All patterns are given in the context of containers and their orchestration, the book contains practical examples, for which the installation of kubernetes and its primitives, such as pods, deployments, services, etc., are used. Towards the end of the book, you’ll try using helm to unfold etcd, kafka, and the like.
The first part will examine the patterns: sidecar: for https, dynamic configuration and metrics Ambassador: to use sharded service and to split traffic for testing different versions adapters: monitoring, journaling
The second part deals with: Replication: for stateless service, sticky sessions, caching, ... Sharding: Consistent hash, sharding of replicated services, scatter-gather: distributed search by document n FaaS and events: advantages and disadvantages of FaaS, implementation of decorators on functions Owner choice: Loki for distributed systems
The third part discusses the design patterns of batch computing systems:
- queue-based systems
- event-oriented batch processing Coordinated batch processing
In general, the book is good for beginners, as the author just talks about a bunch of important concepts.
#DistributedSystems #SoftwareArchitecture #Architecture #Software #SystemDesign