shlogg · Early preview
Thomas Johnson @tomjohnson3

Designing Distributed Systems: 6 Backend Best Practices

Minimize dependencies, monitor perf & use std comm protos for backend design in distributed systems. Define structured design process & submit review before coding. Simplify communication between components.

Most modern software systems are distributed systems. Nowadays they are a must for various reasons. 
For example: 
(a) data, requests volume, or both are frequently too large to be handled by a single machine, 
(b) products are often deployed in multiple locations, and 
(c) all services need to be scalable (just think of how 'impactful' a simple Google search can be: it could touch at least 50+ separate services and thousands of machines!).
Designing a distributed system, however, isn't easy. There are so many areas to master: communication, security, reliability, concurrency, and so many more...