- Reflect é um novo framework para criar aplicações web multiplayer semelhantes ao Figma, Notion e Google Sheets.
- Ele é uma evolução do Replicache, um framework de sincronização no lado do cliente, e adiciona um servidor totalmente gerenciado para facilitar o desenvolvimento de apps multiplayer.
- O Reflect agora está disponível publicamente pela primeira vez.
- O framework lida com o problema de resolução de conflitos na edição colaborativa, garantindo que todos os usuários vejam o mesmo conteúdo e que os conflitos sejam resolvidos de forma natural.
- Diferentemente de ferramentas populares do ecossistema web, como CRDTs (Conflict-Free Replicated Data Types), o Reflect usa a técnica de Transactional Conflict Resolution, popular na indústria de videogames.
- Os benefícios e diferenciais únicos do Reflect vêm das escolhas centrais desse motor de sincronização.
- O Reflect usa funções JavaScript chamadas
mutators para implementar mudanças e gera um mutation record quando um mutator é chamado.
- As
mutations são aplicadas localmente e transmitidas ao servidor, que as lineariza com base no momento de chegada para gerar o próximo estado autoritativo.
- O Reflect consegue lidar com aplicações que evoluem rapidamente, adicionando
mutations enquanto aguarda a confirmação das anteriores.
- Esse framework exige um armazenamento de dados rápido, capaz de retroceder, criar forks e branches, além de um armazenamento rápido no lado do servidor que consiga acompanhar as
mutations recebidas.
- A abordagem do Reflect se generaliza bem, sendo adequada para diversas operações, como aritmética, manipulação de listas e imposição de invariantes de alto nível.
- O servidor do Reflect é autoritativo, recalcula por conta própria o resultado das
mutations e faz com que todos os clientes vejam esse resultado.
- Essa autoridade do servidor permite autenticação detalhada e a execução de outros códigos no servidor.
- O Reflect também oferece vantagens como validação de esquema e migrações.
- A estratégia de sincronização do Reflect, Transactional Conflict Resolution, é simples, flexível e poderosa, sendo uma boa escolha para criar aplicações multiplayer.
1 comentários
Opiniões no Hacker News