Vorteile und Nachteile von Node.JS

JavaScript (im Beitrag auch kurz “JS”) Technologien sind derzeit in aller Munde. Speziell Angular, Vue.JS, Express.JS und vor allem Node.JS (im Beitrag auch kurz “N” genannt) liegen im Trend.

Wo sind jedoch die Vorteile von Node.JS? Im Beitrag mehr dazu.

Einführung

Node ist kein Framework, es ist eine Run Time Umgebung, welche es erlaubt JavaScript auf einem Server auszuführen.

Immer mehr erfolgreiche Webapplikationen laufen mit N. Trello war und ist ein gutes Beispiel dafür. Es lädt blitzschnell, sieht schön aus und erzielt eine hohe Nutzerfreundlichkeit.

In einem Blogbeitrag von FogCreek Software, dem Hersteller von Trello, werden die verschiedenen eingesetzten Technologien aufgezeigt. Die meisten davon sind basierend auf JS. Zum Beispiel: CoffeeScript, Backbone und MongoDB.

Auch wird in Softwareprojekten verstärkt komplett auf ein JS Stack gesetzt, wie bei dem MEAN Ansatz (MongoDB = Datenbank, Express = Webanwendungs Framework, Angular = Front-End, Node = Server).

Hier ein paar Vorteile von Node.JS:

Blitzschnelle Ausführung von Webanwendungen: Wer kennt es nicht, man klickt auf einen Button oder Link auf einer Website und man bekommt einen Ladebalken zu sehen. Es dauert gefühlt Minuten. Gleichzeitig möchte jedoch niemand solange warten. Mit N kann man es schaffen Webanwendungen zu erstellen die sehr schnell in der Ausführung sind. In den meisten Fällen braucht es nicht einmal Ladezeit.

Skalierbarkeit gegeben: Mit N lassen sich skalierbare Applikationen schreiben, welche eine sehr grosse Anzahl von Verbindungen/ Anfragen gleichzeitig handhaben kann (Stichwort: Non-Blocking I/O).

Alles in einer Technologie: Mit dem MEAN Stack kann man heutzutage starke Anwendungen über alle Bereiche hinweg (Frontend, Backend, Datenbank) mit JS Technologien abdecken. Ein sogenannter Full Stack Entwickler könnte diese Aufgabe übernehmen. In traditionellen Webprojekten bräuchte es noch unterschiedliche Experten (Frontend Entwickler = HTML, CSS, JavaScript, Backend = beispielsweise PHP, Datenbankentwickler = MySQL).

Ein paar Nachteile:

Nicht für rechenintensive Aufgaben geeignet: Falls es um CPU lastige Aufgaben geht, in denen viel Rechnerkapazität verwendet wird, dann ist Node definitiv nicht der richtige Ansatz.

Oftmals fehlende Rückwärtskompatibilität: Wenn neue Versionen von N veröffentlicht werden, kann es sein, dass man den bestehenden Code anpassen muss, so dass alles weiterhin normal funktioniert. Diese fehlende Rückwärtskompatibilität sieht man bei vielen JS Technologien, so beispielsweise bei Angular. Dort musste man den Code teilweise komplett neu schreiben, um von Angular 1 zu Angular 2 zu wechseln.

Keine fertige Technologie: Technologien wie PHP oder ASP.NET gibt es schon seit sehr vielen Jahren. PHP beispielsweise gibt es bereits seit mehr als 20 Jahren. N wird erst seit 2009 entwickelt und man kann von einer unausgereiften Technologie sprechen. Sollte man also N in Projekten verwenden, dann sollte man davon ausgehen, dass Mehraufwand für die Programmierung entstehen kann, einfach auch deshalb, weil sich N immer noch im Wandel befindet.

In welchen Fällen kann man diese Technologie einsetzen?

Es gibt Fälle, in welchen Node.JS die richtige Wahl ist. Hier einige Möglichkeiten:

  • Chat Anwendungen: N eignet sich für Chat Programme, auf welche viele Nutzer gleichzeitig zugreifen.
  • Echtzeit Programme: Systeme auf welche mehrere Nutzer gleichzeitig zugreifen und Änderungen vornehmen und die Nutzer die Änderungen sehen sollen. Gute Beispiele dafür sind Trello und Google Docs.
  • Streaming: Es eignet sich für das Streaming von grossen Datenmengen. Beispielsweise wird es von Netflix genutzt.

Interessante Beispiele

Viele kleine Unternehmen (Startups) aber auch Welt-Unternehmen setzen auf diese Technologie.

Hier ein paar bemerkenswerte Beispiele:

  • Trello: Trello wurde in diesem Beitrag bereits erwähnt. Es läuft sehr schnell, obwohl es eine hohe Anzahl von Zugriffen gibt und die Plattform innerhalb von nur weniger Monate/ Jahre populär geworden ist. All das hat es geschafft, ohne unter der Last langsamer zu werden. Die Skalierbarkeit war und ist durch Node gegeben.
  • PayPal: PayPal verwendet diese Technologie für seine Apps. Laut PayPal’s Ingenieurs-Team braucht es 33 Prozent weniger Zeilen Code und 40 Prozent weniger Dateien, um diese Anwendungen zu schreiben. Gleichzeitig hat sich die Entwicklungsgeschwindigkeit verdoppelt.
  • Uber: Die Populäre Fahrer-App Uber nutzt Node seit dem Start.

Wie wird es in Unternehmen verwendet?

Die Node.JS Foundation hatte eine Umfrage (2016 bis 2017) gestartet, wie Unternehmen diese JS Technologie verwenden.

Hier ein Bild mit den Umfrageresultaten:

Der grösste Teil nutzt es, um Back-end Entwicklung (39 %) zu tätigen. Ein weiterer großer Block nutzt es über die ganze Bandbreite (Frontend, Backend, Datenbank, im sogenannten Full Stack, 36 %). Nur ein kleiner Teil nutzt es ausschliessliche im Front-end (16 %).

Ein weiterer Teil der Umfrage umfasste die Art der Entwicklung:

Das größte Anwendungsgebiet sind Web Apps (84 %). Überraschenderweise kommt es auch stark zum Einsatz für die Programmierung von Unternehmensanwendungen (43 %), da man davon ausgehen könnte, dass eine eher unreife Technologie wie N eher in Startups zum Einsatz kommt. Eher weniger oft wird es für Big Data/ Analytics (14 %) und Embedded Systems (8 %) genutzt.

Wie findet das Deployment statt?

Der grösste Teil der Programme läuft auf AWS (Amazon Web Services). Auch das sogenannte On-Premise ist beliebt (auf Servern im eigenen Unternehmen).

Fazit

Node.js wird heutzutage von Startups gleichermaßen wie von großen Unternehmen eingesetzt. Trotz seiner kleineren Schwächen (wie zum Beispiel die sich wandelnde Technologie) wird es aufgrund seiner Stärken (schnelle Ausführung von Webanwendungen auch unter hohen Zugriffszahlen) bevorzugt verwendet.

Jedoch nicht immer ist N die richtige Wahl. PHP, ASP.NET, Java, Python oder Ruby haben immer noch ihre Anwendungsfelder und können die bessere Wahl in einigen Projekten sein.

N ist also keine Allzweckwaffe, sondern passt in manchen Fällen (Echtzeit-Webanwendungen, Chats, Streaming, etc.) besser und in manchen Fällen (rechenlastige Aufgaben, Embedded Software, etc.) weniger.

Interessante Beiträge zum Thema:
Ist Node ein Superheld?
Szenarien in welchen die Technologie zum Einsatz kommen kann

Bilder: Flickr.com/ Linux Screenshots/ N.JS Foundation


Der Autor: Sascha Thattil arbeitet bei YUHIRO und hilft Unternehmern und Unternehmen beim einfachen Aufbau von Programmier-Teams in Indien. YUHIRO ist ein deutsch-indisches Unternehmen welches IT Firmen, Agenturen und IT Abteilungen Softwareentwickler bereitstellt.

Schreibe einen Kommentar