© Ozz Design/Shutterstock.com
Mit PHP in die Serverless-Umgebung von Alibaba Cloud

Serverless PHP goes China


Mit PHP in die Cloud – und auf nach China! Nachdem vor Kurzem im PHP Magazin [1] das Bref-Projekt betrachtet wurde, mit dem es gelang, PHP in der Serverless-Umgebung der Amazon Web Services (AWS Lambda) zu betreiben, stellt dieser Artikel den Serverless-Dienst der Alibaba Cloud vor. Auch diesmal liegt der Fokus darauf, PHP „ohne Server“ zu verwenden.

Ein Teilbereich des Serverless Computing ist die Kategorie FaaS (Function as a Service). Dabei werden von Cloud-Anbietern Laufzeitumgebungen für die Ausführung von Funktionen bereitgestellt. Beim Deployment wird die Business- bzw. Backend-Logik in die FaaS-Umgebung hochgeladen und anschließend ausgeführt. Natürlich muss bei den Cloud-Anbietern dafür letztlich Serverhardware zur Verfügung stehen, aber der Entwickler oder DevOps Engineer ist davon befreit, sich mit Administrationstätigkeiten wie Einrichtung der Hardware, Aktualisierung von Betriebssystemen, Libraries usw. zu beschäftigen. Als weiterer Vorteil wird die einfache horizontale Skalierbarkeit genannt. Steigt die Last oder werden mehr Anfragen gestellt, als der aktuelle Prozess verkraftet, werden automatisch weitere Instanzen der Funktion gestartet. Dasselbe Verfahren gilt für die umgekehrte Richtung: Wird die Funktion nicht verwendet, können die Instanzen vollständig heruntergefahren werden, was sich positiv auf die Kosten auswirkt.

Vor dem Einsatz ist es im Übrigen empfehlenswert, sich die Preisstruktur des jeweiligen Anbieters genauer anzusehen, die Kosten für Serverless-Dienste setzen sich aus unterschiedlichen Parametern zusammen, etwa Anzahl der Funktionsaufrufe, RAM-Anforderung, Ausführungszeit in Millisekunden und Datentransfer. Die technische Basis der Serverless-Dienste wird durch Containervirtualisierung realisiert, deren bekanntester Vertreter Docker sein dürfte. Serverless-Dienste sind bei allen größeren Cloud-Anbietern zu finden, wobei die Konzepte zwar identisch sind, die Features im Detail aber mitunter stark voneinander abweichen. Neben den drei größten Anbietern Amazon (Amazon Web Services), Microsoft (Azure) und Google (Google Cloud Platform) lohnt sich jedoch ein Blick auf weitere Dienstleister. Die vierte Position, gemessen an weltweiten Marktanteilen, besetzt aktuell Alibaba Cloud [2]. Dabei handelt es sich um ein Tochterunternehmen der chinesischen Alibaba Group, deren Kerngeschäft im elektronischen Handel liegt. In China seit geraumer Zeit Marktführer, kann Alibaba Cloud auch durch Wachstumsraten überzeugen, die nahezu doppelt so hoch sind wie beim Platzhirsch Amazon AWS. Zwar konzentrieren sich die Rechenzentren zum Großteil auf den chinesischen und asiatischen Raum, jedoch ist Alibaba Cloud seit 2016 auch in Frankfurt am Main vertreten. Dabei zeigt sich Vodafone Deutschland in einer Kooperation für den Betrieb der „EU Central 1“ genannten Region verantwortlich [3]. Alibaba Cloud bietet über 40 unterschiedliche Services, die sich in Kategorien wie Cloud Essentials (Elastic Computing, Network, Storage, Databases), Security, Analytics, Enterprise Applications usw. aufteilen. Analog zu anderen Cloud-Anbietern stellt Alibaba Cloud ein kostenloses Kontingent einiger kostenpflichtiger Dienste bereit. Der Serverless-Dienst gehört zum Bereich des Elastic Computing und nennt sich schlicht Function Compute, abgekürzt FC.

Als Programmiersprachen stehen JavaScript (Node. js), Python, Java, C# und – ein Alleinstellungsmerkmal innerhalb der großen Cloud-Anbieter – PHP zur Verfügung. Die von Function Compute unterstützte Version beschränkt sich aktuell auf PHP 7.2, jedoch ist es mittels der sogenannten und erst seit Oktober 2019 verfügbaren Custom Runtime möglich, eine beliebige Laufzeitumgebung und somit auch eine PHP-Version einzurichten. Ein ähnliches Verfahren wird von AWS Lambda mit den Custom Runtimes angeboten und vom Projekt Bref genutzt [4]. Im Folgenden werden die Verwendung der von Alibaba Cloud supporteten PHP-7.2-Laufzeitumgebung und anschließend der Aufbau einer eigenen Runtime mit PHP 7.4 gezeigt.

Tools und Begriffe

Nach der obligatorischen Registrierung bei der Alibaba Cloud müssen die einzelnen Dienste aktiviert und deren Vertragsbedingungen akzeptiert werden. Die in Englisch verfügbare Dokumentation ist grundsätzlich gut, Ausnahmen bestätigen jedoch die Regel, dazu gleich mehr. Zur Nutzung von Function Compute existieren die CLI-Tools fcli und fun, darüber hinaus können alle Managementtätigkeiten mittels der als Console bezeichneten webbasierten Admin UI durchgeführt werden. Des Weiteren wird Alibaba Cloud vom Serverless Framework unterstützt, das eine einheitliche Schnittstelle für das Deployment und den Betrieb von Serverless-Anwendungen bietet [5]. Um den Toolstack ein wenig in Zaum zu halten, und aus Gründen der besseren Nachvollziehbarkeit werden in den folgenden Beispielen die nativen CLI-Tools bevorzugt. Alle Beispiele werden auf einem Linux-Rechner unter Ubuntu 19.10 (Eoan Ermine) ausgeführt, als Voraussetzung für die Installation des fun-Tools muss Node.js installiert sein, zur lokalen Ausführung der Laufzeitumgebung muss Docker auf dem System vorhanden sein.

Zu Beginn müssen einige Begriffe aus der Function-Compute-Welt definiert werden. Unter einem Service wird ein Objekt zur Strukturierung und Organisation verstanden, vergleichbar mit einem Verzeichnis oder einer Anwendung. Eine (FC-)Funktion ist einem Service zugeordnet und beinhaltet Code zur Ausführung einer Aufgabe. Dabei kann eine Function-Compute-Funktion im Minimalfall aus einer einzigen PHP-Funktion bestehen, es können sich jedoch ebenso größere Programmeinheiten, etwa unter Verwendung eines Frameworks, dahinter verbergen. Die Ausführung der Funktion wird durch sogenannte Trigger veranlasst, von denen es unterschiedliche Typen gibt, etwa OSS-Trigger, TableStore-Trigger oder Timer-Trigger. Beispielsweise wird eine Funktion mittels Timer-Trigger zeitbasiert angesteuert, vergleichbar mit einem Cronjob. HTTP-Trigger ermöglichen die Funktionsausführung bei HTTP Requests wie GET, POST usw. und gleichen damit dem Betrieb von PHP in einer Webserverumgebung.

Mit fun zu Hello, World!

Das Tool fcli unterstützt das gleichzeitige Erzeugen von Funkt...

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

Angebote für Gewinner-Teams

Wir bieten Lizenz-Lösungen für Teams jeder Größe: Finden Sie heraus, welche Lösung am besten zu Ihnen passt.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang