8 puntos por GN⁺ 2024-06-26 | 1 comentarios | Compartir por WhatsApp
  • Software Local-First: software que almacena los datos principalmente de forma local y solo sincroniza o hace respaldo por internet cuando es necesario
  • Problemas de Local-First
    • Es bueno que el usuario pueda poseer y controlar sus datos
    • Pero aun así se necesita un servidor de sincronización para la sincronización en línea entre varios dispositivos
    • Si la empresa quiebra, el servidor de sincronización también desaparece, así que ya no se puede sincronizar
    • ¿Cómo se puede resolver?

Solución usando Dropbox

  • Sincronización en la nube: se pueden usar varias soluciones de sincronización de archivos basadas en la nube, como Dropbox, iCloud Drive, OneDrive y Google Drive
  • Ventajas: mucha gente ya las usa y existen varias implementaciones, por lo que pueden reemplazarse
  • Desventajas: la sincronización de archivos es un protocolo simple, con pocas funciones para eventos de sincronización o resolución de conflictos

Versión 1: método muy simple

  • Guardar el estado en un archivo y sincronizarlo con Dropbox
  • Si se cambia el estado en dos dispositivos, se crea un archivo en conflicto
  • Usando CRDT (Conflict-free Replicated Data Types) se pueden resolver los conflictos
    • Los CRDT son un conjunto de tipos de datos que siempre pueden fusionarse
  • Se resuelve abriendo el archivo en conflicto, fusionando el estado y guardándolo otra vez

Versión 2: archivo por cliente

  • Asignar un archivo único a cada cliente para evitar conflictos
  • Cuando cambia el archivo de otro cliente, se detecta y se fusiona
  • Como las modificaciones se hacen solo en local, Dropbox no reporta conflictos

Versión 3: basada en operaciones

  • Si el CRDT es operation-based, se pueden registrar las operaciones en un archivo separado de solo anexado
  • Cada cliente escribe en su propio archivo para evitar conflictos
  • Cuando el registro de operaciones se hace largo, el archivo se divide en fragmentos para mejorar la eficiencia de sincronización

Conclusión

  • Para construir aplicaciones local-first donde el usuario tenga control y propiedad total, se necesita sincronización de datos
  • Los servicios de sincronización de archivos como Dropbox ofrecen un método de sincronización simple pero efectivo
  • No es tan en tiempo real como una solución hecha a medida, pero es suficiente para la sincronización cotidiana
  • Por ejemplo, basta con algo como Apple Photos: poder ver tus propias fotos en cualquier lugar al final del día
  • El usuario puede usar su propia nube para tener sincronización permanente gratis

Opinión de GN⁺

  • Importancia del software Local-First: permite que el usuario posea y controle directamente sus datos, lo que favorece la privacidad y la seguridad de la información.
  • Límites de los servicios de sincronización: servicios como Dropbox permiten la sincronización básica, pero tienen limitaciones en escenarios de sincronización complejos.
  • Uso de CRDT: usar CRDT facilita la resolución de conflictos y puede aumentar la confiabilidad de la sincronización.
  • Soluciones alternativas: también vale la pena considerar soluciones de sincronización de código abierto como Syncthing.
  • Aspectos a considerar al adoptar esta tecnología: al adoptar software Local-First, hay que revisar bien la estabilidad del servidor de sincronización y cómo se resolverán los conflictos de datos.

1 comentarios

 
GN⁺ 2024-06-26
Comentarios en Hacker News
  • Es importante permitir alojar localmente el servidor backend de sincronización de las aplicaciones local-first: la simple sincronización de archivos no basta para ofrecer ciertas funciones. Hay que permitir que el usuario guarde en cualquier momento un workspace.zip y descargue server.exe/.bin para autoalojar el backend.

  • Dificultad para monetizar aplicaciones local-first: existe el modelo de Obsidian, donde la app base se ofrece gratis y se cobra por las funciones de red. Recomiendan usar Yjs para construir una app local-first + colaborativa.

  • Los CRDTs no siempre son la mejor opción: pueden servir para sincronización de archivos, pero puede ser mejor que un servidor central valide la lógica de negocio y resuelva conflictos de fusión. El enfoque de máquina de estados distribuida puede ser complejo y difícil de mantener.

  • Protocolo RemoteStorage: todas las aplicaciones podrían implementarlo y permitir que el usuario proporcione su propia URL de RemoteStorage. Sin embargo, la mayoría de las implementaciones ya no reciben mantenimiento.

  • Limitaciones de las soluciones de sincronización de archivos basadas en la nube: no son adecuadas para software colaborativo ni para software en tiempo real. Se necesita un modelo que ofrezca funciones de colaboración sin dependencia del proveedor.

  • Ventajas del software local-first: facilita el desarrollo y mejora la experiencia de usuario. Se espera que aparezcan frameworks local-first que ofrezcan una experiencia para desarrolladores similar a Nuxt o Next.

  • Riesgos del almacenamiento en la nube: el proveedor de nube puede borrar los datos o bloquear el acceso. Al usar almacenamiento en la nube local-first, hay que configurarlo para descargar todos los archivos.

  • Experiencia de sincronización usando PWA: alguien construyó una PWA que sincroniza usando AWS y WebDAV. Para reducir el tiempo de sincronización, es importante minimizar los tiempos de lectura y escritura.

  • Limitaciones de la idea cloud-first: si ocurre una caída de red a escala continental, quedarán expuestos los problemas del enfoque cloud-first.

  • Dificultad de la sincronización local-first en móviles: en iPhone es difícil manejar en segundo plano la sincronización de archivos tipo Dropbox.