- 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
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.zipspeichern undserver.exe/.binherunterladen 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.