Video of "I'm SO Glad I'm Uncoordinated"
Coordination Is Increasingly Painful... What Can Be Done?
I am grateful to the organizers of the 2022 ACM DEBS (Distributed Event Based Systems) conference for their kind invitation to do a keynote last week. I spent some time creating slides about coordination, an update of an earlier blog post called “I’m SO Glad I’m Uncoordinated”. It is a MAJOR rewrite to that blog post and I hope to type it into prose soon.
I have recorded a YouTube video of the talk. See: I’m SO Glad I’m Uncoordinated.
As I worked preparing the slides, I continually dug deeper into my thoughts about coordination, what it means, and what we can do to reduce the frequency of our coordination. This led to a significant rewrite of the material. Along the way, I also did an exploration into using PowerPoint for both animation and the creation of three dimensional pictures of linked lists, trees, and DAGs (Directed Acyclic Graphs). It was kinda fun! I even created some 3D clock images with different times depicted.
In this talk, there are four major sections:
How Things Have Changed: Explores the trends in computation and latency from 1978 (when I got my first job programming) until the present. We focus on the impact of the relative performance improvements to CPU, memory, storage, and bandwidth and how latency has NOT kept up with those improvements. A lot of time is spent motivating the relative costs of latency in our distributed systems. This sets up the challenges we see in coordination in modern systems.
The Partial Collapse of Partial Order: Here, we introduce an abstraction for coordination and the implications of using coordination to reduce parallel activities in our computation. We explain why parallelism is a partial order within the system and coordination is the “partial collapse of partial order”.
Going Zen on Coordination: Here, we provide a taxonomy of the tricks used to reduce the coordination we require when building our systems. Leveraging space, time, layers, equivalence, and confluence can help us avoid some costs of coordination. These are the categories that I’ve thought of and there may be others to add to the list later. Each of these is commonly used and we show how these can make more efficient implementations that reduce the demand and cost of coordinating.
Coordination in a Stretched-out World: In this section, we walk through six real-world systems at a very high level. In each of these, there are a combination of some of the tricks described above as the system implementation does what it can to reduce the need for coordination.
Again, I am grateful to the ACM DEBS folks for their kind invitation and for how it caused me to think more deeply about the nature of coordination and the ways we work to reduce its cost.