© Ganna Demchenko/Shutterstock.com
Tradition trifft Moderne: PHP im Kontext von Serverless

Serverless Computing mit PHP


Schenkt man den Cloudarchitekturpropheten Glauben, hat die klassische Webanwendung bald ausgedient und tritt nur noch in Legacy-Systemen in Erscheinung. Die Sprache PHP hat – gemessen an den Zeiträumen des Internets – eine lange und erfolgreiche Geschichte hinter sich und wird produktiv in unzähligen Webanwendungen eingesetzt. Innerhalb der als „Zukunft der Softwareentwicklung“ [1] bezeichneten Serverless-Architektur konnte PHP jedoch bislang keinen führenden Platz erobern. Das Bref-Projekt schickt sich an, das im Rahmen von AWS Lambda zu ändern.

„PHP ist eine serverseitig interpretierte, in HTML eingebettete Skriptsprache zur Entwicklung dynamischer Webseiten …“ – so oder so ähnlich lautete der erste Satz der einführenden Zusammenfassung auf den kurz vor der Jahrtausendwende entstandenen deutschsprachigen Informations- und Portalseiten zum Thema PHP. Aus einer Sammlung von Skripten, die von Rasmus Lerdorf zunächst für die Verarbeitung von HTML-Formularen geschrieben worden war (PHP/FI), wurde innerhalb kurzer Zeit eine Sprache, die eine effiziente Entwicklung von datenbankgetriebenen Webseiten ermöglichte. Anstatt auf Perl oder Java zu setzen, wurde PHP in der Frühzeit des Webs und der aufstrebenden New Economy immer häufiger genutzt, um webbasierte Anwendungen zu erstellen. Nach einigen Evolutions- und manchen Revolutionsschritten ist die Sprache erwachsen geworden und steht aktuell in der Version 7.3 bereit. PHP hat damit nicht nur die ersten Jahre und die erste Programmierergeneration des Webs geprägt, sondern wurde im Lauf der Zeit zur meistverwendeten serverseitigen Programmiersprache [2]. Diese Position hält PHP auch heute noch – beispielsweise hat WordPress mit über 60 Prozent den größten Marktanteil im CMS-Bereich inne [3]. PHP wird von den meisten Webhostern standardmäßig angeboten, insofern hat sich an der Relevanz in den letzten Jahren kaum etwas verändert. Natürlich programmiert heute – im besten Fall – niemand mehr mit PHP auf die ursprüngliche Art und Weise. Analog zur Weiterentwicklung der Sprache hat sich auch der Programmierstil geändert. Inzwischen bestimmen Frameworks wie Symfony oder Laravel die Szene, anstelle von selbsterstellten Skripten werden Standardarchitekturkonzepte adaptiert, um die Entwicklung effizienter und die jeweilige Anwendung modular erweiterbar und wartbar zu machen.

Beim Serverless-Dienst AWS Lambda fehlt PHP jedoch bislang in der Liste der von Amazon angebotenen Laufzeitumgebungen. Unterstützt werden standardmäßig JavaScript mit Node.js, Python, Ruby, Java, Go und .NET mit C# [4]. Zur Verminderung eines Sprachenschlagabtauschs und Framework-Fehden hat Amazon im November 2018 das Lambda Runtime API veröffentlicht, das es erlaubt, weitere Laufzeitumgebungen einzusetzen [5]. An dieser Stelle tritt das Projekt Bref auf den Plan [6]. Bref ist Open Source und wird federführend vom Softwarearchitekten und -consultant Matthieu Napoli und dessen Unternehmen entwickelt [7]. Bref bezeichnet sich als Framework und besteht aus mehreren Komponenten, die die Nutzung von PHP auf AWS Lambda ermöglichen. Neben den reinen Laufzeitumgebungen für PHP gehört ein CLI-Tool für Scaffolding und Deployment dazu, ebenso wird die Dokumentation explizit als ein Bestandteil von Bref genannt.

PHP-Entwicklung mit Bref

Waren für Bref in den Versionen vor 0.5.0 noch das AWS-CLI-Tool sowie das AWS SAM (Serverless Application Model) CLI notwendig, stützt sich Bref inzwischen auf das Serverless Framework, ein Open-Source-Build- und -Deploy-System, das eine einheitliche Schnittstelle zu AWS und weiteren Cloudanbietern, darunter die Google Cloud Platform und Microsoft Azure, anbietet [8]. Für das Serverless Framework muss npm, der Paketmanager für Node.js, installiert sein. Für Bref werden PHP in der CLI-Variante inklusive cURL-, XML- und ZIP-Libraries sowie Composer, das projektbezogene Paket- und Abhängigkeitsmanagementtool für PHP, benötigt. Auf eine Anleitung zur Installation der genannten Tools wird an dieser Stelle verzichtet. Die Dokumentationsseiten der Tools stellen ausführliche Hinweise zur Inbetriebnahme auf unterschiedlichen Betriebssystemen zur Verfügung [9], [10].

Für die globale Installation des Serverless Frameworks ist folgendes Kommando zuständig:

$ sudo npm install -g serverless

Nach einigen Downloads, der Auflösung von Abhängigkeiten, Installation Tausender Dateien und obligatorischer Ausgabe von npm-Warnungen ist das Serverless-CLI einsatzbereit. Wird serverless ohne einen weiteren Parameter gestartet, findet man sich in einem Dialog wieder, um ein Projekt zu erstellen. Eine Liste der zur Verfügung stehenden Kommandos erhält man mit der help-Option, die je nach Kontext erweiterte Informationen ausgibt:

$ serverless --help

Damit das Serverless Framework Zugriff auf die benötigten AWS-Ressourcen erhält, müssen die Zugriffsdaten in Form von Key und Secret bekanntgegeben werden. Des Weiteren muss der Provider genannt werden. Das notwendige Kommando lautet für AWS wie folgt:

$ serverless config credentials --provider aws --key <key> --secret <secret>

Für den Zugriff auf die Services von AWS müssen im IAM (Identity and Access Management) Service die entsprechenden Rechte angelegt werden. Neben den AWS-verwalteten Richtlinien AWSLambdaFullAccess und AmazonAPIGatewayAdministrator wird mindestens Zugriff auf die Services CloudFormation und IAM benötigt. Die so erstellte Richtlinie ist in einem Gist-Eintrag bei GitHub zu finden [11]. Bei Verwendung weiterer AWS-Dienste sind die Zugriffsrechte entsprechend zu erweitern. Damit sind die Vorbereitungen abgeschlossen und Bref kann im Projektverzeichnis installie...

Neugierig geworden? Wir haben diese Angebote für dich:

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang