Distributed Systems
Explore the fundamentals of distributed systems in Python applications, focusing on the benefits and challenges of spreading workloads across multiple nodes. Understand horizontal scalability, fault tolerance, and how to manage increased complexity in distributed environments. This lesson also covers functional approaches to building stateless distributed systems that are easier to scale and maintain.
We'll cover the following...
Definition
“A distributed system is one in which the failure of a computer you didn’t even know existed can render your own computer unusable.” - Lamport (1987)
When an application uses all the CPU power of a node, and you cannot add more processors to your server or switch to a bigger server, you need a plan B.
The next step usually involves multiple servers, linked together via a network of some sort. That means the application starts to be distributed: running not only on one node but on multiple, connected, nodes.
Advantages
Spreading the workload over ...