Node.js Webserver oder PHP Webserver oder beides?

1 Antwort

Welche Architektur sich am besten eignet, hängt stets von den Anforderungen an die Anwendung / dem Vorhaben ab.

Beispielsweise ist es sinnvoll, bei komplexen, multilingual verfügbaren Webseiten, die möglichst dauerhaft verfügbar sein sollen, die Last verschiedener Aufgaben auf mehrere Server zu verteilen. So könnte ein Server der Contentpflege dienen, ein Server könnte diverse Hintergrundaufgaben erledigen (z.B. Handhabung von E-Mail-Verteilern für Kampagnen, Löschen von veralteten Daten aus der Datenbank, ...), ein Server könnte sich der Verwaltung eines Suchindex widmen und 2-3 Server spielen den Webseiteninhalt aus / reagieren auf Anfragen der Nutzer. Diese drei Frontendserver würden praktischerweise von einem Load Balancer kontrolliert werden.

Bekannte Beispiele solcher komplexen Webseiten wären Amazon, BBC, Ikea oder ESPN. Aber es gibt natürlich noch viel mehr (Shops, Banken, ...). Nicht selten kommen dabei auch Cloud-Hoster wie Azure oder AWS zum Einsatz sowie stärker fokussierte Frameworks / CMS, die auf Technologien wie C# (und ASP.NET) oder Java (mit Spring) bauen.

Für einfache Projekte (z.B. eine Hobby-Webseite) reicht ein einziger Webserver vollkommen aus. Ob der nun auf Node.js läuft oder ob es sich um einen Apache Webserver handelt, ist in vielen Fällen egal.

Kann vielleicht Node.js bestimme Sachen besser (...)

Node.js eignet sich vor allem für:

  • Webservices, bspw. JSON-basierte REST-APIS
  • Single Page-Anwendungen
  • Echtzeitbasierte Anwendungen (z.B. Chats, Spiele)
  • Datenstreaming
  • Anwendungen, bei denen mehrere Nutzer gleichzeitig miteinander arbeiten

Die Kerneigenschaft von Node.js liegt in seiner eventbasierten Ausführung auf einem Mainthread. Die Event Loop wird nur verzögert, wenn Aufgaben in die Aufgabenliste eingereiht werden, die eine längere Berechnungszeit benötigen und somit blockieren.

PHP lohnt sich vor allem für Anwendungsfälle, wenn die Anwendung keiner großen Skalierbarkeit bedarf und eine zentrale Steuerung ausreicht. Für Echtzeitanwendungen, die bspw. via WebSockets kommunizieren, ist PHP nicht die geeignetste Wahl (das gilt ebenso für den Apache HTTP Server).

Da es in einigen Bereichen schon viele gewachsene und bekannte, fertige Lösungen (z.B. für Foren- oder Shop-Software) gibt und Budget, Zeit und Kompetenzen der Stakeholder oft eine Rolle spielen, ist dies immer wieder ein starkes Argument für PHP. Die Einfachheit der Sprache kann man ebenso gut mit anrechnen.