Warum und wie befeuert PHP über 80 Prozent aller Websites?

Die PHP-Evolution – vom Entwicklerbaukasten zur Enterprise-Plattform
Kommentare

PHP ist eine Erfolgsgeschichte. Laut einem aktuellen Report von W3Techs aus dem Oktober 2016 setzen 82,2 Prozent aller Websites, deren Server-Side-Programmiersprache bekannt ist, PHP ein – darunter einige der größten Websites der Welt. Warum ist das so und was sind die Gründe für den Erfolg von PHP?

Kore Nordmann und Tobi Schlitt (beide Qafoo GmbH) warfen in ihrer IPC-Session „Vom Entwicklerbaukasten zur Enterprise-Plattform“ gemeinsam einen Blick auf die architekturalen Eigenschaften von PHP. Außerdem stellte das Duo übliche Architekturmuster der PHP-Welt vor, um zu zeigen, wie sich damit auch die größten Webapplikationen betreiben und skalieren lassen.

Evolution of PHP

Ein Blick in die Geschichte von PHP – von Rasmus Lerdorfs Anfängen 1995 bis zu den massiven Performanceverbesserungen mit PHP 7 heute – verdeutlicht eins ganz besonders: PHP ist eine gewachsene Plattform. Eine Plattform, die eine spannende Evolution durchgemacht hat und dabei stets Paradigmen „gemixt“ hat:

  • seit seinen Anfängen prozedural
  • Structs mit Funktionen seit PHP 4
  • Objektorientierung seit PHP 5
  • und es gibt sogar goto (seit PHP 5.3)

Aber auch Inkonsistenzen in der Standardbibliothek waren Teil dieser Evolution. Dennoch war PHP immer darauf fokussiert, möglichst abwärtskompatibel zu sein.

Die große Frage lautet aber: Wie kann es angesichts einer solch bewegten Evolution dazu kommen, dass PHP mehr als 80 Prozent des Webs befeuert?

Blickt man auf die Geschichte von Web-Frameworks, stellt man fest, dass es um 2000 fast nichts anderes gab. Doch dann kamen Ruby on Rails, Django und Zope (Python-basiert), ASP.NET sowie JavaServer Faces.

Muss also die Frage viel eher lauten, wie kann PHP denn immer noch 80 Prozent des Webs befeuern, wo es doch so viele andere Alternativen gibt?

Für Kore Nordmann und Tobi Schlitt liegt die Erklärung weniger an der Programmiersprache selbst bzw. am Paradigma, innerhalb dessen man entwickelt. Gerade in puncto Syntax gibt es natürlich viele andere, elegantere Sprachen – die trotzdem nich ansatzweise so häufig im Web eingesetzt werden wie PHP.

kore-nordmann-tobi-schlitt

Kore Nordmann (links) und Tobi Schlitt während ihrer Session auf der IPC / WebTechCon 2016 in München (© S&S Media).

PHP = Open Source

Schon eher liegt es am Ökosystem, sprich an der riesigen Anzahl von Libraries und Produkten im PHP-Bereich und der Tatsache, dass gefühlt 90 Prozent der Software für PHP Open Source ist, natürlich gebacked von großen Firmen. „Offensichtlich,“ so Nordmann, „ist hier also etwas gebaut worden, was als sinnvoll erachtet wird, den Leuten hilft und sie im Web nach vorne bringt, um gute Web-Applikationen zu bauen.“ Das vermutlich beste Beispiel dafür ist WordPress. Somit scheint die schiere Anzahl an Produkten, Projekten und Communities da draußen einen viel größeren Einfluss zu haben als andere Faktoren. Dazu gesellt sich ein sehr gutes Tooling, das es Entwicklern einfach einfach macht, eine Applikation ins Web zu deployen.

Breite PHP-Entwicklerbasis

Nicht zuletzt sind aber die breite Entwicklerbasis sowie die gute Dokumentation und Ausbildung ein ganz wichtiger Faktor für den Erfolg der Plattform. Das wird laut der Einschätzung von Nordmann und Schlitt auch auf absehbare Zeit so bleiben, auch wenn sich JavaScript mit vermeintlich großen Schritten nähert.

Deshalb muss die Eingangsfrage erneut modifiziert werden. Nicht warum, sondern wie befeuert PHP über 80 Prozent des Webs?

Um sich der Antwort zu nähern, nahm das Duo vier Aspekte genau unter die Lupe: Performance, Security, Availability und Modifiability.

Performance

In puncto Single Node Performance muss konstatiert werden, dass PHP als Middleware auf einem Single Node vor PHP 7 immer eher langsam war. Doch mittlerweile ist es laut Benchmarks zur schnellsten interpretierten Sprache avanciert – im puren Number Crunching wohlgemerkt. Die Performance kommt zwar an die von kompiliertem Code nicht heran, jedoch an jede andere Virtual Machine. Man kann also theoretisch mit PHP heute enorm viele Requests parallel und nacheinander auf einem Server bedienen. Trotzdem, warnen Nordmann und Schlitt, sollte man PHP nicht so einsetzen wie andere Sprachen.

Aber wofür denn dann? Für die horizontale Skalierung von Applikationsservern. Denn heutzutage existieren nahezu keine Web-Applikationen mehr, die mit einem Server betrieben werden wollen, sollen, dürfen. Ein Server bzw. ein Node reicht eben meist nicht mehr aus. PHP-Applikationen werden in der Regel von Anfang an auf mehrere Applikationsserver skaliert. Darüber hinaus wissen PHP-Entwickler um die Herausforderungen der Sprache, die wiederum von den PHP-Frameworks aufgegriffen und gelöst werden.

Stateless Server

Ein weiterer entscheidender Punkt für die Performance ist der „stateless server“-Aspekt von PHP. Von Anfang an basierte PHP auf einer Shared-Nothing-Architektur. Dieser Umstand zwingt Entwickler dazu, Code zu schreiben, der auf beliebig vielen Servern funktionieren muss und kann. Ein ganz entscheidender Faktor, um das massive parallele Skalieren zu erreichen. Denn die Skalierung von PHP ist kein Problem. PHP nutzt schon immer beliebige Anzahlen von CPUs auf Servern aus, um die Ressourcen von einem Single Node möglichst vollumfänglich parallel ausnutzen zu können. Die Kunst ist es, die angehängten Services zu skalieren.

Und weil Server heutzutage „Commodity Hardware“ sind, also leicht verfügbar, braucht es keine dicken Systeme, sondern man packt, wie Tobi Schlitt es ausdrückt, „einfach eine Masse von Commodity Hardware dazu, setzte einen Load Balancer davor und die Sache läuft!“

Auch hier folgt ein Disclaimer: Den Einsatz von PHP für Applikationsserver mit einem Shared Object Graph empfehlen Nordmann und Schlitt nicht. Hier sollte bspw. eher auf Node.js gesetzt werden. Auch für WebSockets empfiehlt das Duo Node.js oder Alternativen wie Go, Erlang/OTP, Java oder Elixir. Und wie erwähnt bieten sich für reines Number Crunching eher C, C++, Go oder Java an.

Go for PHP Developers

mit Terrence Ryan (google)

Everything you need to know about PHP 7.2

mit Sebastian Bergmann (thePHP.cc)

Security

Der Sicherheitsaspekt lässt sich relativ schnell abhaken. Der oft zu hörende Ausspruch, dass PHP unsicher sei, muss relativiert werden. Für Kore Nordmann kann eine Programmiersprache nicht per se unsicher sein. In der Regel sind es die Standardkonfigurationen, schlechte Plugins und Applikationen, die mit einer Sprache wie PHP umgesetzt werden, die Sicherheitsmängel aufweisen.
Auch die prinzipiell begrüßenswerte Tatsache, dass praktisch jeder dank PHP sehr schnell eine Web-Plattform ins Web stellen kann, ist gleichzeitig der größte Unsicherheitsfaktor – denn so kann auch jeder „sehr schnell Mist bauen“. Die niedrige Einstiegshürde ist also ganz klar ein zweischneidiges Schwert.

Availability

Die Verfügbarkeit oder Availability ist das Standard-Argumentationskriterium, wenn über horizontale Skalierung gesprochen wird. Aus diesem horizontalen Scaling auf Basis der Shared-Nothing-Architektur folgt wiederum, dass alles andere ebenfalls hochverfügbar sein muss.

Stichwort Resilience: Die automatische Hochverfügbarkeit von Applikationen ist gewährleistet, solange man anständig testet, bevor man deployt. Und wenn ein Request mal eine „NullPointer exception“ erzeugt, ist das kein Beinbruch mehr und kann applikationsseitig abgefangen werden – wie übrigens fast alle Errors. Dazu gesellt sich die Tatsache, dass Management-Prozesse im Prinzip nicht sterben. Und: Ein PHP-Stack lässt sich bspw. dank Metriken für Applikations-Performance „enterprisemäßig“ überwachen (bspw. Tideways, New Relic, AppDynamics). Kurzum: PHP bringt von Haus aus genügend Mittel mit, um Verfügbarkeit und Resilienz zu gewährleisten.

Modifiability

In puncto Anpassbarkeit war PHP seit jeher sehr stark. Die sogenannte Hackability, also die Möglichkeit, ganz schnell eigene Änderungen vorzunehmen, z. B. eigene Entwicklungen bzw. Plugins zu WordPress hinzuzufügen, ist sicherlich auch mit ein Grund für den großen Erfolg von WordPress. Natürlich ist dieser Punkt ebenfalls ein zweischneidiges Schwert, denn es ergeben sich daraus auch wieder Sicherheitsprobleme und Fragen in puncto Langlebigkeit von Software.

Neben dem Aspekt der Trivial Deployments  ist der große Tooling-Support ein weiterer Pluspunkt von PHP. Für Tobi Schlitt ist PHP deswegen „fast schon langweilig für Entwickler“. Eine andere Sachlage als bspw. in JavaScript, wo die Evolution, die PHP in den letzten 20 Jahren durchgemacht hat, jetzt in ähnlicher Form zu beobachten ist.

Bleibt zuletzt noch die Quality Assurance zu erwähnen und die vielen Tools wie PHPUnit, PHPMD, TravisCI oder Jenkins, die mittlerweile zum Standard für große und auch immer häufiger für kleine Projekte avanciert sind.

We Are Watching!

Auch die Tatsache, dass sich die PHP-Community viele Tools aus anderen Sprachwelten portiert hat, sei als Erfolgsfaktor genannt. Solche Portierungen gab es kontinuierlich und schon immer in PHP, wo laut Nordmann „das Beste aus allen Welten vereint wird“.

Bleibt zum Schluß der einfache Aufruf des Duos an die PHP-Entwickler: Relax, enjoy and develop PHP (and live happily ever after)!

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -