© Agor2012/Shutterstock.com
Hapi - das Web Application Framework für Node

Enterprise-Power für Node.js


Im Node.js-Universum gibt es für jedes Problem eine Lösung – auch für den Enterprise-Bereich. Hapi wurde speziell entwickelt, um den besonderen Anforderungen auf diesem Gebiet zu genügen.

Als serverseitige JavaScript-Plattform ist Node.js aus der Webentwicklung heutzutage kaum noch wegzudenken. Die Hauptgründe für diesen Erfolg sind, dass die Einstiegshürde sehr gering ist, dass es sehr viele Entwickler gibt, die JavaScript als Programmiersprache beherrschen, und nicht zuletzt, dass Node.js sehr leichtgewichtig ist. Aber genau hier entsteht auch eines der größten Probleme für Entwickler. Node selbst bietet nur die grundlegenden Schnittstellen zum System und der Protokollebene. Um alles oberhalb des HTTP-Protokolls müssen sich die Applikationsentwickler selbst kümmern. Diese Strategie hat dazu geführt, dass sich um Node.js eine der aktivsten Communitys in der Webentwicklung gebildet hat. Über einen Paketmanager wie npm oder Yarn können Sie Bibliotheken und Frameworks für Ihre Applikation installieren und verwenden. Das Urgestein, wenn es um die Entwicklung von Webapplikationen geht, ist ohne Zweifel Express. Mit über 13 Millionen wöchentlichen Downloads auf npmjs.com ist Express unangefochtener Spitzenreiter in der Kategorie der Web Application Frameworks. Trotz seiner relativ langen Entwicklungszeit und seiner weiten Verbreitung hat Express einige Probleme, die immer mehr Entwickler nach Alternativen suchen lassen. Allen voran ist hier der Umgang mit Aktualisierungen beziehungsweise deren Fehlen zu nennen. Express steckt mittlerweile seit Jahren in der Major-Version 4 fest. Bei einem Framework deutet das zwar auf ein hohes Maß an Stabilität hin, heißt aber auch, dass es keine tiefgreifenden Änderungen und Modernisierungen erhält. Einige Entwurfsmuster, auf die Express setzt, sind mittlerweile etwas in die Jahre gekommen und so ist es nicht verwunderlich, dass viele kleinere Frameworks an Express vorbeiziehen. Eine interessante Alternative zu Express ist Hapi. Dieses Framework kann man nicht wirklich als Newcomer bezeichnen. Der erste Commit dieses Projekts stammt aus dem Jahr 2011, es handelt sich also eher um einen alten Hasen. Was bei Hapi besonders ist, ist die Philosophie des Frameworks.

Hapi – die Hintergründe

Hinter Hapi steckt die Idee, Node.js auch für unternehmenskritische Prozesse und Applikationen einsatzfähig zu machen. Hapi stammt aus dem Hause Walmart und wurde dort entwickelt, um mit den Lastspitzen des Black Friday Sales umgehen zu können. Die wichtigsten Features von Hapi sind laut Entwicklerteam:

  • Sicherheit: Hapi hat den Anspruch, ein Enterprise Framework zu sein. Das Entwicklerteam prüft jede Zeile des Quellcodes hinsichtlich Sicherheit. Der Schöpfer von Hapi, Eran Hammer, ist der Autor der OAuth-Spezifikation. Er steht also in gewisser Weise für Sicherheit. Ein weiteres potenzielles Sicherheitsproblem entsteht bei JavaScript-Projekten durch den Einsatz von Paketmanagern wie npm. Das liegt nicht an npm an sich, sondern daran, dass es für die Pakete keine Qualitätskontrolle gibt. Wirft man einen Blick auf die Abhängigkeitsliste größerer JavaScript-Projekte, weist diese meist sehr viele Einträge auf. Die Idee dahinter ist, dass Standardprobleme nicht immer wieder selbst gelöst werden müssen. Das führt allerdings auch zu Paketen wie is-odd oder is-even, die theoretisch mit einer Zeile Programmcode ersetzt werden können. Und jedes dieser Pakete stellt durch den Open-Source-Charakter ein potenzielles Sicherheitsrisiko dar. In der Vergangenheit sind genau an dieser Stelle Probleme aufgetreten. So wurde beispielsweise das left-pad-Paket vom Maintainer aus der npm-Registry entfernt, was bei allen Paketen, bei denen left-pad als Abhängigkeit eingetragen war, zu massiven Problemen geführt hat. Derartige Probleme können mittlerweile ausgeschlossen werden, da das Entfernen von Paketen limitiert wurde. Ein weiteres Problem mit den Abhängigkeiten in einem Projekt wurde durch is-promise deutlich. Ein fehlerhaftes Update in der Implementierung des ES-Module-Supports führte hier zu deutlichen Schwierigkeiten. Diese Abhängigkeit von externen Faktoren sorgte dafür, dass sich die Entwickler von Hapi entschlossen, komplett auf externe Abhängigkeiten zu verzichten. Werfen Sie nach der Installation des Frameworks einen Blick in die package-lock.json-Datei Ihrer Applikation, werden Sie feststellen, dass bis auf eine Ausnahme alle Pakete aus dem @hapi-Namespace stammen. Die Ausnahme ist das Paket mime-db. Dieses Paket besteht im Kern aus einer json-Datei mit Mime-Informationen und ist daher eher als unkritisch einzustufen.

  • Qualität: Das Entwicklerteam von Hapi stellt sehr hohe Qualitätsansprüche an sich selbst, so können sich die verschiedenen Qualitätsmetriken durchaus sehen lassen. Allen voran stehen eine sehr hohe Abdeckung mit Unit-Tests und ein sehr strikter Coding-Standard. Beide Maßnahmen unterstützen das Ziel, die Fehler im Framework auf ein absolutes Minimum zu reduzieren. Sollte dennoch ein Fehler auftreten, ist das Team bemüht, diesen so schnell wie möglich zu beheben. Diese Strategie schlägt sich in den offenen Issues auf GitHub nieder. So sind derzeit nur eine Handvoll Issues offen, jedoch beinahe 3000 gelöst.

  • Entwickler first: Hapi ist relativ einfach zu erlernen. Das bedeutet jedoch nicht, dass das Framework im Vergleich zur Konkurrenz einen geringeren Funktionsumfang aufweist, sondern dass die Entwickler beim Design der Features und Schnittstellen gute Arbeit geleistet haben. Die Strukturen und Funktionen, mit denen Sie als Entwickler einer Applikation auf Basis von Hapi in Berührung kommen, sind klar und konsistent aufgebaut. Die Abläufe im Framework sind nachvollziehbar und kommen ohne besondere Konventionen und versteckte Mechanismen im Hintergrund aus.

  • Vorhersagbarkeit: Hapi wurde mit der Anforderung entwickelt, auch für große Projekte und verteilte Teams zu funktionieren. In einem solchen Umfeld ist es wichtig, dass die Ausführungsreihenfolge der einzelnen Funktionen, die zwischen dem eingehenden Request und der ausgehenden Response liegen, klar nachvollziehbar und verlässlich ist. Das Middleware-Konzept, wie es von Express bekannt ist, hat den entscheidenden Nachteil, dass die Funktionen in der Reihenfolge ihrer Registrierung ausgeführt werden. In einer kleinen Applikation, bei der alle Middleware-Funktionen an einer zentralen Stelle registriert werden können, stellt dies noch kein Problem dar. Wächst die Applikation jedoch und arbeiten mehrere Teams an der gleichen Codebasis, kommt es häufiger vor, dass an verschiedenen Stellen solche Erweiterungen registriert werden müssen. Die Fehlersuche kann in einem solchen Fall recht aufwendig werden. Deshalb bietet Hapi die Möglichkeit, Plug-ins aufeinander aufbauen zu lassen. Sie können also eine feste Reihenfolge definieren. Außerdem können...

Neugierig geworden? Wir haben diese Angebote für dich:

Angebote für Gewinner-Teams

Wir bieten Lizenz-Lösungen für Teams jeder Größe: Finden Sie heraus, welche Lösung am besten zu Ihnen passt.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang