Gedanken zu Node.jsVorteile von serverseitigem JavaScript

Bild des Autors, Christian Heynvon Christian Heyn

Natürlich lobt man Dinge, mit denen man schon positive Erfahrungen gemacht hat. Man versucht Vorteile anhand eigener Erfahrungen zu nennen und diese meist mit anderen Technologien zu vergleichen. In den folgenden Zeilen möchte ich jedoch nicht die Unterschiede in den verschiedenen Sprachen, wie PHP oder C#, vergleichen. Es geht nicht um Sprach-Features oder irgendwelche Paradigmen in dieser oder jener Sprache. Stattdessen möchte ich ein Alleinstellungsmerkmal von Node.js aufgreifen, welches ich als das wertvollste betrachte.

Der Klassiker

Das klassische Entwicklerteam hat Frontend- und Backend-Entwickler:innen. Manche Teammitglieder sind sogar Fullstack-Devs (was auch immer das bedeutet ). Oft preschen die Backend-Developer mit ihrer Arbeit vor um eine Grundlage an Daten oder API-Strukturen zu schaffen. Die Businesslogik muss erarbeitet werden, Daten müssen validiert werden, Datenbanken angebunden werden. Das alles wird z. B. in PHP umgesetzt. Keine Frage, PHP ist dafür wie geschaffen und erledigt den Job mit Bravour! Natürlich wäre es wunderbar, wenn nun auch noch eine Dokumentation der API vorhanden wäre. Kein Problem! Diese kann man heute auch für fast jede Programmiersprache automatisiert erstellen.

Keine Frage, PHP ist dafür wie geschaffen und erledigt den Job mit Bravour!

Die Frontend-Entwickler:innen können das Produkt für den Kunden nun bauen. Doch auch sie müssen Daten validieren, ein wenig Businesslogik implementieren und hier und da Rücksprache mit dem Backend halten um einen Endpunkt der REST-API ein wenig anzupassen. Moderne Frontend-Entwicklung setzt heutzutage meist auf JavaScript Libraries wie React, Vue oder Angular. Dadurch ist ggf. auch das Frontend komplex in seiner Art die Daten zu halten und zu verarbeiten.

So weit, so gut. Die Entwicklung läuft.

Was wäre nun passiert, wenn man statt PHP (oder jeder anderen Sprache) von vornherein Node.js eingesetzt hätte?

Überall JavaScript

Die Entwicklung mit einem Node.js-Backend verleiht dem Projekt einen zeitlichen Vorsprung, der nicht zu unterschätzen ist. Da sich Backend und Frontend große Teile des Codes teilen, muss jede Validierung und funktionelle Logik nur einmal geschrieben werden.

Schreibe ich Tests, so gelten diese für Front- und Backend.

Ich kann die selbe Funktion – zum Validieren von Formulardaten – im Front- und Backend nutzen. Behebe ich einen Bug in dieser Funktion, behebe ich ihn projektweit. Füge ich ein Feature hinzu, tue ich dies projektweit. Schreibe ich Tests, so gelten diese für Front- und Backend.

JSON

Die meisten Schnittstellen im Web nutzen JSON als Austauschformat. Da JSON im Prinzip valides JavaScript ist, erübrigen sich auch hier viele To-dos. Was das Backend sendet, kann das Frontend genauso verarbeiten und umgekehrt.

SSRServer Side Rendering

Mit den vielverwendeten Libraries React oder Vue.js kann man das initiale HTML auch sehr einfach serverseitig rendern. Vorausgesetzt man arbeitet mit Node.js. So wie eine dynamische PHP-Seite kann auch mit JavaScript das Markup direkt ausgeliefert werden um einen Performance- oder SEO-Vorteil zu schaffen.

TypeScript als i-Tüpfelchen

TypeScript ist für mich das Tool um die Entwicklung nochmal weiter zu pushen! Die Dokumentation, die durch die Typisierung entsteht, ist einfach Gold wert. Natürlich ist eine API-Dokumentation noch immer angebracht, wenn man ein Node.js-Backend nutzt. Doch ist die Developer-Experience extrem gut und oft ausreichend, wenn ich die TypeScript-Typen vorliegen habe. Diese Technologie beschleunigt die Arbeit des gesamten Entwicklerteams nochmal enorm – zumindest wenn Erfahrung mit TypeScript vorliegt.

Performance-kritische Features

Einige Sprachen sind schneller als andere. Kompilierbare Sprachen sind unter diesem Gesichtspunkt natürlich immer von Vorteil. Wenn ein Feature serverseitig sehr Performance-kritisch ist, besteht mit Node.js immer noch die Möglichkeit ein natives Node-Modul in C++ zu schreiben. Das ist eher die Ausnahme. Jedoch ist diese Möglichkeit erprobt und nicht unmöglich zu implementieren. Weiterhin gibt es für Server wie Browser mehr und mehr Möglichkeiten schnelle Berechnungen in WebAssembly zu erarbeiten. Das Projekt WebAssembly nimmt seit einiger Zeit Fahrt auf und ist eine mächtige Ergänzung im Universum der Webentwicklung.

Es geht um Zeit…

…und somit auch um Geld. Die projektweite Nutzung des selben Codes und das Fixen von Bugs in Front- und Backend zur selben Zeit ist schlicht und einfach ein großes Zeitersparnis. Auch der organisatorische Aufwand nimmt ab. Es ist das ganze Team, welches an der Codebasis mitwirkt. Dadurch sind in der Regel weniger lange Absprachen oder Blocker bei der Planung von API oder anderen Features nötig.

Das Team

Erfahrungsgemäß gibt es trotzdem eine natürliche Aufteilung des Teams in Frontend und Backend. Doch sind die Grenzen hier meist sehr viel verschwommener als im klassischen Setup. Moderne Frontend-Entwicklung bedarf auch viel Know-how zum Thema Datentransformation und Businesslogik im Allgemeinen. Natürlich ist Backend-Erfahrung immer noch wichtig in einem Node.js Projekt. Kenntnisse zu Datenbanken und Mustern, um Berechnungen performant zu halten, sind immer nötig. Trotzdem verteilt sich die Wirksamkeit jedes Teammitglieds auf das gesamte Projekt, was zu einer gesunden Wissensverteilung beiträgt.

Mein Fazit

Node.js kann nicht weniger als jede andere Sprache serverseitig auch kann. Es ist nicht sinnvoll ein Projekt mit Node.js aufzusetzen, wenn mein ganzes Team aus PHP-Entwickler:innen besteht. Doch falls es das Personal zulässt, kann man die besagten Vorteile in die Technologie-Entscheidung einbeziehen.

Du hast Fragen, Anmerkungen oder einen Fehler entdeckt? Schreib mir gern eine E-Mail an christian-dev@mailbox.org oder nutze direkt das folgende Formular.

Dein Feedback wird für niemanden ersichtlich sein. Deine Nachricht wird nicht auf dieser Website veröffentlicht oder weiter gereicht ohne deine schriftliche Einwilligung.

Dir gefällt der Artikel "Gedanken zu Node.js - Vorteile von serverseitigem JavaScript"? Ich teile meine Expertise gern mit dir und deinem ganzen Team. Neben individuellen Workshops biete ich auch den Workshop "Produkt-Entwicklung mit React" an. Wenn das interessant für dich klingt dann lass uns gern persönlich sprechen.

Workshop
Produkt-Entwicklung mit React

Von und mit Christian Heyn