Information!

Serverless on-demand auto-scaling mit Laravel Vapor

05. August 2019

Veröffentlicht in:

Webentwicklung

Serverless on-demand auto-scaling mit Laravel Vapor

In der vergangenen Woche fand in New York City die bereits siebte Laracon US Konferenz statt. Taylor Otwell, der Hauptentwickler hinter dem PHP-Framework präsentiert auf diesen Konferenzen traditionsgemäß neue Open-Source oder SaaS Produkte rund um das Ökosystem. Mit der Neuankündigung von Laravel Vapor so auch dieses Jahr.

Doch was verbringt sich hinter dem neuen Produkt?

In einem Satz zusammengefasst ist Laravel Vapor eine „Serverless Deployment Plattform“ mit der sich Laravel Anwendungen auf den „Serverless“-Lösungen der Amazon Web Services (AWS) hosten lassen.

Wir möchten an dieser Stelle etwas weiter ausholen. Das Buzzword „Serverless“ mag vermutlich vielen noch nicht vertraut sein.

Hosting auf einem Webserver

Der klassische Prozess eine Website oder Webanwendung im Internet zu veröffentlichen, war bisher das Mieten oder Betreiben von Webservern oder Teilen (Shared Hosting) davon.

Für das Einspielen von Softwareupdates war der Betreiber oder bei Managed-Servern der Hosting Anbieter dafür verantwortlich. An Tagen mit hohem Traffic (bspw. nach einer TV-Werbung oder anderen Marketingoffensive) musste dafür gesorgt werden, dass mehrere Server hinzu geschaltet werden. Um die Serverlast auf die neuen Server zu verteilen, musste ein weiterer „Load Balancer“-Server eingerichtet werden. Sank der Traffic wieder, wurden aus Kostengründen die Server in der Regel erneut vom Netz genommen. Diese Prozesse ließen sich zwar auch automatisieren, die technische Komplexität ist aber so hoch, dass sich dies die wenigsten Unternehmen leisten konnten. Zudem war ein minimal Server-Setup, auch in Zeiten mit keinem Traffik (z. B. nachts), immer vonnöten. Andernfalls wäre die Website nicht mehr erreichbar.

Serverless

Mit der „Serverless“-Technologie sollen die Probleme, die durch das klassische Webserver Hosting entstehen, verhindert bzw. vereinfacht werden. Der Name kann dabei etwas missverständlich sein. Letztlich kommen sehr wohl Server zum Einsatz, diese werden aber vollumfänglich durch die Anbieter der „Serverless“-Produkte aufgesetzt, verwaltet und skaliert.

Produkte wie AWS Lambda oder Amazon Aurora von Amazon oder Cloud Functions von Google sind in diesem Bereich die führend. Es wird keine bestimmte Hardware gemietet, die Abrechnung basiert auf Basis von Zugriffszahlen (Web Request).

Bei kleinen oder geringen Zugriffszahlen (das bedeutet bei Amazon alles unter 1.000.000 Zugriffe pro Monat) entstehen keine Kosten. Erst darüber werden Kosten fällig. Diese können sie der Preisliste entnehmen.

Vereinfacht ausgedrückt wird dem Anbieter der Quellcode der Webseite bzw. Webanwendung zugespielt und gesagt: „Hier haben Sie die Daten, bitte kümmern Sie sich um alles weitere. Wir möchten nichts zahlen, wenn keine Zugriffe erfolgen und wir sind bereit die Kosten zu tragen, wenn plötzlich täglich eine Million oder mehr Zugriffe erfolgen. Bitte stellen Sie nur sicher, dass unsere Website in jedem Fall ohne Einschränkungen erreichbar ist“.

Ganz so einfach war es bisher jedoch nicht. Gerade die Einrichtung und Konfiguration des AWS Kontos sowie das Verknüpfen der verschiedenen Services (Lambda, S3, CloudFront, DynamoDB, SQS, Aurora, SES etc.) war bisher doch etwas aufwendiger. Genau hier kommt Laravel Vapor ins Spiel und verspricht diesen Prozess enorm zu vereinfachen.

Laravel Vapor

Die neue Plattform Laravel Vapor besteht nach aktuellem Kenntnisstand aus des folgenden zwei Bestandteilen:

  • Das SaaS Produkt an sich, welches eine webbasierte Verwaltungsoberfläche bietet.
  • Zudem wird es ein Composer Paket geben, welches die eigene Laravel Anwendung auf einen „Serverless“-Betrieb vorbereitet und einige Kommandozeilen-Befehle für das Deployment mit sich bringt. Laut Aussagen von Taylor Otwell muss lediglich ein AWS Token im Vapor Konto hinterlegt werden. Über die Verwaltungsoberfläche können anschließend die zu verwendeten Services einrichtet und verwaltet werden. Diese Aufgaben werden über Schnittstellen im Hintergrund geregelt.

Im Folgenden möchten wir kurz auf einige der Funkionen eingehen:

Production und Staging Umgebungen

Ohne großen Aufwand können verschiedene Entwicklungsumgebungen eingerichtet werden. Dazu werden für jede Umgebung individuelle kryptische Domains eingerichtet. Für die Live Umgebung kann eine zusätzlich Domain eingerichtet, registriert und mit einem TLS Zertifikat versehen werden.

Wird eine Live Domain in den Wartungsmodus gesetzt, kann die gleiche Instanz über die Entwicklungsdomain ohne Wartungsmeldung aufgerufen werden.

Rollback

Über die Rollback Funktion soll es möglich sein zu einem beliebigen sekundengenauen Zeitpunkt zurückzuspringen. Dabei werden zudem alle Umgebungsvariablen wiederhergestellt. Ein Verlust der Daten scheint daher nahezu unmöglich.

Metriken

Über Metriken kann werden die Zugriffe und AWS Kosten dargestellt. In den Metriken können ebenfalls „Alarms“ (E-Mail Benachrichtigungen) eingerichtet werden, wenn gewisse Zugriffszahlen oder Kosten erreicht werden.

Continuous integration

Es wird zudem möglich sein, das Vapor CLI Tool direkt im Projekt zu integrieren, sodass ein Deploy direkt aus der „Continuous-Integration“-Pipeline angestoßen werden kann.

Databases, Caching, E-Mail Versand, DNS- und Zertifikatsverwaltung und Queue

Für all diese Anforderungen wird Laravel Vapor Lösungen bereitstellen.

Fazit

Serverless und damit Laravel Vapor wird das klassische Hosting nicht ersetzen. Es gibt genügend Anwendungsfälle in denen das klassische Hosting zu bevorzugen ist. Es bietet aber vor allem kleinen und mittelständigen Unternehmen die Möglichkeit eines automatisierten Skalierungsprozesses der IT-Infrastruktur.

Wir freuen uns im kommenden Monat die ersten Erfahrungen sammeln zu können und auf die ersten Live Tests. Bei Fragen können sie uns gerne ansprechen! Wir beraten Sie gerne.

Können wir weiterhelfen?

Sie haben ein spannendes Projekt und möchten mit uns zusammenarbeiten? Kontaktieren Sie uns jetzt!

Kostenloses Erstgespräch