Es gibt das Gefühl, das jeder bei der Verwendung von Software hatte: auf etwas klicken und warten. Der Cursor dreht sich, der Bildschirm friert für eine halbe Sekunde ein und erst dann reagiert die Benutzeroberfläche. Diese Verzögerung hat fast immer denselben Ursprung: Die Anwendung musste mit einem Server kommunizieren, bevor sie Ihnen eine Antwort geben konnte.
Der Local-First-Ansatz geht von einer anderen Prämisse aus. Die Daten verbleiben zunächst auf Ihrem Gerät. Die App liest und schreibt lokal, antwortet sofort und kommuniziert erst dann im Hintergrund mit dem Server. Für diejenigen, die es nutzen, kommt es einem wie Magie vor. Für diejenigen, die bauen, ist es eine architektonische Entscheidung mit tiefgreifenden Konsequenzen.
Das traditionelle Modell und sein unsichtbarer Engpass
Die meisten der von uns verwendeten Systeme wurden mit dem Server im Mittelpunkt geboren. Der Browser oder die App ist eine dünne Hülle: Sie zeigt die Schnittstelle, aber die Wahrheit liegt in einer entfernten Datenbank. Jede relevante Aktion wird zu einer Anfrage.
Sie bearbeiten ein Feld, die App sendet es an den Server, wartet auf die Bestätigung und aktualisiert den Bildschirm. Dieser Zyklus funktioniert gut, wenn das Netzwerk schnell und stabil ist. Das Problem besteht darin, dass eine schnelle und stabile Vernetzung eine Annahme und keine Garantie ist.
In der U-Bahn, im Aufzug, in einem Bereich mit schwachem Signal, bei einer überfüllten Veranstaltung, bei der tausend Mobiltelefone um die gleiche Antenne konkurrieren, bricht das Modell zusammen. Die Schnittstelle ist eine Geisel der Latenz. Und selbst kleine Latenzzeiten sind teuer: Alle hundert Millisekunden Wartezeit untergräbt die Wahrnehmung der Produktqualität.
Es gibt ein Detail, das technische Führungskräfte oft unterschätzen. Der Engpass erscheint nicht in den Servermetriken, die weiterhin in Ordnung sind. Es erscheint im realen Benutzererlebnis an einer Stelle, die das Dashboard nicht sehen kann.
Was ändert sich, wenn das Gerät zum Protagonisten wird?
Local-first kehrt die Reihenfolge der Operationen um. Die primäre Datenquelle wird zum Gerät. Der Server ist nicht mehr der Ort, an dem die Aktion stattfindet, sondern wird zum Ort, an dem die Aktion später synchronisiert wird.
Wenn Sie etwas bearbeiten, wird die Änderung lokal geschrieben und die Schnittstelle reagiert sofort. Es gibt kein Warten auf eine Fernbestätigung. Parallel dazu übernimmt ein Synchronisierungsprozess diese Änderung nach Möglichkeit auf den Server und bringt die Änderungen zurück, die andere Benutzer oder Geräte vorgenommen haben.
Diese Umkehrung erzeugt drei Effekte, die sich gegenseitig verstärken. Die erste ist die wahrgenommene Geschwindigkeit: Die Reaktion erfolgt sofort, da sie nicht vom Netzwerk abhängt. Der zweite Punkt ist die Belastbarkeit: Die App funktioniert auch ohne Verbindung weiter, da die Verbindung nie eine Voraussetzung für Maßnahmen war. Der dritte Teil ist subtiler und politischer und verdient einen eigenen Abschnitt.
Dateneigentum oder warum dies zu einem Flag wurde
Wenn Daten zum ersten Mal auf dem Gerät des Benutzers gespeichert werden, ändert sich das Machtverhältnis. Wenn im herkömmlichen Modell der Dienst offline geht oder das Unternehmen seine Aktivitäten einstellt, verschwinden damit auch Ihre Daten. Sie hatten sie nie wirklich, Sie haben nur den Zugang gemietet.
Local-first hat eine implizite These: Der Benutzer sollte über eine Arbeitskopie seiner Daten verfügen, die auch dann nützlich bleibt, wenn der Server verschwindet. Dabei geht es nicht nur um technische Bequemlichkeit, sondern auch darum, wer wofür verantwortlich ist.
Bei Produkten, die sich an Profis richten, hat dieses Argument Gewicht. Ein Architekt, ein Anwalt und ein Forscher haben alle einen berechtigten Anreiz, sich nicht durch die Verfügbarkeit eines Drittanbieterdienstes in Geiselhaft nehmen zu lassen. Die Kontinuität ihrer Arbeit kann nicht von der Stimmung einer abgelegenen Infrastruktur abhängen.
Ich bin hier einer festen Meinung: Die Dateneigentümerschaft als Produktunterscheidungsmerkmal und nicht als Implementierungsdetail zu betrachten, ist einer der intelligentesten Schritte, die ein Team heute unternehmen kann. Vertrauen ist schwer aufzubauen und leicht zu verlieren.
Warum diese Idee mit einem Knall zurückkam
Local-First ist kein neues Konzept. Versionierungssysteme wie Git funktionieren seit Jahren so: Sie haben das gesamte Repository auf der Maschine, arbeiten offline und synchronisieren, wann immer Sie möchten. Was sich geändert hat, war die Werkzeugausstattung.
Browser erhielten erheblichen lokalen Speicher und die Möglichkeit, komplexe Logik auf dem Gerät auszuführen. Die Synchronisationstheorie ist ausgereift und verfügt über Datenstrukturen, die in der Lage sind, gleichzeitige Bearbeitungen ohne einen Arbiter-Server in der Mitte zusammenzuführen. Und die Hardware in den Taschen der Menschen ist mittlerweile leistungsstark genug, um sie tatsächlich zu verarbeiten und nicht nur anzuzeigen.
Hinzu kommt die angestaute Frustration. Jahrelange langsame Anwendungen, die ohne Signal abstürzen und offline als Fehler behandelt werden, haben den Appetit auf etwas Besseres geweckt. Die Erwartungen stiegen, da es nur wenige Produkte gab, die wirklich für flüssige Ergebnisse sorgten.
Jeder, der tiefer in den Mechanismus eintauchen möchte, der die Synchronisierung zuverlässig macht, wird gerne verstehen, wie CRDTs Datenkonflikte lösen, denn dort steckt ein Großteil der harten Technik.
Wo Local-First glänzt und wo es sich nicht auszahlt
Man muss ehrlich sein: Nicht jedes System sollte lokal an erster Stelle stehen. Der Ansatz fordert seinen Tribut. Sie beginnen an zwei Stellen mit der Pflege der Datenlogik, müssen über die Bearbeitung von Konflikten nachdenken und der Test wird komplexer. Es ist nicht kostenlos.
Anwendungen, bei denen der Benutzer viel mit seinen eigenen Daten interagiert, gewinnen stark. Editoren, Produktivitätstools, Anmerkungs-Apps, Feldarbeitssysteme – all das passt auf natürliche Weise zur Idee.
Systeme, bei denen die Wahrheit zentral und eindeutig sein muss, wie etwa Finanztransaktionen, Sitzplatzreservierungen oder gemeinsames Inventar in Echtzeit, erfordern mehr Sorgfalt. Nicht, dass Local-First dort unmöglich wäre, aber die Geschäftsregel erfordert, dass bestimmte Entscheidungen an einem einzigen Koordinationspunkt getroffen werden, und das Erzwingen der Messlatte schafft mehr Risiko als Wert.
Die Kriterien, die ich verwende, sind einfach. Wenn die meisten Benutzeraktionen lokal bestätigt werden können, ohne jemanden zu konsultieren, ist Local-First ein guter Kandidat. Wenn fast jede Aktion eine zentrale Autorität zur Validierung benötigt, denken Sie zweimal darüber nach.
Es lohnt sich auch, die Einstiegskosten von den Wartungskosten zu trennen. Das Zusammenstellen der ersten Local-First-Version erfordert Arbeit, aber es ist die Entwicklung im Laufe der Zeit, die Disziplin erfordert. Bei jedem neuen Datentyp muss entschieden werden, wie er synchronisiert und Konflikte gelöst wird, und das summiert sich. Teams, die dies zunächst ignorieren, zahlen später Zinsen in Form von schwer reproduzierbaren Fehlern und Daten, die ohne ersichtliche Erklärung abweichen.
Der Ausgangspunkt für die Entscheidung
Local-First ist keine Framework-Modeerscheinung, sondern eine Abkehr vom Ausgangspunkt der Datenwahrheit. Diese Entscheidung wirkt sich auf das Produkt, das Erlebnis, die Infrastruktur und sogar auf das Vertrauensverhältnis zu denen aus, die die Software nutzen.
Stellen Sie vor der Einführung die richtige Frage: Muss mein Benutzer schnell handeln und auch ohne ein perfektes Netzwerk weiterarbeiten? Wenn die Antwort „Ja“ lautet, lohnt es sich, den Aufwand zu investieren. Die Rendite entsteht dort, wo es am wichtigsten ist: in der Wahrnehmung, dass das Produkt einfach funktioniert.
Wenn Sie ein Team leiten und diesen Turnaround bewerten, lohnt es sich, zunächst das praktische Design einer Anwendung zu verstehen, die den Offline-Zustand als Normalzustand behandelt, denn hier wird die Theorie zu echtem Code.
Lesen Sie auch
- Sync-Engines: die Tools, die Local-First realisierbar machen
- CRDTs: So synchronisieren Sie serverlose Daten, um Konflikte zu schlichten
- Local-First im wirklichen Leben: Regierung, Gesundheitswesen und Logistik
- Offline-First: Entwerfen für den Fall, dass es kein Internet gibt
- Skalierbare Softwarearchitektur: So erstellen Sie Systeme, die wachsen
- Latenz in Webanwendungen: die Grundlagen, die jedes Team verstehen muss
