8 Punkte von GN⁺ 2024-06-26 | 1 Kommentare | Auf WhatsApp teilen
  • Local-First-Software: Software, die Daten hauptsächlich lokal speichert und nur bei Bedarf über das Internet synchronisiert oder sichert
  • Probleme von Local-First
    • Es ist gut, dass Nutzer ihre Daten besitzen und kontrollieren können
    • Für die Online-Synchronisierung zwischen mehreren Geräten wird aber weiterhin ein Synchronisierungsserver benötigt
    • Geht das Unternehmen unter, verschwindet auch der Synchronisierungsserver, sodass keine Synchronisierung mehr möglich ist
    • Wie lässt sich das lösen?

Lösung mit Dropbox

  • Cloud-Synchronisierung: Es können verschiedene Cloud-basierte Dateisynchronisierungslösungen wie Dropbox, iCloud Drive, OneDrive oder Google Drive verwendet werden
  • Vorteil: Viele Menschen nutzen sie bereits, und es gibt mehrere Implementierungen, sodass Alternativen möglich sind
  • Nachteil: Dateisynchronisierung ist ein einfaches Protokoll und bietet nur begrenzte Unterstützung für Synchronisierungsereignisse oder Konfliktlösung

Version 1: Sehr einfache Methode

  • Zustand in einer Datei speichern und über Dropbox synchronisieren
  • Wenn zwei Geräte den Zustand ändern, entstehen Konfliktdateien
  • Mit CRDTs (Conflict-free Replicated Data Types) lassen sich Konflikte auflösen
    • CRDTs sind eine Sammlung von Datentypen, die sich immer zusammenführen lassen
  • Lösung, indem Konfliktdateien geöffnet, Zustände zusammengeführt und erneut gespeichert werden

Version 2: Dateien pro Client

  • Jedem Client wird eine eigene Datei zugewiesen, um Konflikte zu vermeiden
  • Wenn sich die Datei eines anderen Clients ändert, wird dies erkannt und zusammengeführt
  • Da Änderungen nur lokal erfolgen, meldet Dropbox keine Konflikte

Version 3: Operationsbasiert

  • Wenn ein CRDT operation-based ist, können Operationen in einer separaten Append-only-Datei aufgezeichnet werden
  • Jeder Client schreibt in seine eigene Datei und vermeidet so Konflikte
  • Wenn das Operationslog lang wird, kann die Datei zur besseren Synchronisierungseffizienz in Chunks aufgeteilt werden

Fazit

  • Um Local-First-Anwendungen zu bauen, bei denen Nutzer vollständige Kontrolle und Eigentum an ihren Daten haben, ist Datensynchronisierung erforderlich
  • Dateisynchronisierungsdienste wie Dropbox bieten eine einfache, aber effektive Methode zur Synchronisierung
  • Sie sind zwar nicht so echtzeitnah wie maßgeschneiderte Lösungen, reichen aber für die alltägliche Synchronisierung aus
  • Zum Beispiel reicht es aus, wie bei Apple Photos die eigenen Fotos am Ende des Tages überall ansehen zu können
  • Nutzer können ihre eigene Cloud verwenden und so kostenlose, dauerhafte Synchronisierung erhalten

Meinung von GN⁺

  • Bedeutung von Local-First-Software: Nutzer können ihre Daten direkt besitzen und kontrollieren, was Datenschutz und Datensicherheit zugutekommt
  • Grenzen von Synchronisierungsdiensten: Dienste wie Dropbox ermöglichen grundlegende Synchronisierung, stoßen aber bei komplexen Synchronisierungsszenarien an Grenzen
  • Einsatz von CRDTs: Mit CRDTs wird die Konfliktlösung einfacher und die Zuverlässigkeit der Synchronisierung höher
  • Alternative Lösungen: Open-Source-Synchronisierungslösungen wie Syncthing sind ebenfalls eine Überlegung wert
  • Worauf bei der Einführung zu achten ist: Bei der Einführung von Local-First-Software sollten die Stabilität des Synchronisierungsservers und Strategien zur Auflösung von Datenkonflikten sorgfältig geprüft werden

1 Kommentare

 
GN⁺ 2024-06-26
Hacker-News-Kommentare
  • Wichtig ist, dass sich der Backend-Synchronisierungsserver für Local-First-Anwendungen lokal hosten lässt: Für bestimmte Funktionen reicht einfache Dateisynchronisierung nicht aus. Nutzer sollten jederzeit workspace.zip speichern und server.exe/.bin herunterladen können, um das Backend selbst zu hosten.

  • Schwierige Monetarisierung von Local-First-Anwendungen: Ein Modell wie bei Obsidian ist möglich, bei dem die Kern-App kostenlos angeboten und für Netzwerkfunktionen bezahlt wird. Empfohlen wird, mit Yjs eine Local-First- plus Kollaborations-App zu bauen.

  • CRDTs sind nicht immer die beste Wahl: Für Dateisynchronisierung können sie geeignet sein, aber es kann besser sein, wenn ein zentraler Server die Business-Logik validiert und Merge-Konflikte auflöst. Ein Ansatz mit verteilter Zustandsmaschine kann komplex und schwer wartbar sein.

  • RemoteStorage-Protokoll: Jede Anwendung könnte es implementieren, und Nutzer könnten ihre eigene RemoteStorage-URL angeben. Allerdings werden die meisten Implementierungen nicht mehr gewartet.

  • Grenzen Cloud-basierter Dateisynchronisierungslösungen: Für Kollaborationssoftware oder Echtzeitsoftware sind sie nicht geeignet. Es wird ein Modell benötigt, das Kollaborationsfunktionen ohne Vendor Lock-in bietet.

  • Vorteile von Local-First-Software: Die Entwicklung wird einfacher und die User Experience besser. Es wird erwartet, dass ein Local-First-Framework entsteht, das eine Developer Experience ähnlich wie Nuxt oder Next bietet.

  • Risiken von Cloud Storage: Cloud-Anbieter können Daten löschen oder den Zugriff blockieren. Bei Local-First-Cloud-Storage sollte man einstellen, dass alle Dateien heruntergeladen werden.

  • Synchronisationserfahrung mit PWA: Es wurde eine PWA gebaut, die mit AWS und WebDAV synchronisiert. Um die Synchronisationszeit zu verkürzen, ist es wichtig, Lese- und Schreibzeiten zu minimieren.

  • Grenzen der Cloud-First-Idee: Wenn es zu einem Netzwerkausfall im Maßstab eines Kontinents kommt, werden die Probleme der Cloud-First-Idee sichtbar werden.

  • Schwierigkeiten von Local-First-Synchronisierung auf Mobilgeräten: Auf dem iPhone lässt sich Dateisynchronisierung wie mit Dropbox nur schwer im Hintergrund verarbeiten.