CRDTs
In distributed computing, a conflict-free replicated data type (CRDT) is a data structure which can be replicated across multiple computers in a network, where the replicas can be updated independently and concurrently without coordination between the replicas, and where it is always mathematically possible to resolve inconsistencies which might result.
The CRDT concept was formally defined in 2011 by Marc Shapiro, Nuno Preguiça, Carlos Baquero and Marek Zawirski. Development was initially motivated by collaborative text editing and mobile computing. CRDTs have also been used in online chat systems, online gambling, and in the SoundCloud audio distribution platform. The NoSQL distributed databases Redis and Riak have CRDT data types.
Position on the Adoption Curve
Presentations about CRDTs
CRDTs in Production
Interviews
CRDTs in Production
What's the focus of the work that you're doing today?
This project on CRDT was my first project at PayPal and I was part of PD platform team. This is a team on top of infrastructure which provides services which will be used by product development engineers. Our platform allows us to drive the product development aligned with existing infrastructure and at the same time, we need to be efficient in throughput and consistency. We designed this CRDT solution specifically for our situation for our partners and for our infrastructure current state. There is also a requirement how many dependencies we can afford. For example, why CRDT was a very good fit because we say that we don't know the configuration of the cluster. We don't know how many data centers they have. This immediately removed the possibility to use consensus protocols because consensus is based on n divided by 2 plus 1 nodes and we don't have this capability on the infrastructure side. From the box it means that we need to implement it but we don't know about infrastructure. That's why we tried to build a reliable solution on not very reliable components.
What was the specific use case that you were solving?
We are talking about compliance statuses. This is something like whether you're verified, whether you can or cannot transact.