Wann eignet sich PHP und wann wählt man Node.js?
Eine Zeit lang wurde Node.js als Newcomer unter den Entwicklungsplattformen hoch gehandelt. Das im Mai 2009 in seiner ersten Version vorgestellte Plattform für serverseitige Webanwendungen trat an, um Probleme und Unzulänglichkeiten, die PHP zu dieser Zeit mitbrachte, zu beseitigen. Vor allem in Sachen Performance zog Node.js zunächst schnell am Platzhirsch PHP vorbei.
Doch Node.js hat PHP keinesfalls abgelöst, denn es ist nach wie vor nicht aus der Webentwicklung wegzudenken und erfreut sich auch dank PHP-Frameworks wie bspw. Laravel sogar wachsender Beliebtheit. Gerade erst im März 2018 wurde die aktuelle PHP-Version 7.2.4 veröffentlicht. Node.js legte mit 8.11 ebenfalls eine aktuelle Version vor, aber es ist allgemein ruhiger geworden um die Entwicklungsplattform, die einst angetreten war, um PHP zu verdrängen.
Wir werfen einen Blick auf Node.js und auf PHP und beleuchten Vorteile und zweckmäßige Anwendungsfälle.
PHP und Node.js ein Überblick
Auch wenn sich beide Plattformen, PHP und Node.js, für Anwendungen jeglicher Komplexität eignen, verfolgen sie grundsätzlich verschiedene Konzepte und verwenden unterschiedliche Architekturen. Bei der Wahl für eine der beiden Entwicklungs-Plattformen für die Entwicklung einer Webapplikation ist es entscheidend, die jeweiligen Vorteile, aber auch Grenzen zu kennen.
Natürlich sind Node.js und PHP allgemein zwei gleichermaßen verbreitete Web-Entwicklungstools. PHP ist eine serverseitige Skript-Sprache, die bereits seit 1994 im Web Anwendung findet. Rasmus Lerdorf hat damit eine der wegweisenden Sprachen der Web 1.0 Ära kreiert. Auch heute ist PHP aus dem Web nicht wegzudenken. Content Management Systeme (CMS) wie WordPress, TYPO3, Drupal oder Joomla und die Millionen mit diesen Systemen betriebenen Websites kommen nicht ohne PHP aus. Node.js ist im Gegensatz zu PHP keine Sprache, sondern eine Runtime Environment (RTE), eine Laufzeitumgebung, die JavaScript für die Entwicklung von serverseitigen Webanwendungen verwendet. Zudem ist es noch ein echter Youngster unter den Entwicklungsplattformen. Es wurde erst 2009 veröffentlicht und hat seit dem die Stärke von JavaScript für das Erstellen von Event-basierten, datengetriebenen sowie I/O (Input/Output) Applikationen im Web hinreichend demonstriert.
Ein kurzer Vergleich zwischen PHP und Node.js
Eine traditionelle Serveranwendung, wie sie auch mit PHP umgesetzt werden kann, startet für jeden Aufruf eine gesonderte Verbindung. Dies hat zur Folge, dass umfangreiche Anwendungen, die eine Vielzahl an Aufrufen generieren, eine große Menge an Verbindungen aufbauen. Ist die maximale Zahl an Verbindungen zwischen Server und Client erreicht, wird jeder weitere Aufruf in die Warteschleife gelegt und wird erst dann verarbeitet, wenn der Server wieder eine neue Verbindung aufbauen kann.
Node.js setzt dem einen Event-basierten, „single threaded“ Ansatz entgegen. Dies bedeutet, dass mehrere Tausend Anfragen parallel über eine Verbindung abgewickelt werden können. Dazu ist es unabdingbar, dass einzelne Anfragen nicht die Verbindung blockieren, während Sie auf eine Antwort des Servers warten. Aus dieser Architektur resultiert eine wesentlich schnellere Kommunikation zwischen Client und Server.
Einige weitere Details zu Node.js
Node.js ist eine Softwareplattform zur Entwicklung serverseitiger Netzwerkdienste. Bekannte Projekte, die auf Node.js setzen, sind unter anderem die Blogging-Software Ghost, das Projektmanagementtool Trello oder das Betriebssystem WebOS, das sich als Nachfolger des legendären PalmOS versteht, dem einstmals beliebtesten Betriebssystem für Handheld-Computer und Organizer. Node.js benötigt zum Betrieb die JavaScript Laufzeitumgebung V8, die von Google eigens für den populären Browser Chrome entwickelt wurde. Dies garantiert eine sehr ressourcensparende Architektur, die Node.js besonders für den Betrieb eines Webservers qualifiziert.
Ryan Dahl, der Entwickler von Node.js, veröffentlichte die erste stabile Version am 27. Mai 2009. Er entwickelte Node.js aus Unzufriedenheit mit den damals vorhandenen Möglichkeiten, die JavaScript bot. Ursprünglich nur für den Betrieb auf Linux und MacOS ausgelegt, sind die neueren Versionen allerdings sowohl auf Servern mit Unix-Betriebssystemen als auch auf Windows-Servern lauffähig. Die Basisfunktionalität von Node.js wird seit der ersten Version mit JavaScript abgebildet, die um eine große Zahl verschiedenster Module erweitert werden kann. Die aktuelle Paketverwaltung von Node.js kennt etwa 400.000 dieser Module.
Vorteile von Node.js
Eine der herausstechenden Eigenschaften von Node.js ist die auf JavaScript basierende ereignisgesteuerte Architektur. Diese hat im Serverbetrieb den Vorteil, weniger Arbeitsspeicher zu verbrauchen, als andere Architekturen.
Schnelle Server-seitige Lösungen
Node.js macht sich den JavaScript „event-loop“ zu eigen, um nicht-blockierende I/O-Anwendungen zu erstellen, die bequem gleichzeitige Events bedienen. Mit der standardmäßig verfügbaren asynchronen Verarbeitung innerhalb JavaScript, können hoch skalierbare, server-seitige Lösungen realisiert werden. Die effiziente Nutzung der CPU und des Arbeitsspeichers wird maximiert und zudem können mehr gleichzeitige Requests verarbeitet werden, als bei konventionellen Multi-Thread Servern.
Eine Sprache entlang des gesamten Stacks
Vielfach eingesetzte Frameworks wie Ember, React und Angular oder zuletzt auch das von uns bevorzugte Vue.js sind in JavaScript geschrieben. Wird nun Node.js serverseitig verwendet, kann man alle Vorzüge einer einheitlichen Skript-Sprache über die gesamte Anwendungsentwicklung nutzen. Die gleiche Sprache im Back- und Frontend vereinfacht die Wartung der Applikation und auch die Koordination innerhalb des Entwickler-Teams.
Flexibilität
Node.js setzt sehr wenige strikte Abhängigkeiten, Regeln und Richtlinien und gewährt so ein hohes Maß an Flexibilität in der Anwendungsentwicklung. Es gibt keine strengen Konventionen vor, sodass für die Entwicklung die geeignete Architektur, Design-Strukturen, Module und Features frei gewählt werden können.
Vorzüge von PHP
Nicht nur die Technik sollte bei der Wahl der geeigneten Plattform ausschlaggebend sein, sondern auch Erfahrung und Nutzwert. PHP verfügt über ein umfangreiches Ökosystem und eine äußerst aktive Entwicklergemeinde, die mit ihrer Expertise weiter zur Verbesserung von PHP beiträgt.
So ermöglicht das Web-Socket Protokol bereits seit dem Jahr 2011 die Unterstützung von NGINX Servern. Event-loops, callbacks und nicht blockierende Ein- und Ausgaben (non blocking I/Os) sind erfolgreiche Versuche, die Performance PHP gestützter Plattformen deutlich zu verbessern und den Geschwindigkeitsvorteil von Node.js zu egalisieren. Zuletzt gab es mit den aktuelleren Versionen von PHP nochmals erhebliche Fortschritte bei den relevanten Performance-Parametern.
Weitreichende Code-Basis
PHP wartet mit einer umfangreichen Code-Basis auf. Dazu gehören vielfach eingesetzte Content-Management-Systeme (WordPress, Joomla, Drupal) und Web-Frameworks (Laravel, Symfony), die eine schnelle und sichere Anwendungsentwicklung ermöglichen. Hinzukommen noch zahlreiche in PHP geschrieben Open-Source-Lösungen und eine ungemein starke Entwickler-Community dahinter.
Kompatibilität
PHP punktet auch mit Kompatibilität. Es läuft auf den verbreitetsten Webservern (Apache, Nginx) und auch auf jeder Plattform (Linux, Windows). Der Code muss also nur einmal geschrieben werden und kann dann problemlos in jede Umgebung implementiert werden. Außerdem wird für PHP auch weitläufiger Hosting-Support, selbst im niedrigpresigen Segment angeboten, sodass die Integration und Ausrollen von PHP-Anwendungen vereinfacht wird. Entgegen zu Node.js wird nicht zwingend ein SSH-Zugang, Konsole und eine Linux-Umgebung benötigt.
Für das Web gemacht
Im Gegensatz zu Java und anderen allgemein gebräuchlichen Programmiersprachen, wurde PHP gezielt für serverseitige Web-Anwendungen konzipiert. Alle notwendigen Funktionalitäten, um HTML, Server und Datenbank (MySQL) zu managen, bringt PHP bereits von Haus aus mit. Mit der serverseitigen Verfügbarkeit von PHP, entfällt auch die Verarbeitung von JavaScript im Browser, denn alle Seiten können einfach auf dem Server generiert und gerendert werden.
PHP oder Node.js - Überlegungen bei der Auswahl
Node.js eignet sich dank der asynchronen und Event-basierten Architektur besonders für sogenannte Real Time Applications (RTA) wie Messenger-Anwendungen oder Anwendungen, die der Live-Kollaboration dienen. Denn hier werden viele gleichzeitige Requests verarbeitet und Daten werden beständig zwischen Server und Client hin- und hergesendet. Auch die „Publish-Subscribe“ Architektur von RTA's lässt sich mit Node.js mittels Web-Sockets und serverseitigen Events einfach implementieren und die Client-Ansicht aktualisiert sich entsprechend schnell. Das macht Node.js auch zu einer guten Wahl für Anwendungen, die IoT (Internet of Things) Daten verarbeiten oder Single-Page Applikationen (SPA), die flexible, dynamische und Client-seitige Funktionalitäten bieten.
PHP stellt für Websites, Blogsysteme, Landingpages oder Web-Portale und viele individuelle browser-basierte Webanwendungen, stets eine gute Wahl dar. PHP bietet zudem in Bezug auf den Hosting-Support deutlich mehr Flexibilität, wenn der Kunde anstatt einer vollumfänglichen virtuellen Instanz nur ein Shared-Hosting zur Verfügung stellen kann.
Ausschlaggebend für die Wahl zwischen PHP und Node.js ist also vor allem die Art der zu erstellenden Anwendung und welche weiteren Rahmenbedingungen für die Entwicklung gesetzt sind.
Können wir weiterhelfen?
Sie haben ein spannendes Projekt und möchten mit uns zusammenarbeiten? Kontaktieren Sie uns jetzt!