+49 (0) 911 - 14 87 97 03 0 callahero@404heroes.com

MeteorJS – Vor- und Nachteile des App Frameworks

Lesezeit: ca. 6 Minuten

Was ist MeteorJS?

MeteorJS ist ein Open-Source Javascript Framework serverseitig basierend auf NodeJS. Durch die einfache Trennung von Client, Server und Smartphone-App Codeteilen soll es den Programmierern das Entwickeln von Web- und Mobile-Apps vereinfachen.

Für wen ist dieser Leitfaden?

Wenn Sie selbst Entwickler sind und sich Gedanken darüber machen, sich einmal mit dieser Technolgie zu befassen, erhalten Sie hier einen guten Überblick, was das Meteor.js Framework im Wesentlichen ausmacht.

Wenn Sie CTO, Abteilungsleiter, Lead Developer oder aufgrund Ihrer Aufgabenstellung eine Technologie-Empfehlung oder Entscheidung treffen wollen oder sollen, wird Ihnen dieser Artikel dabei helfen das JavaScript Framework MeteorJS bewerten zu können.

Sollten Sie keine technischen Kenntnisse haben, können Sie auch direkt zum Ende springen. Dort finden Sie unter der Zusammenfassung für Entwickler ein Fazit speziell für Entscheider.

Was bedeutet Full-Stack-Framework

Bei Meteor handelt es sich um ein Full-Stack-Framework, was bedeutet, es umfasst sowohl das Front-End ( Client Seite ) als auch das Back-End ( Server Seite) und die Datenbank-Handhabung. Man hat also alles um eine komplette Web Application zu entwickeln.

Was macht Meteor besonders

Meteor verwendet im Gegensatz zu z.B. Ruby on Rails, bei dem es sich ebenfalls um in Full-Stack-Framework handelt, sowohl auf Server- als auch auf Clientseite und sowie bei der Datenbank nur eine Programmiersprache: JavaScript. Eine Besonderheit ist, dass man im Code mit einer einfachen Fall-Weiche (if-Abfrage) entscheiden kann, ob ein Codeteil nur auf Server- bzw. Client-Seite ausgeführt werden soll, oder auf beiden. Der Schwerpunkt dabei liegt auf der Aktualisierung von Daten in Echtzeit auf allen Clients. Durch den Aufbau von Meteor auf Node.js ist es möglich alle bekannten JavaScript-Bibliotheken zu importieren und in einer eigenen API zu kombinieren.

Wie arbeitet Meteor.JS

Server und Client

Die Kommunikation zwischen Server und Client erfolgt bei MeteorJS über DDP (Distributed Data Protocol). Dabei besteht keine direkte Verbindung vom Client zur Datenbank, stattdessen verfügt der Client über einen Caching-Zwischenschicht ( MinimongoDB ) an die der Server die Daten sendet. Wird nun auf einem Client ein Datensatz hinzugefügt, wird auf Clientseite die lokale Kopie der MongoDB-Collection bearbeitet und veröffentlicht.
Diese Änderung wird dann dann unter Zuhilfenahme des Pub-Sub-Prinzips (Subscription – Daten-Abonnement) /Publication  – Daten-Veröffentlichung) an den Server geschickt und dort in der MongoDB abgespeichert. Jede Änderung wird dann wiederum von MeteorJS erkannt und automatisch von der Publication an jeden “Abonnenten”, sprich an jede mit Hilfe des WebSockets hergestellten Punkt-zu-Punkt Verbindung, zu den Clients geschickt und wieder in der MiniMongo abgespeichert und somit sofort im Browser, ohne das gewohnte Seite-Aktualisieren, geladen.

Die Datenbank-Technologie

Wer mit dem JavaScript-Framework MeteorJS arbeitet, nutzt in der Regel als Datenbank-Technologie das weit verbreitete NoSQL-Datenbanksystem MongoDB. Dieses ist von Haus aus in das Framework integriert. Bei Bedarf sind natürlich auch andere Datenbank-Technologien nutzbar, jedoch verliert man dabei einige besondere Vorteile.

Was ist MongoDB?

MongoDB ist eine sogenannte NoSQL-Datenbank, also sie hat kein festes Schema. Die Daten werden darin in einem JSON ähnlichen Format angespeichert.

Unterschied SQL /NoSQL ( not only SQL )

Ein großer Unterschied zwischen NoSQL und SQL Datenbanken ist die Speicherung von Daten. Während man die Datensätze in einer SQL Datenbank nach einem festen Schema abspeichert, werden die Daten in einer NoSQL Datenbank als “Objekt” abgelegt. Das hat zur Folge, dass ein Datensatz unabhängig von einem anderen Datensatz erweitert werden kann.

Zum Beispiel:
Wir haben eine Tabelle mit Name und Vorname. So können wir bei der SQL Datenbank ohne Änderung der Tabellenstruktur nur diese beiden Felder befüllen. Bei NoSQL hingegen können wir das “Objekt” beliebig erweitern und bei einzelnen Datensätzen zum Beispiel noch einen Titel einfügen.

Vorteile gegenüber einer SQL

Bei der Verwaltung großer Datenmengen mit einer relationalen Datenbank werden leistungsfähigere Server benötigt ( Scale-Up), das jedoch ist nicht besonders kosteneffizient. NoSQL benötigt keine Joins, denn die Relationen lassen sich ganz ganz einfach direkt im Datensatz abspeichern oder können bei der Datenabfrage direkt erstellt werden. Durch die Objekt ähnliche Datenform ist es möglich, innerhalb eines Datensatzes eine Struktur wie bei einem mehrdimensionalen Array aufzubauen.

Node.js

Ursprünglich für Google Chrome entwickelt, bietet es eine sehr ressourcensparende Architektur.
Sie ermöglicht es eine große Anzahl an bestehenden Netzwerkverbindungen ohne dabei einen jeweils eigenen Thread zu starten.

Packages in Meteor.js

Meteor bietet eine große Anzahl an Paketen die in ein Projekt eingebunden werden können. Diese beinhalten fertige Funktionen, die einem beispielsweise das Erstellen von Login-Scripten erleichtern. Auch NPM-Packages (übrigens die weltweit größte Package-Sammlung) können sehr einfach in einer MeteorJS Anwendung verwendet werden.

Echtzeitdaten

Durch den Einsatz von DDP ( Distributed Data Protocol ) in Verbindung mit WebSockets wird es ermöglicht Daten in Echtzeit zu verarbeiten. Der WebSocket, aufgeteilt in zwei Teile: Client- und Server-Seite, baut eine bidirektionale (Punkt-zu-Punkt) Verbindung zwischen Webanwendung und Webserver auf. Mithilfe des DDP werden die Daten des Servers mit den Clients synchronisiert. Es ist dafür zuständig die Daten zu verwalten und zu managen.

Deviceübergreifende Entwicklung

Die deviceübergreifende Entwicklung funktioniert dank bequemer Cordova-Integration in Meteor praktisch “Out of the Box”. Cordova ist ein Framework das in Meteor eingebunden werden kann, zur Erstellung von hybriden Applikationen für Mobile-Devices. Die Entwicklung erfolgt mit JavaScript, HTML5 und CSS3 anstelle der spezifischen Programmirsprachen für die Endgeräte (Java, Objective-C). Da MeteorJS vermutlich zu den besten Frameworks (vielleicht sogar das beste) für hybride Apps nach dem Offline-First Konzept zählt, lässt sich mit MeteorJS eine hohe Qualität der Anwendungen erreichen, ohne den x-fachen Kosten bei einer klassischen vollnativen Entwicklung.

Anmerkung zu Qualitätsbedenken bei hybriden Apps

Hybriden Apps wird oftmals gerade im Kontext mit iOS nachgesagt, dass sie sehr oft vom Apple Appstore Qualitätsteam abgelehnt werden. Zwar können wir nicht für die Gesamtheit der Meteor-Apps sprechen, jedoch können wir mit Sicherheit sagen, dass bis dato noch keine einzige unserer eigenen MeteorJS Apps im Apple Appstore abgelehnt wurde.  Aus unserer Sicht haben die hybride Apps einen schlechten Ruf, weil es (theoretisch) sehr einfach ist aus einer Website mit Cordova eine „Smartphone App“  zu generieren. Dabei wurde in der Vergangenheit lediglich die Web-Version der eigentlichen Website schlichtweg in einen App-Rahmen verpackt anstatt einer echten Apps zu bauen. Damit war die vermeintliche „Smartphone App“ nicht mehr als eine Website ohne Browserzeile oben drüber. Somit hatte die Apps nichts mit der iOS-App-spezifischer App-Nutzungserfahrung zu tun und wurde in Folge dessen abgelehnt.

Meteor auf dem Smartphone

Android-Apps

Dank Cordova wird der in JavaScript geschrieben Code in Meteor durch einen einfachen Befehl auf dem Server kompiliert und eine Android Development Tools Projekt erzeugt. Dabei hat man Zugriff auf alle gängigen APIs die für Android verwendet werden können wie zum Beispiel: Compass, Camera, Contacts.
Das Projekt kann dann z.B. mit Eclipse geöffnet und von dort aus mit einem Emulator getestet werden. Die erzeugte APK kann dann im PlayStore eingestellt werden.

Apple iOS-Apps

Kongruent zur Android Entwicklung sorgt auch bei der iOS Variante das Cordova Framework dafür, dass der JavaScript Code in diesem Fall in Objective-C kompiliert wird und mit einem Befehl das Projekt erzeugt, welches dann mit X-Code geöffnet werden kann, um es im eigenen Simulator zu testen.

Meteor im Vergleich zu anderen Frameworks

Im Vergleich zu vielen anderen Frameworks wie Ruby on Rails, Symfony oder Laravel arbeitet Meteor nicht zwangsläufig nach dem MVC-Prinzip (Model-View-Controller). Das bedeutet, das man nicht in eine vorgegebene Struktur gezwungen wird, man ist also flexibel bei der Erstellung seiner Models und der dazugehörigen Steuerung. Die arbeiten die meisten Frameworks mit relationalen Datenbanken wie MySQL oder Oracle, Meteor hingegen baut auf die oben erwähnte NoSQL Datenbank – MongoDB. Auch unterscheiden sich die meisten Frameworks durch die Entwicklung an Front- und Back-End. Während bei vielen häufig mehrere Programmiersprachen benötigt werden, bietet Meteor einheitliche Sprache für beides.

Vorteile von MeteorJS

Meteor reduziert Front- , Back-End und Datenbank Programmiersprache auch durch den Einsatz von MongoDB auf eine einzige Programmiersprache, was es für Entwickler deutlich einfacher gestaltet, eine komplette Applikation zu entwickeln. Auch bei der Projektbetreuung kann man dadurch kleinere Entwickler-Teams bilden. Durch das Einsetzen von Packages erspart man sich viele Zeilen an Code, was sowohl beim Schreiben des Codes als auch in der Fehlerbehandlung Zeit spart.

Nachteile von MeteorJS

Der Umstieg von der herkömmlichen Entwicklung auf die Full-Stack-Entwicklung ist gegebenenfalls problematisch. Auf der einen Seite muss jetzt nur noch eine Programmiersprache gelernt werden, jedoch müssen vormals reine Front-End-Enwickler sich nun Gedanken über die Logik einer Applikation machen, während sich vormals reine Back-End-Entwickler nun mit der Usability befassen müssen. Eine Trennung zwischen Backend- und Frontend-Entwickler ist natürlich weiterhin möglich; jedoch zeigen sich in der Praxis große Effizienzgewinne, wenn der Backend-Entwickler auch mal eine Kleinigkeit im Frontend anpassen kann oder umgekehrt. Full-Stack-Frameworks sind auch nicht für alle Arten von Applikationen einsetzbar oder man läuft Gefahr für spezielle Bedürfnisse nicht das bestmögliche Mittel zu verwenden. Würde man sich von einer Voll-Stack-Lösung distanzieren wollen und gewisse Bereiche mit anderen Sprachen oder Methoden ersetzen wollen, ist das in einem solchen Systemen manchmal etwas aufwändiger – oder zumindest ungewohnt.

Gesamt-Fazit

Wo liegen nun die großen Stärken und wann lohnt sich der Einsatz des Frameworks?

Für Entwickler

Für den Entwickler ist es hinsichtlich der Ganzheit eines Projektes von Vorteil sich auf eine Sprache konzentrieren zu können mit der man den gesamten Umfang abdecken kann, besonders im Bereich der deviceübergreifenden Entwicklung.

Für Entscheider

Aufgrund der Möglichkeit mit MeteorJS ein gesamtes Paket, umfassend Web- und Mobile-Application sowohl für Android als auch iOS, mit einem Programmcode zu entwickeln, fallen die Entwicklungskosten in diesem Punkt günstiger aus. Da ansonsten für jede Endgeräteart das Projekt in der jeweiligen Programmiersprache neu geschrieben werden müsste.
Durch die Echtzeit-Datenverarbeitung, können zudem spezielle Funktionen implementiert werden. Auch wirken die Applikationen durch das wegfallen manueller Aktualisierungen flüssiger und gut abgerundet.
Ein weiterer Grund für Entscheider ist der sog. Hot-Code-Reload, was bedeutet, dass Änderungen, die die App nicht grundlegend verändern, in der App selbst geladen werden können, ohne dass man eine aktuelle Version aus dem PlayStore bzw. AppStore geladen werden muss. Wer bereits Erfahrung mit Apps in den App-Stores hat, der weiß, dass App-Updates auch zu Nutzerverlusten führen können.

Lucian Katzbach on sabbloggerLucian Katzbach on sabemailLucian Katzbach on sabtwitter
Lucian Katzbach
Über den Autor
Lucian Katzbach ist Geschäftsführer der LUKA Venture GmbH und CTO der 404heroes, dem Technik-Segment des Unternehmens. Die 404heroes erstellen für Ihre Auftraggeber skalierbare sowie zuverlässige als Android / iOS App installierbare und gleichzeitig im Browser nutzbare Plattformen. Komplexe Geschäftsanforderungen werden dabei einfach bedienbar und auf den tatsächlichen Bedarf der Kunden zugeschnitten.

Wenn er nicht gerade an einem Projekt arbeitet engagiert er sich in der Web-Szene, organisiert Konferenzen wie die WebInsights Conference oder wirkt er als Mentor im Coders Dojo für Kinder mit.