Patterns of Distributed Systems (2020)
&gt; What does it mean for a system to be distributed? There are two aspects:
&gt; 1. They run on multiple servers. The number of servers in a cluster can vary from as few as three servers to a few thousand servers.
&gt; 2. They manage data. So these are inherently &#x27;stateful&#x27; systems.<p>It&#x27;s a pity that they don&#x27;t get to the crux of distributed systems because it&#x27;s very well defined and described for ~40 years now. Instead they describe the key characteristics of a distributed system in a very hand-wavy manner.<p>The two <i>fundamental</i> ways in which distributed computing differs from single-server&#x2F;machine computing are.<p>1. No shared memory.
2. No shared clock.<p>Almost every problem faced in distributed systems could be traced to one of these aspects.<p>Because there&#x27;s no shared memory it&#x27;s impossible for any one server to <i>know</i> the global state. And so you need consensus algorithms.<p>And due to lack of shared clock it&#x27;s impossible to order the events. To overcome this software logical clock has to be overlaid on top of distributed systems.<p>Added to this is the failure modes that are peculiar to distributed systems, be it transient&#x2F;permanent link failures and transient&#x2F;permaent server failures.<p>This[1] is a decent description of what I&#x27;ve just described here.<p>I also recommend to read up on some key impossibility results in distributed system. The most famous one being the impossibility of achiving common knowledge.<p>I&#x27;m surprised that someone as reputed as Thoughtworks don&#x27;t describe the topic in more precise terms.<p>[1] <a href="https:&#x2F;&#x2F;www.geeksforgeeks.org&#x2F;limitation-of-distributed-system&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.geeksforgeeks.org&#x2F;limitation-of-distributed-syst...</a>