15 pontos por GN⁺ 2023-10-05 | 2 comentários | Compartilhar no WhatsApp
  • Introdução interativa a Conflict-free Replicated Data Types (CRDTs)
    • Um tipo de estrutura de dados que fica armazenada em diferentes computadores (pares) e pode ser atualizada imediatamente sem requisições de rede nem confirmação de outros pares
  • CRDTs são excelentes para construir aplicativos colaborativos ricos, como Google Docs e Figma, sem a necessidade de sincronização por um servidor central
  • Existem dois tipos de CRDTs: baseados em estado e baseados em operações
    • CRDTs baseados em estado transmitem todo o estado entre os pares, e um novo estado é obtido pela mesclagem de todos os estados
    • CRDTs baseados em operações transmitem apenas as ações realizadas pelo usuário, que podem ser usadas para calcular um novo estado
  • Este artigo foca em CRDTs baseados em estado e explica como construir CRDTs primitivos, como compô-los em estruturas de dados mais complexas e como criar um editor colaborativo de pixel art
  • Apresenta o conceito de Last Write Wins Register (LWW Register), um tipo simples de CRDT que mantém um único valor e usa timestamps para sobrescrever o valor atual com o valor escrito por último
  • Também apresenta o conceito de Last Write Wins Map (LWW Map), um tipo mais complexo de CRDT que mantém um ou mais valores
  • Inclui playgrounds interativos para ajudar a entender como LWW Registers e LWW Maps funcionam
  • O próximo artigo focará em construir um editor colaborativo de pixel art usando os conceitos explicados neste artigo

2 comentários

 
cosine20 2023-10-06

Conteúdo bem interessante. Eu tinha curiosidade sobre como eram implementados aplicativos com colaboração em tempo real, como o Google Docs...

 
GN⁺ 2023-10-05
Comentários do Hacker News
  • Artigo elogiado como uma excelente introdução a Conflict-free Replicated Data Types (CRDTs) para desenvolvedores, com exemplos de código reais e explicações claras
  • CRDTs são usados no desenvolvimento de produtos e, embora possam ser difíceis de lidar, oferecem benefícios como latência zero e consistência eventual
  • CRDTs permitem cache distribuído sem lógica de invalidação, simplificando o gerenciamento de cache e melhorando o desempenho
  • CRDTs possibilitam a exclusão de operações de escrita antigas, reduzindo a carga do sistema e viabilizando edge computing
  • No entanto, usar CRDTs traz desafios como dificuldades com autorização baseada em papéis, necessidade de mudanças no modelo de dados aditivo e problemas de depuração
  • Serviços como Liveblocks tentam simplificar o uso de CRDTs, mas podem ser caros para desenvolvedores independentes
  • CRDTs já foram usados em várias aplicações, como gerenciadores de campanha de TTRPG, bancos de dados com sincronização automática e ferramentas colaborativas de anotações
  • CRDTs são vistos como muito úteis e interessantes para gerenciamento de dados, mas sua importância para aplicações centradas no usuário é motivo de debate
  • Alguns argumentam que o principal benefício dos CRDTs é a colaboração em tempo real, algo que, segundo eles, já foi resolvido por soluções centralizadas como o Google Docs
  • Outros apontam que CRDTs oferecem vantagens como suporte a múltiplos dispositivos e acesso offline, mas que esses recursos também estão disponíveis em soluções centralizadas
  • Também há preocupações sobre a longevidade dos dados e o controle pelo usuário ao usar CRDTs, já que atualizar o modelo de dados não é simples e outros pares podem modificar os dados
  • Apesar desse debate, o interesse contínuo por CRDTs permanece, e a pesquisa e o desenvolvimento nessa área seguem avançando