Los Conflict-free Replicated Data Types (CRDTs) son una clase de estructuras de datos que pueden ser replicadas a través de múltiples nodos en un sistema distribuido. Su característica fundamental es que permiten actualizaciones concurrentes e independientes en cualquier réplica, y la fusión de estas actualizaciones es siempre determinista y conmutativa, garantizando que todas las réplicas convergerán al mismo estado final sin necesidad de un mecanismo explícito de resolución de conflictos. Existen dos categorías principales: Operation-based CRDTs (Op-based CRDTs), que replican las operaciones que modifican el estado, y State-based CRDTs (CvRDTs o G-CRDTs), que replican el estado completo o un 'delta' del estado. Ejemplos incluyen contadores incrementales (G-Counters, PN-Counters), conjuntos (G-Sets, 2P-Sets), y registros (LWW-Register).
En el mundo real, los CRDTs son fundamentales en sistemas que requieren alta disponibilidad y colaboración en tiempo real sin un coordinador central. Ejemplos notables incluyen la edición colaborativa de documentos, como la que se encuentra en herramientas como Figma o Google Docs (aunque Google Docs usa un enfoque propietario, los CRDTs son una alternativa viable y usada en otros editores colaborativos). Bases de datos distribuidas como Riak y Redis Enterprise (con módulos específicos) utilizan CRDTs para la replicación multi-maestro y la gestión de conflictos. También son empleados en sistemas de mensajería descentralizados y en aplicaciones móviles offline-first que necesitan sincronizar datos de manera robusta una vez que la conectividad se restablece.
Para un arquitecto, los CRDTs son una herramienta poderosa para diseñar sistemas distribuidos que priorizan la disponibilidad y la tolerancia a particiones (AP en el teorema CAP) sin sacrificar la consistencia eventual. Eliminan la complejidad de la resolución de conflictos manual, lo que reduce la superficie de errores y simplifica la lógica de la aplicación. Sin embargo, no son una panacea: los State-based CRDTs pueden generar una sobrecarga de red significativa al replicar estados completos, mientras que los Operation-based CRDTs requieren una entrega de mensajes confiable y ordenada. La elección del tipo de CRDT y su implementación debe considerar el tamaño de los datos, la frecuencia de las actualizaciones y los requisitos de latencia. Su adopción es estratégica para construir sistemas colaborativos, offline-first o de replicación multi-maestro con garantías de convergencia robustas.