Eigentlich würde man an dieser Stelle nun einen Artikel über das Thema „Serverless Computing mit PHP“ erwarten. Doch diesmal erlaube ich mir einen Hinweis in eigener Sache. Denn tatsächlich gibt es einen solchen Artikel. Nur nicht hier. Denn ich hatte das Vergnügen, für das im August erscheinende Entwickler Magazin Spezial Vol. 21 zum Thema „Serverless“ einen Artikel schreiben zu dürfen. Da meiner Ansicht PHP nach wie vor nicht zum alten Eisen gehört, wollte ich mich dem Oberthema „Serverless“ aus der Richtung von PHP nähern.
Dabei kam mir der Zufall zu Hilfe, denn kurz zuvor hatte ich einen Tweet aufgeschnappt, der auf ein Projekt verwies, mit dem es (endlich) möglich wurde, PHP im Rahmen der Amazon Web Services (AWS) in der Serverless-Umgebung namens AWS Lambda einzusetzen. Der Name des Projektes: Bref. Bref bietet Tools, Dokumentation und PHP-Runtimes für AWS Lambda. Diese Kombination – bis vor einiger Zeit noch als Framework bezeichnet – erlaubt einem die Ausführung von PHP-Code in der Lambda-Umgebung. Der Artikel führt in die Thematik ein, beschreibt die Grundlagen von Bref und zeigt ein kleines Beispiel nebst kleineren Hürden und wie man diese bewältigt. Da sich in einem gedruckten Magazin schlecht meterlanger Quellcode abdrucken lässt, habe ich ein Beispiel aus dem Real Life auf GitHub bereit gestellt und an geeigneter Stelle kommentiert. Es handelt sich um die Funktion für die Formularbehandlung des Kontaktformulars, das bereits beim Artikel über Function Compute, der Serverless-Umgebung der Alibaba Cloud als Beispiel diente. Da sich die Bref-PHP-Runtime grundlegend von der Alibaba Cloud unterscheidet, der Code jedoch möglichst ähnlich und somit vergleichbar sein sollte, habe ich das Slim Framework in der kürzlich erschienenen Version 4 genutzt.
Kleine Anekdote am Rande: Als ich mit ersten Tests – oder sagen wir lieber der Recherche begonnen habe, lag Bref in Version 0.4.1 vor. Diese Fassung basierte noch auf den AWS-Tools sam (Serverless Application Model) CLI und der AWS-CLI selbst. Das funktionierte zwar alles prima, aber das Deployment bestand aus mehreren Schritten, die im Artikel beschrieben worden waren. Zwei Tage nach Abgabe des Artikels erschien Bref in der Version 0.5.0. Inklusive einem vollständigen Bruch der Rückwärtskompatibilität! Zwar sagten die Release Notes etwas anderes, aber durch den Wechsel auf das Serverless-Framework ließ sich die neue Version von Bref weder nutzen, noch installieren, ohne dass zunächst das Serverless-Framework installiert werden musste. Perfektes Timing! Zugegebenermaßen ist das Serverless-Framework schon ein praktisches Tool (auch wenn ich persönlich den Namen reichlich ungeschickt gewählt finde – wenn man „Serverless“ schreibt, ist nun das Framework oder das Konzept gemeint?), aber das hieß zwangsläufig, einige Abschnitte umzuschreiben, da der Artikel nicht bereits zum Erscheinungsdatum veraltet sein sollte. An dieser Stelle vielen Dank an die Verantwortlichen der Software & Support Media GmbH, die mir ohne Zögern die zusätzliche Zeit dafür eingeräumt haben!
Das Serverless-Spezial bietet natürlich auch weitere, spannende Themen, etwa Serverless Microservices mit Azure über die Laufzeitumgebung von AWS Lambda, Skalierbarkeit von Web-Applikationen mit AWS, Docker-Container in der Azure-Cloud usw., auch werden Security und datenschutzrechtliche Aspekte betrachtet. Ich bin auf jeden Fall gespannt und freue mich auf die Lektüre, aber natürlich auch auf Feedback!
…und jetzt erst gesehen – es gibt sogar eine Leseprobe! 🙂
Update
Der Artikel über Serverless Computing mit PHP hat es nun auch in die Ausgabe 01.2020 des PHP-Magazins geschafft:
Darüber freue ich mich natürlich sehr! Für Fragen, die sich auf den Artikel bzw. Bref beziehen, stehe ich natürlich gerne zur Verfügung. Da die Entwicklung von Bref sehr rasant fortschreitet, kann es sein, dass die im Artikel beschriebenen Verfahren inzwischen nicht mehr ganz aktuell sind und möglicherweise nicht unverändert umgesetzt werden können. Über diesbezügliche Hinweise würde ich mich sehr freuen, etwaige Updates werden dann hier veröffentlicht.