Dmitry is a Senior Software Engineer at TomTom, Amsterdam.
Having a mostly TechOps background and specialising in Oracle solutions in the past, he once switched to a backend services development and never looked back.
Prior to hacking on NavCloud project @ TomTom since 2013, he was developing APIs for a few international startups: Reltio (Cloud MDM), AmbiqTech (NFC).
He has been obsessed with Scala language and Functional Programming since 2010 and is interested in all things related to Cloud, DevOps and building scalable systems.
In his spare time he is also involved in organising various programming meetups around Amsterdam, and occasionally gives talks at those.
In a connected world, synchronising mutable information between different devices with different clock precision can be a difficult problem. A piece of data may have many out-of-sync replicas but all of those should eventually be in a consistent state. For example, TomTom users, having personal navigation devices, smartphones, MyDrive website accounts, expect their navigation information be synchronised properly even in the occasional absence of network connection.
Conflict-free Replicated Data Types (CRDTs) provide robust data structures to achieve proper synchronisation in an unreliable network of devices. They enable the conflict resolution being done locally at the data type level while guaranteeing the eventual consistency between replicas.
In this talk, in addition to an introduction to CRDT, our main focus will be on a special type of CRDT-set called OUR-set (Observed, Updated, Removed) which we created to extend known CRDT-sets with update functionality. We will explain the advantages of this data structure to solve many synchronisation problems as well as its limitations. We also show how a basic implementation of OUR-set CRDT in Scala and its counterpart in Java looks like and enumerate a set of subtle considerations which should be taken into account.