Why time is evil in distributed systems

Building distributed systems is hard, even using languages such as Erlang that support them well. There are many problems that have to be solved: partial failure, nondeterminism, observable delays, event ordering, global state, distributed consistency, performance (latency and throughput), and so on. Progress has been made in solving these problems, but often in isolation and without realizing how the solutions are related.

In this talk, Peter goes to the heart of the matter and explain why almost all of these hard problems are avatars of one problem, namely real-world time. Peter will explain how to avoid time when building distributed systems. There are some cases when time cannot be avoided, even in principle, and he will explain those as well. In both situations, using and avoiding time, Peter will try to present general solutions at a correct level of abstraction. All ideas will be illustrated by examples of real distributed systems from my experience (edge computing, consistent replication, etc.).

This talk will give you a fresh outlook on distributed systems and help you design better ones.

OBJECTIVES

To explain the importance of real-world time for distributed systems. To help you master time in your own distributed systems.