Slides from a talk given on 5 March 2018 at QCon London.
We all know how to build applications that rely on a central server. However, such centralisation is not always desirable, and recently there has been new interest in developing decentralised applications. Blockchains inevitably come up in that conversation, but when you examine them critically, not every problem is best solved by a blockchain.
In this talk we will explore how to ensure data consistency in distributed systems, especially in systems that don't have an authoritative leader. We will see how to sync data between your phone and your laptop without sending it via a remote server. We will explore algorithms that allow several people to collaborate on a shared document, communicating via a peer-to-peer network.
Conflict-Free Replicated Datatypes (CRDTs) are a set of algorithms that ensure data consistency in such settings. Recent research on CRDTs has enabled us to better understand their consistency guarantees and design richer datatypes. On the practical side, CRDTs are making their way into more and more applications. This talk will examine that research and its uses, showing where we are now and where we are heading in the future.