Anmelden / Registrieren Konto

Cloudnative Anwendungen

Was ist Function-as-a-Service (FaaS)?

Function-as-a-Service oder FaaS ist ein ereignisgesteuertes Computing-Modell, das in Stateless-Containern ausgeführt wird und dessen Funktionen die serverseitige Logik sowie den Status mithilfe von Services verwalten. 

Mit ihm können Entwickler diese Anwendungspakete als Funktionen entwickeln, ausführen und verwalten, ohne eine eigene Infrastruktur unterhalten zu müssen.

FaaS stellt eine Methode zur Implementierung des Serverless Computings dar, bei dem Entwickler eine Geschäftslogik zur Ausführung in Containern schreiben, die vollständig mit einer Plattform verwaltet werden.

Eine solche Plattform wird üblicherweise in der Cloud verwendet, allerdings wird das Modell bereits auch vermehrt mit lokalen und Hybrid-Bereitstellungen eingesetzt.

Bei der Serverless-Variante werden Infrastrukturaufgaben wie die Verwaltung und Provisionierung von Servern sowie die Ressourcenzuweisung an eine Plattform (wie Red Hat OpenShift) übertragen, damit sich die Entwickler auf das Programmieren von Code und die Bereitstellung geschäftlicher Werte konzentrieren können.

Unter einer Funktion versteht man eine Softwarekomponente, mit der eine geschäftliche Logik ausgeführt wird. Anwendungen können aus vielen Funktionen bestehen.

Das FaaS-Modell bietet eine Möglichkeit, Apps mit einer Serverless-Architektur zu erstellen, allerdings suchen Entwickler angesichts der steigenden Popularität des Serverless-Modells vermehrt nach Lösungen zur Erstellung von Serverless Microservices und Stateless-Containern.

Beliebte Beispiele für FaaS sind:

  • AWS Lambda
  • Google Cloud Functions
  • Microsoft Azure Functions (Open Source)
  • OpenFaas (Open Source)

Wie funktioniert Function-as-a-Service?

FaaS bietet Entwicklern eine Abstraktion zur Ausführung von Anwendungen als Reaktion auf Ereignisse, und zwar ohne Serververwaltung. So kann z. B. ein Datei-Upload zur Aktivierung von benutzerdefiniertem Code führen, mit dem die Datei in verschiedene Formate transkodiert wird.

FaaS-Infrastrukturen werden üblicherweise nach ihrer Nutzung bzw. über ein ereignisgesteuertes Ausführungsmodell berechnet, das heißt, es steht allzeit zur Verfügung, erfordert aber keinerlei permanent im Hintergrund ausgeführten Serverprozesse wie bei platform-as-a-service (PaaS)

Moderne PaaS-Lösungen bieten Serverless-Funktionen im Rahmen allgemeiner Workflows, mit denen Entwickler Anwendungen bereitstellen können, wodurch sich die Grenzen zu FaaS immer weiter verwischen. 

Tatsächlich ist es so, dass moderne Anwendungen aus einer Kombination dieser Lösungen bestehen, also Funktionen, Microservices und langfristig ausgeführten Services.

Die Verfügbarkeit der Funktion sowie die Ressourcenzuweisung werden von einem Cloud-Anbieter gehandhabt. Da Funktionen nicht ressourcen-, sondern ereignisgesteuert sind, lassen sie sich auf einfachste Weise skalieren.

Bestimmte architekturtechnische Beschränkungen ermöglichen die Aktivierung mancher dieser Vorteile, darunter Zeit-Limits bezüglich ihrer Ausführung, weshalb es möglich sein muss, die Funktion umgehend starten und ausführen zu können. 

Funktionen werden binnen Millisekunden gestartet und verarbeiten dann individuelle Anfragen. Wenn für Ihre Funktion mehrere gleichzeitige Anfragen vorliegen, erstellt das System Kopien in der entsprechenden Zahl.

Geht die Nachfrage wieder zurück, wird die Anwendung herunterskaliert. Die dynamische Skalierung ist ein Vorteil von FaaS und dazu noch kostengünstig, weil Anbieter lediglich die tatsächlich genutzten Ressourcen und nicht die Standby-Zeit berechnen.

Bei der Ausführung in lokalen Umgebungen kann diese Dynamik zu einer Steigerung der Dichte Ihrer Plattform führen und so die Ausführung von mehr Workloads und die Optimierung der Ressourcennutzung ermöglichen.

Ein ereignisgesteuerter Service, der eine horizontale Skalierung erfordert, kann sowohl als Funktion als auch als RESTful-Anwendung funktionieren. 

FaaS eignet sich gut für hochvolumige Transaktionen und selten ausgeführte Workloads, darunter die Erstellung von Berichten, Bildverarbeitung oder geplante Aufgaben. Zu den gängigen Use Cases für FaaS gehören Datenverarbeitung, IoT Services sowie mobile oder Web Apps.

Sie können mit FaaS eine vollständige Serverless-Anwendung entwickeln oder eine Anwendung aus teils Serverless-, teils traditionellen Microservice-Komponenten zusammenstellen.

Vorteile von FaaS

  • Gesteigerte Entwicklerproduktivität und kürzere Entwicklungszyklen
  • Keine Verantwortung für das Servermanagement
  • Einfache Skalierung; horizontale Skalierung mit der Plattform
  • Pay-as-you-go-Verbrauchsmodell
  • Möglichkeit der Programmierung von Funktionen in fast allen Programmiersprachen

Wie unterscheiden sich das FaaS- und das Serverless-Modell?

Zu Anfang waren die Begriffe FaaS und Serverless mehr oder weniger synonym, allerdings hat sich letzteres Konzept mittlerweile zu einem größeren Satz an Architekturmustern und -praktiken erweitert, bei denen neben der in FaaS kodierten Geschäftslogik vermehrt allgemeine Services genutzt werden.

Serverless kann von Microservices und sogar traditionellen Apps genutzt werden, das heißt, solange sie containerisiert werden und die Anforderungen für dynamische Skalierung und Statusmanagement einhalten. 

Der Begriff „Serverless" steht zudem für verwaltete Services, darunter Datenbanken und Messaging-Systeme, bei denen Entwickler oder Administratoren nichts mit der Systemausführung zu tun haben, weil diese vom Cloud-Anbieter oder einem Drittunternehmen gehandhabt wird.  

Die größten Vorteile für Serverless-Entwickler ergeben sich aus der Kombination aus FaaS und gängigen Backend Services (wie Datenbanken, Messaging und Authentifizierung), die über eine ereignisgesteuerte Architektur miteinander verbunden sind.

Die Kubernetes-Basis für Serverless Computing

Red Hat OpenShift Logo

Eine Container- und Kubernetes-Plattform für eine schnellere Entwicklung cloudnativer Anwendungen.

Red Hat OpenShift Application Runtimes logo

Eine Auswahl an Anwendungs-Runtimes und -Frameworks, die für die Entwicklung cloudnativer Anwendungen bestens geeignet sind.

FaaS hat noch viel mehr zu bieten