Serverless Computing: wie Funktionen als Dienst arbeiten und wann sie passen

Cloud ComputingAktualisiert am 15. Oktober 202610 Min. Lesezeit

Serverless Computing beschreibt ein Cloud-Modell, bei dem ein Anbieter die Ausführungsumgebung für Programmcode verwaltet. Das Wort „serverless“ bedeutet dabei nicht, dass keine Server vorhanden sind. Die Server stehen in Rechenzentren und führen den Code aus. Sie müssen jedoch nicht von den Nutzenden selbst bereitgestellt und laufend verwaltet werden.

Was Serverless Computing auszeichnet

Im Mittelpunkt stehen häufig einzelne Funktionen: kleine Programmeinheiten, die auf ein Ereignis reagieren und eine klar umrissene Aufgabe erledigen. Ein Ereignis kann etwa eine eingehende Anfrage, eine Änderung an einer Datei oder eine Nachricht in einer Warteschlange sein. Der Cloud-Dienst startet die passende Funktion, übergibt ihr die benötigten Daten und stellt Rechenressourcen bereit.

Für kleine Unternehmen und einzelne Entwicklungsteams kann dieses Modell den Betrieb vereinfachen. Statt Kapazitäten für einen dauerhaft laufenden Server zu planen, lässt sich Code in verwalteten Umgebungen ausführen. Das verändert aber nicht nur den Infrastrukturaufwand, sondern auch die Art, wie Software entworfen, überwacht und abgesichert werden sollte. Die klassischen Servicemodelle, an die dieses Modell anknüpft, erklärt der Beitrag zu IaaS, PaaS und SaaS; einen Überblick über die Betriebsmodelle der Cloud gibt die Themenseite Cloud Computing.

Wie Serverless Computing im Ablauf funktioniert

Eine serverlose Anwendung besteht oft aus mehreren Funktionen, die über Ereignisse oder Programmierschnittstellen miteinander verbunden sind. Eine Funktion nimmt beispielsweise eine Anfrage entgegen, eine weitere verarbeitet Daten, und ein nachgelagerter Dienst speichert das Ergebnis. Die einzelnen Schritte können unabhängig voneinander ausgeführt werden.

Typischerweise umfasst der Ablauf diese Schritte:

Muss für einen Aufruf erst eine neue Ausführungsinstanz gestartet werden, spricht man von einem Kaltstart. Ein solcher Aufruf kann spürbar länger dauern als einer, der eine bereits bereitgehaltene Instanz nutzt.

Die Entwicklungsteams legen dabei fest, was der Code tun soll und welche Berechtigungen, Einstellungen und Abhängigkeiten er benötigt. Der Anbieter kümmert sich unter anderem um die zugrunde liegende Ausführungsinfrastruktur und deren Kapazität. Welche Aufgaben der Dienst konkret übernimmt, hängt vom jeweiligen Angebot ab.

Eine Funktion ist nicht automatisch eine vollständige Anwendung. Sie kann Teil eines größeren Systems sein, das zusätzlich Datenspeicher, Warteschlangen, Programmierschnittstellen oder andere verwaltete Dienste nutzt. Diese Bausteine müssen miteinander abgestimmt werden. Fehler in einer einzelnen Funktion können sich auf weitere Verarbeitungsschritte auswirken. Funktionen werden in der Regel zustandslos ausgelegt: Informationen, die über einen einzelnen Aufruf hinaus benötigt werden, gehören in einen Datenspeicher und nicht in die Ausführungsinstanz, weil diese jederzeit ersetzt werden kann.

Was sich beim Betrieb verändert

Keine dauerhafte Serververwaltung für einzelne Funktionen

Bei einem klassischen, dauerhaft laufenden Anwendungsserver kümmern sich Verantwortliche unter anderem um die Bereitstellung, Aktualisierung und Kapazitätsplanung des Systems. Bei einem serverlosen Funktionsdienst übernimmt der Anbieter einen großen Teil dieser Infrastrukturaufgaben. Das kann Routinearbeit verringern, beseitigt aber nicht die Verantwortung für die Anwendung.

Der Code muss weiterhin gepflegt werden. Dazu gehören Abhängigkeiten, Zugriffsrechte, Fehlerbehandlung und die Überwachung des Betriebs. Auch die Konfiguration der Cloud-Dienste bleibt eine Aufgabe des Teams. Serverless Computing verlagert somit einen Teil der Betriebsarbeit, statt sie vollständig entfallen zu lassen.

Ressourcen richten sich nach der Nachfrage

Viele Funktionsdienste können bei zunehmender Zahl von Ereignissen zusätzliche Ausführungsinstanzen bereitstellen und bei geringer Nachfrage wieder weniger Ressourcen verwenden. Dadurch muss die Kapazität nicht zwingend auf einen gleichbleibenden Bedarf ausgelegt sein. Die konkrete Skalierung und mögliche Grenzen legt jedoch der Dienst fest.

Das Verhalten sollte zur Anwendung passen. Begrenzungen für Laufzeit, Speicher oder gleichzeitige Ausführungen können beeinflussen, wie eine Funktion gestaltet werden muss. Auch abhängige Systeme müssen mit einer steigenden Zahl von Aufrufen umgehen können. Wenn etwa jede Funktionsausführung denselben Datenspeicher stark belastet, wird die Skalierung der Funktion allein den Engpass nicht lösen.

Abrechnung nach Nutzung ist nicht automatisch günstiger

Bei vielen Angeboten hängen die Kosten unter anderem von Aufrufen, Ausführungsdauer und bereitgestellten Ressourcen ab. Für Anwendungen mit unregelmäßiger oder wechselnder Nutzung kann dieses Modell passend sein. Bei dauerhaft hoher Auslastung können andere Betriebsmodelle wirtschaftlicher oder einfacher kalkulierbar sein.

Eine Einschätzung sollte deshalb mehrere Faktoren berücksichtigen: Häufigkeit und Dauer der Ausführungen, benötigte Ressourcen, Kosten für verbundene Dienste sowie Datenübertragung. Auch Protokollierung und Überwachung können Aufwände verursachen. Ohne ein realistisches Nutzungsprofil lässt sich aus dem Abrechnungsmodell allein keine verlässliche Kostenprognose ableiten. Wie sich Cloud-Ausgaben zuordnen und überwachen lassen, zeigt der Beitrag Cloud-Kosten kontrollieren.

Wann Serverless Computing gut passen kann

Das Modell eignet sich besonders für Aufgaben mit klaren Auslösern und abgegrenzter Verarbeitung. Dazu zählen etwa die Verarbeitung eingehender Nachrichten, die Reaktion auf Änderungen in einem Datenspeicher oder einzelne Schritte in einem automatisierten Arbeitsablauf. Auch Programmierschnittstellen können mit Funktionen umgesetzt werden, sofern Laufzeit und Ressourcenbedarf zu den Vorgaben des Dienstes passen.

Serverloses Computing kann sinnvoll sein, wenn:

Gerade für kleine Unternehmen ist der geringere Infrastrukturaufwand ein möglicher Vorteil. Ein Team kann sich stärker auf den Anwendungscode und die fachliche Funktion konzentrieren. Voraussetzung dafür ist, dass die Architektur nicht unnötig kompliziert wird und die Verantwortlichen die genutzten Cloud-Dienste verstehen.

Wann das Modell weniger geeignet ist

Nicht jede Anwendung lässt sich sinnvoll in einzelne, ereignisgesteuerte Funktionen aufteilen. Anwendungen mit dauerhaft laufenden Prozessen, ungewöhnlichen Laufzeitanforderungen oder engem Bedarf an Kontrolle über das Betriebssystem können in einer anderen Umgebung einfacher zu betreiben sein. Entscheidend sind die Vorgaben des konkreten Dienstes und die Anforderungen der Software. Für solche Fälle kommen eher Container oder virtuelle Maschinen infrage; die Unterschiede beschreibt der Beitrag Container und virtuelle Maschinen.

Auch sehr eng miteinander verbundene Funktionen können zu zusätzlicher Komplexität führen. Wenn ein Vorgang viele Schritte über mehrere Dienste hinweg umfasst, müssen Reihenfolge, Wiederholungen und Fehlerfälle sauber behandelt werden. Ein zeitweiliger Ausfall oder eine Verzögerung in einem Schritt darf nicht unkontrolliert zu doppelter Verarbeitung oder verlorenen Daten führen.

Ein weiterer Punkt ist die Abhängigkeit von den Funktionen und Schnittstellen eines Anbieters. Anwendungen können Dienste nutzen, die sich nicht ohne Anpassungen auf eine andere Umgebung übertragen lassen. Wer diese Abhängigkeit begrenzen möchte, sollte früh dokumentieren, welche Anbieterfunktionen verwendet werden und wie Daten sowie Anwendungscode exportiert oder anderweitig genutzt werden können.

Sicherheit und Zuverlässigkeit im Blick behalten

Die Verwaltung der Infrastruktur durch den Anbieter nimmt dem Entwicklungsteam nicht die Verantwortung für sichere Anwendungen ab. Besonders wichtig ist das Prinzip der geringsten Berechtigung: Eine Funktion sollte nur auf die Ressourcen zugreifen können, die sie für ihre Aufgabe benötigt. Zugangsdaten gehören nicht ungeschützt in den Quellcode oder in Protokolle.

Ebenso wichtig ist eine sorgfältige Behandlung der Eingaben. Ereignisdaten können fehlerhaft oder unerwartet sein. Funktionen sollten ungültige Informationen erkennen und nachvollziehbar reagieren. Bei wiederholten Aufrufen ist außerdem zu klären, ob derselbe Verarbeitungsschritt erneut ausgeführt werden darf, ohne unerwünschte Nebenwirkungen auszulösen.

Für einen verlässlichen Betrieb braucht es nachvollziehbare Protokolle und geeignete Überwachung. Sie sollten zeigen, ob Funktionen aufgerufen werden, wo Fehler auftreten und ob die Ausführungszeiten auffällig sind. Dabei gilt: Protokolle können sensible Informationen enthalten. Umfang und Zugriff sollten daher bewusst festgelegt werden.

So lässt sich die Eignung einschätzen

Vor einer Umsetzung hilft es, die Aufgabe präzise zu beschreiben. Welches Ereignis löst die Verarbeitung aus? Welche Daten werden benötigt? Welche Dienste sind beteiligt? Wie soll die Anwendung auf Wiederholungen, Verzögerungen und Fehler reagieren? Solche Fragen machen sichtbar, ob sich die Arbeit in unabhängige Funktionen gliedern lässt.

Danach sollten die technischen Grenzen des gewählten Dienstes mit den Anforderungen abgeglichen werden. Dazu zählen unterstützte Laufzeiten, maximale Ausführungsdauer, verfügbare Ressourcen und Möglichkeiten zur Überwachung. Auch die Abhängigkeiten von Datenspeichern und weiteren Cloud-Diensten gehören in diese Einschätzung.

Ein begrenzter Anwendungsfall kann helfen, Architektur und Betriebsabläufe zunächst überschaubar zu halten. Dabei geht es nicht um eine pauschale Empfehlung für oder gegen Serverless Computing, sondern darum, reale Anforderungen mit dem Funktionsumfang und den Grenzen des Dienstes abzugleichen. Für sicherheitskritische oder geschäftlich wichtige Systeme kann zusätzlich fachkundige Unterstützung sinnvoll sein. Soll eine bestehende Anwendung im Zuge eines Umzugs in die Cloud auf Funktionen umgebaut werden, gehört diese Prüfung in die Gesamtplanung, siehe Cloud-Migration planen.

Fazit

Serverless Computing kann den Infrastrukturaufwand für ereignisgesteuerte Aufgaben verringern und Ressourcen flexibel bereitstellen. Es passt vor allem dann, wenn Funktionen klar abgegrenzt sind und Laufzeit, Skalierung sowie Abhängigkeiten zu den Anforderungen passen. Eine sorgfältige Planung von Sicherheit, Kosten und Fehlerbehandlung bleibt dennoch unverzichtbar.

Häufige Fragen

Funktioniert eine serverlose Anwendung auch ohne Internetverbindung?

Die Ausführung eines Cloud-Funktionsdienstes setzt in der Regel eine Verbindung zu den verwendeten Cloud-Diensten voraus. Eine lokale Entwicklungsumgebung kann Teile des Ablaufs nachbilden, ersetzt aber nicht automatisch die tatsächliche Laufzeit beim Anbieter. Für den Betrieb ohne Netzverbindung ist daher eine andere Ausführungsumgebung erforderlich.

Welche Programmiersprachen sind möglich?

Das hängt vom jeweiligen Dienst ab. Häufig stehen mehrere verbreitete Laufzeiten zur Auswahl, doch nicht jede Sprache und jede Version wird überall unterstützt. Prüfen Sie vor der Architekturentscheidung, ob benötigte Bibliotheken und Laufzeitversionen verfügbar sind.

Lassen sich zeitgesteuerte Aufgaben mit Funktionen ausführen?

Viele Cloud-Umgebungen können zeitgesteuerte Auslöser mit Funktionen verbinden. Damit lassen sich wiederkehrende Abläufe anstoßen, ohne dass dafür zwingend ein dauerhaft laufender Prozess nötig ist. Wie Zeitpläne eingerichtet und verpasste Ausführungen behandelt werden, richtet sich nach dem verwendeten Dienst.

Was geschieht bei einem Ausfall des Cloud-Anbieters?

Eine serverlose Anwendung hängt von der Verfügbarkeit des Anbieters und ihrer verbundenen Dienste ab. Für wichtige Anwendungen sollte festgelegt sein, wie Ausfälle erkannt, Verantwortliche informiert und betriebliche Abläufe fortgeführt werden. Die konkrete Planung richtet sich nach den geschäftlichen Anforderungen und den Möglichkeiten des Anbieters.