© saicle/Shutterstock.com
Kolumne: The Good Parts

Kolumne: The Good Parts


Hoodie erlaubt es Frontend-Entwicklern, in extrem kurzer Zeit vollständige Applikationen mit mehreren Benutzern und robuster Datenhaltung zu implementieren, ohne sich um das Backend Gedanken machen zu müssen. Trotzdem werden sowohl Benutzer als auch Daten zwischen verschiedenen Endgeräten synchron gehalten, und es werden Features, wie das Verschicken von E-Mails, unterstützt. Das klingt zu schön, um wahr zu sein? Erlauben Sie mir, Ihnen zu zeigen, wie das funktioniert …

Hoodie [1] ist primär eine JavaScript-Bibliothek, die sich einfach in existierende Umgebungen integrieren lässt und ein elegantes API für Benutzermanagement und Datenhaltung bietet. Das Besondere an Hoodie ist, dass keine direkte Interaktion mit dem Server stattfindet, sondern alle Aktionen vorerst im Local Storage des Browsers gespeichert werden.

Local Storage ist eine HTML5-Technologie, die es erlaubt, einfache Key-Value-Pairs im Browser des Benutzers zu speichern. Die Daten, die so gespeichert werden, sind Session-übergreifend verfügbar und theoretisch dauerhaft gespeichert. Somit können wir von einer Datenbank im Browser für jeden Benutzer sprechen.

Zusammen mit anderen HTML5-Technologien erlaubt uns der Local Storage (oder auch IndexedDB), HTML5-Applikationen zu entwickeln, die ohne eine Internetverbindung auskommen. Der verfügbare Speicherplatz im Browser ist jedoch oft stark beschränkt und liegt üblicherweise zwischen 2,5 MB und 5 MB.

Neben der Einfachheit des API, das wir noch in einem Beispiel genauer betrachten werden, ist die Besonderheit bei Hoodie, dass die Daten „schließlich-konsistent“ (Eventual Consistency) auf einem Server gespeichert werden und der Server weitere Aktionen mit den Daten durchführen kann. Der Prozess lässt sich besser an einem Bild veranschaulichen.

nordmann_schema_1.tif_fmt1.jpgAbb. 1: Ablaufschema der Datenspeicherung mit Hoodie

Der erste Schritt, der in Abbildung 1 visualisiert wird, ist die Interaktion des Benutzers mit einer Webseite, zum Beispiel auf seinem Notebook (1). Im Falle von Hoodie kann der Benutzer einen Account erstellen, sich anmelden und beliebige Daten erstellen, löschen oder ändern. Diese Daten werden dann von Hoodie im Local Storage abgelegt (2).

Sobald das Gerät eine Onlineverbindung aufbaut, weil zum Beispiel ein WLAN verfügbar ist oder die Mobilfunkverbindung wieder aktiv wird, kümmert sich Hoodie darum, dass die Daten auch auf dem Server gespeichert werden (3). Dies passiert ohne jegliche Interaktion des Benutzers und selbst ohne bewusstes Eingreifen der Entwickler der Applikation. Serverseitig wird eine CouchDB eingesetzt, deren robustes Replikationsprotokoll auf Eventual Consistency ausgelegt ist und gut damit zurechtkommt, dass einzelne Knoten in dem Replikationsgraphen regelmäßig und ständig offline sind.

Wenn andere Instanzen der Applikation auf anderen Geräten geöffnet werden, werden die Daten des Benutzers auch mit diesen in beide Richtungen synchronisiert (4). Solange die Geräte jeweils über eine Internetverbindung verfügen, kümmert sich Hoodie darum, dass auf allen Geräten die aktuellen Daten vorliegen. Der Benutzer kann also beliebig zwischen den Geräten wechseln und die Applikation dabei wahlweise online oder offline betreiben.

Hoodie setzt serverseitig nicht allein auf CouchDB, sondern zusätzlich auf Node.js, um so genannte Tasks zu verarbeiten. Dazu werden die Tasks von einer Applikation erstellt und dann an den Server übertragen. Implementiert ist bereits das Verschicken von E-Mails. Sobald diese erfolgreich verschickt wurde, wird der entsprechende Task als erledigt markiert. Dieser Status wird wiederum an die Applikation übertragen. Damit lassen sich ohne bewusste Interaktion mit einem Backend ­E-Mails verschicken und andere Aktionen vornehmen, für die ein Server notwendig ist. Aktuell geplant sind Module, um Payments vornehmen zu können sowie ein Modul, mit dem Benutzer Dokumente untereinander teilen können. Die Hoodie-Entwickler arbeiten an einem API, mit dem sich in Zukunft eigene serverseitige Module einfach entwickeln lassen.

Installation

Die Installation von Hoodie ist trivial, zumindest wenn CouchDB, Node.js und npm bereits in relativ aktueller Version installiert sind. Wie die meisten aktuellen JavaScript-Bibliotheken wird npm zur Paketverwaltung eingesetzt. Das zu Hoodie gehörende Kommandozeilentool lässt sich mit Administratorrechten entsprechend einfach installieren:

npm install -g hoodie-cli

Anschließend kann man eine neue Hoodie-Applikation erstellen und direkt starte...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang