Serverless · Cloud · Architektur
Was ist Serverless, genau?
Das Wort ist ein Marketingbegriff, der hängen geblieben ist, und er führt beim ersten Mal fast alle in die Irre. Serverless heißt nicht, dass es keinen Server gibt. Es heißt, dass Sie nie einen sehen: Sie wählen nicht seine Größe, spielen keine Updates ein und entscheiden nicht, wie viele laufen. Das macht jemand anders, und abgerechnet wird, was Ihr Code tatsächlich getan hat.
Was es wirklich wegnimmt
Auf einem VPS mieten Sie eine Maschine. Sie existiert, ob jemand kommt oder nicht, Sie wählen RAM und vCPU, Sie patchen den Kernel und entscheiden, wann eine zweite dazukommt. Jede dieser Entscheidungen gehört Ihnen, und jede Stunde auf der Rechnung ebenso.
Serverless nimmt die Maschine als Denkeinheit weg. Sie übergeben der Plattform ein Stück Code und einen Auslöser: eine HTTP-Anfrage, eine Nachricht in einer Queue, eine Datei, die im Speicher landet. Die Plattform sorgt dafür, dass dieser Code läuft, wenn der Auslöser eintritt. Wie viele Kopien laufen und worauf, ist weder Ihr Problem noch Ihre Entscheidung.
Das ist der ganze Handel, schlicht gesagt: Sie geben die Kontrolle über die Laufzeitumgebung ab und betreiben sie dafür nie.
Die zwei Familien
Function as a Service ist der Teil, an den man zuerst denkt. Sie deployen eine Funktion, die Plattform führt sie je Ereignis aus, und sie ist wieder weg. AWS Lambda, Google Cloud Functions und Azure Functions sind die bekannten Beispiele.
Managed Serverless Services sind die größere und seltener besprochene Hälfte: Datenbanken, Queues, Objektspeicher und Suche, abgerechnet je Anfrage oder je Arbeitseinheit statt je bereitgestellter Instanz. Die meisten echten Serverless-Systeme bestehen überwiegend daraus, mit einer bescheidenen Menge Funktionscode, der die Teile zusammenhält.
Abrechnung, und warum Scale to Zero die Schlagzeile ist
Eine gemietete Maschine wird nach Uhrzeit abgerechnet. Sie kostet um drei Uhr nachts ohne Besucher dasselbe wie in der Spitze. Serverless rechnet je Aufruf ab, plus die Ressourcen, die dieser Aufruf während seiner Laufzeit verbraucht hat.
Die Folge ist Scale to Zero: ohne Verkehr läuft nichts und es gibt nichts zu zahlen. Für ein Nebenprojekt, ein internes Werkzeug, das zweimal die Woche benutzt wird, oder eine stoßweise Last, die meistens still liegt, ist das der echte Vorteil, und er ist groß.
Derselbe Mechanismus wirkt unter Last in die andere Richtung. Die Plattform startet so viele gleichzeitige Kopien, wie die Ereignisse verlangen, ohne dass Sie einen Autoscaler konfigurieren, und das ist der zweite echte Vorteil.
Die Einschränkungen, die das Verkaufsargument auslässt
Kaltstarts. Ist keine Kopie Ihrer Funktion warm, zahlt die erste Anfrage die Initialisierung der Laufzeitumgebung und Ihrer Abhängigkeiten, bevor Ihr Code überhaupt beginnt. Kleinere Bundles und leichtere Runtimes verringern das. Anbieter verkaufen vorgewärmte Kapazität, die funktioniert und Scale to Zero still aufhebt, denn vorgewärmt heißt im Leerlauf bezahlt.
Zustandslosigkeit. Nichts, was Sie im Speicher oder auf lokaler Platte halten, ist beim nächsten Mal garantiert da. Zwei Aufrufe können auf verschiedenen Instanzen landen, und eine Instanz verschwindet, wann die Plattform es entscheidet. Zustand gehört in eine Datenbank oder einen Objektspeicher, immer.
Ausführungsgrenzen. Ein Aufruf hat eine maximale Dauer und eine Speicherobergrenze. Lange Batch-Läufe und alles, was stundenlang eine Verbindung offen hält, passen schlecht, und die Grenze zu erreichen ist keine Warnung, sondern ein Fehlschlag.
Kopplung. Der Funktionsrumpf ist meist portabel. Die Ereignisformen, das Identitätsmodell und die umgebenden Managed Services sind es nicht, und genau dort kostet ein späterer Wechsel wirklich.
Wo sich die Kostenkurve kreuzt
Abrechnung je Aufruf ist billig, wenn die Maschine im Leerlauf gewesen wäre, und teuer, wenn sie beschäftigt gewesen wäre. Unterhalb einer gewissen gleichmäßigen Last gewinnt Serverless deutlich. Oberhalb zahlen Sie je Arbeitseinheit einen Aufschlag für Elastizität, die Sie nicht mehr nutzen, und ein bescheidener, dauerhaft laufender Server ist günstiger und berechenbarer.
Die ehrliche Regel lautet, auf die Form des Verkehrs zu schauen und nicht auf seine Menge. Stoßweise, gelegentlich und unvorhersehbar spricht für Serverless. Gleichmäßig und durchgehend spricht für eine monatlich gemietete Maschine, und dann ist die Betriebsarbeit, die Sie zurücknehmen, ein fairer Preis für eine Rechnung, die aufhört zu überraschen.
Liegt Ihre Last auf der gleichmäßigen Seite, ist ein VPS die schlichte Antwort, und Docker plus etwas Disziplin gibt Ihnen den größten Teil der Reproduzierbarkeit zurück, die Serverless ursprünglich attraktiv machte.
Ein Server für die gleichmäßige Seite der Kurve
Sobald der Verkehr nicht mehr stoßweise ist, kostet die Abrechnung je Aufruf mehr als eine Maschine, die ohnehin beschäftigt gewesen wäre. DigitalOcean bietet VPS und Cloud-Server mit vollem Root-Zugang, monatlich abgerechnet statt pro Aufruf.
DigitalOcean Cloud ansehen →Affiliate-Link - er unterstützt diese kostenlosen Guides.
Kurz gefasst
Serverless heißt, dass die Server das Problem von jemand anderem sind, nicht dass sie fehlen. Sie gewinnen Scale to Zero, automatische Nebenläufigkeit und kein Patchen. Sie akzeptieren Kaltstarts, Zustandslosigkeit, Ausführungsgrenzen und eine Rechnung, die der Nutzung folgt statt der Zeit. Es passt zu stoßweiser und zeitweiliger Arbeit und hört auf zu passen, sobald der Verkehr gleichmäßig genug wird, dass eine gemietete Maschine ohnehin beschäftigt gewesen wäre.