Jump to section

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

URL kopieren

FaaS (Function-as-a-Service) ist ein Cloud-Computing-Service, mit dem Entwicklerinnen und Entwickler Anwendungspakete als Funktionen entwickeln, ausführen und verwalten können, ohne eine eigene Infrastruktur unterhalten zu müssen.

FaaS ist ein event-gesteuertes Ausführungsmodell in zustandslosen Containern, dessen Funktionen die serverseitige Logik sowie den Status mithilfe der Services eines FaaS-Anbieters verwalten.

FaaS-Lösungen sind für die wichtigsten Public Clouds verfügbar und bieten wichtige neue Funktionen für die Anwendungsentwicklung der Unternehmens-IT. Holen Sie sich den Guide für eine cloudnative Strategie, und bereiten Sie die Implementierung eines Serverless-Ansatzes mit FaaS vor.

Beliebte Beispiele für FaaS sind:

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

FaaS ist eine Methode zur Implementierung des Serverless Computings. Entwicklerinnen und Entwickler schreiben dabei eine Geschäftslogik, die in Linux-Containern ausgeführt wird, welche vollständig durch eine Plattform gemanagt werden.

Üblicherweise handelt es sich bei diesem Modell um eine Cloud-Computing-Plattform mit Cloud-Services, das aber nun vermehrt auch mit lokalen und Hybrid-Deployments eingesetzt wird.

Bei der Serverless-Variante werden Infrastrukturaufgaben wie die Verwaltung und Provisionierung von Servern sowie die Ressourcenzuweisung an eine Plattform (wie Red Hat® OpenShift®) übertragen. So können sich die Entwickler darauf konzentrieren, Code zu schreiben und geschäftlichen Mehrwert zu schaffen.

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

Das FaaS-Modell bietet eine Möglichkeit, Apps mit einer Serverless-Architektur zu erstellen. Angesichts der steigenden Popularität des Serverless-Modells suchen Entwicklerinnen und Entwickler aber vermehrt nach Lösungen, die Serverless-Microservices und zustandslose Container unterstützen.

FaaS bietet Entwicklern eine Abstraktion zur Ausführung von Webanwendungen als Reaktion auf Events, 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 vom Service-Anbieter üblicherweise nach ihrer Nutzung bzw. über ein event-gesteuertes Ausführungsmodell berechnet. Sie stehen also stets zur Verfügung, erfordern aber keine permanent im Hintergrund ausgeführten Serverprozesse wie bei PaaS (Platform-as-a-Service)

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 ganze Anwendungen aus einer Kombination dieser Lösungen bestehen, also aus Funktionen, Microservices und langfristig ausgeführten Services.

Die Verfügbarkeit der Funktion über eine API und die Ressourcenzuweisung werden von einem Anbieter gemanagt. Da Funktionen nicht ressourcen-, sondern event-gesteuert sind, lassen sie sich auf einfachste Weise skalieren, was wiederum die Effizienz und den Wert erhöhen kann.

Bestimmte architekturtechnische Beschränkungen ermöglichen die Aktivierung mancher dieser Vorteile, darunter Zeitlimits bei der Ausführung einer Funktion. Daher muss sich eine Funktion umgehend starten und ausführen lassen. 

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.

In lokalen Umgebungen kann diese Dynamik die Dichte Ihrer Plattform erhöhen. Dadurch können Sie mehr Workloads ausführen und die Ressourcennutzung und Funktionalität optimieren.

Ein event-gesteuerter Service, der eine horizontale Skalierung erfordert, kann als Funktion oder auch als RESTful-Anwendung funktionieren. 

FaaS eignet sich gut für hochvolumige Transaktionen und selten ausgeführte Workloads wie etwa 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 Webanwendungen.

Sie können mit FaaS eine vollständige Serverless-Anwendung entwickeln oder eine Anwendung aus teils Serverless-, teils traditionellen Microservice-Komponenten zusammenstellen, um neuere Technologien und Container-Orchestrierungssysteme wie Kubernetes zu nutzen.

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

Zu Anfang waren die Begriffe FaaS und Serverless mehr oder weniger synonym. Mittlerweile wird mit Serverless eine größere Menge an Architekturmustern und -praktiken bezeichnet, bei denen neben der in FaaS kodierten benutzerdefinierten Geschäftslogik vermehrt allgemeine Services genutzt werden.

Serverless kann von Microservices und sogar traditionellen Anwendungen genutzt werden, solange diese containerisiert werden können und die Anforderungen für dynamische Skalierung und Statusmanagement einhalten. 

Der Begriff „Serverless" steht zudem für gemanagte Services wie 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 von FaaS mit gängigen Backend-Services (wie Datenbanken, Messaging und Authentifizierung), die über eine event-gesteuerte Architektur miteinander verbunden sind.

Weiterlesen

ARTIKEL

Zustandsbehaftet oder zustandslos?

Ob etwas zustandsbehaftet oder zustandslos ist, hängt davon ab, wie lange der Zustand der Interaktion erfasst wird und wie diese Informationen gespeichert werden müssen.

ARTIKEL

Was ist Quarkus?

Quarkus ist ein Kubernetes-nativer Java Stack für Java Virtual Machines (JVMs) und native Kompilierung, mit dem Java speziell für Container optimiert wird.

ARTIKEL

Was ist Serverless?

Der Begriff „Serverless" (serverlos) bezieht sich auf ein cloudnatives Entwicklungsmodell, bei dem Entwickler Anwendungen erstellen und ausführen können, ohne Server verwalten zu müssen.

Mehr über cloudnative Anwendungen erfahren

Produkte

Red Hat OpenShift

Eine unternehmensfähige Kubernetes-Container-Plattform, auf der Operationen für den gesamten Stack automatisiert werden, um Hybrid Clouds, Multi-Clouds und Edge-Deployments noch einfacher verwalten zu können.

Ressourcen

Training

Kostenloses Training

Developing Cloud-Native Applications with Microservices Architectures

Illustration - mail

Möchten Sie mehr zu diesen Themen erfahren?

Abonnieren Sie unseren kostenlosen Newsletter, Red Hat Shares.