The fourth edition and the definitions
The episode opens with backstory: the club switched horses the day before, taking the fourth edition instead of the third — it appeared very recently, nobody remembers the date, and one host thinks 8 January. Tanenbaum is known for his books on operating systems, computer architecture and networks; van Steen, judging by a chat before the stream, pulls more of the work with each edition, and the participants noticed even the surname order changed: in the 2007 second edition on the authors' site it ran the other way, and some ten years later the authorship swapped. The new version was posted quietly, yet after Alexander's post many turned out to have been waiting for it — the way one waits for New Year to take up sport. The examples are fresher: covid, the internet of machines, and blockchain, which by now, the participants joke, is not even topical.
The heart of the chapter is the definitions. The authors troll the familiar picture of three graphs and suggest looking instead at two perspectives: either we join parts that already exist — a story about integration — or we attach external resources because our own capacity has run out. The first path, by a new observation, leads to decentralised systems, the second to distributed ones; the definitions differ by one word: a decentralised system necessarily spreads processes and resources across several computers, while for a distributed one it is sufficient that they be spread. The chapter opening took twenty minutes of stream time: one participant reads necessary as minimum requirements and sufficient as recommended, as in a game; another concludes every decentralised system is distributed but not the reverse; Alexander notes that mathematics uses these words the opposite way, which confuses matters. The participants prefer the third edition's definition, brought into the comments by viewers: a collection of autonomous elements that appears to the user as a single system.
Problems of distribution and design goals
The new edition asks more sharply whether you need to distribute at all — almost a do-no-harm oath, since needless distribution has done plenty of harm. The authors name four problems: many dependencies, where changing one component touches the rest; the difficulty of finding a fault, split into permanent and intermittent — the example is a bad contact that passes the signal in one kind of weather and drops packets in another; supporting a mass of components, which calls for automatic management; and administrative boundaries, because an attacker who gets into one component reaches the others. The participants add their own: with automatic recovery, where one microservice picks up another's functions, fast feedback disappears — instead of a fire, slow degradation that goes unnoticed for half a year without observability. Hence one host's favourite joke: a centralised system has one point of failure, a distributed one has many, and their interaction produces undefined behaviour. Anton objects that the terminology is academic: in practice he has never asked whether his system is distributed or decentralised.
There are now six design goals instead of four, yet they are listed one at a time with no announcement, and a paragraph from the third edition kept the old number. Resource sharing is about easy access to data and economics: a shared system is cheaper than one per user; the examples are Miro with its infinite whiteboard, Zoom and StreamYard, which took off during the pandemic, peer-to-peer networks and products like Dropbox. Distribution transparency confuses at first: it sounds like hiding distribution from the user, whereas the point is a single coherent front, with no accounts to open in several places. Alexander shows the other side — old RPC, where a call that looked local turned into a network request, an answer could take minutes, and a lost message produced wild errors; if the semantics of a remote call matter to the consumer, do not hide them. Openness is ease of integration and replacement: an engine from which another one can be assembled, and a Lego tower where you add three bricks to those you have.
Dependability, scaling and fallacies
One participant first read the term dependability in this book; it helped to break it into familiar parts and compare it with trust in a service. Availability is counted over time: 364 days out of 365 already means almost 0.3 per cent of downtime, and inside the company a system on top of monitoring checks how services meet their SLA. Reliability is measured not by share of time but by how long a system runs without failures — if memory leaks and it needs a restart every couple of months. Safety matters where lives are at stake: one participant's wife is diabetic, and a failure of her insulin pump is dangerous, which is why in medicine, as in space, the release cycle for devices is very long, while a military rocket's safety margin is a few per cent. Maintainability frees your hands: total cost of ownership is mostly support, and a product thrown together in a hurry takes long to rework. Security is new in the first chapter — node authentication, authorisation of actions, trust between nodes, TLS and keys — and for the security chapter at the end Alexander invited the company's head of security.
Scaling runs along three axes — size, geography and administration; the last was hardest for one host, because it is about agreements between organisations rather than technique. Geography changes much: instead of a local network with small latency you get the internet, broadcast is lost, and you need service registration and addressed delivery, while size is covered by scaling up and scaling out. Alexander recalls Little's law: as utilisation approaches one, response time runs off to infinity, so predictable latency and maximum utilisation cannot be had at once. The techniques are hiding communication latency — instead of checking each character on the server you validate on the client, then check the whole batch on the server, which does not trust the client anyway — partitioning, as in the DNS tree, replication, and caching, a special form of replication whose policy the client sets. Replication brings consistency with it, and a whole chapter is devoted to it. The authors give the standard list of network fallacies, to which Alex Petrov, in his own book, adds processing time, clock drift between nodes, partial failures and cascading failures, one host's own favourite. The closing advice: the book is free, take the fresh version from the authors' site and do not stop at chapter one.
What to take away
- 01The two definitions differ by one word: a decentralised system necessarily spreads processes and resources across several computers, while for a distributed one it is sufficient that they be spread.
- 02The four problems of distribution are dependencies, intermittent faults, supporting a mass of components and administrative boundaries; the participants add a fifth — slow degradation masked by automatic recovery.
- 03Dependability breaks down into availability, reliability, safety and maintainability, and the fourth edition adds security to the goals: node authentication, authorisation of actions and trust between nodes.
- 04As utilisation approaches one, response time runs off to infinity, so scaling means hiding latency, partitioning, replication and caching — with consistency arriving straight after.