Was ist FaaS (Function-as-a-Service)?
FaaS erleichtert Entwicklern von Cloud-Anwendungen die Ausführung und Verwaltung von Microservice-Anwendungen.
IBM Newsletter abonnieren
Schwarzer und blauer Hintergrund mit miteinander vernetzten geometrischen Formen
Was ist FaaS?

FaaS oder Function-as-a-Service ist ein Cloud-Computing-Service, mit dem Kunden Code als Reaktion auf Ereignisse ausführen können, ohne die komplexe Infrastruktur verwalten zu müssen, die normalerweise mit der Entwicklung und Einführung von Microservice-Anwendungen einhergeht.

Das Hosten einer Softwareanwendung im Internet erfordert in der Regel die Bereitstellung und Verwaltung eines virtuellen oder physischen Servers sowie die Verwaltung eines Betriebssystems und von Webserver-Hosting-Prozessen. Im Fall von FaaS wird die Verwaltung der physischen Hardware, des Betriebssystems der virtuellen Maschine und der Webserver-Software automatisch vom Cloud-Service-Provider übernommen. Somit können sich Entwicklungsteams ausschließlich auf einzelne Funktionen in ihrem Anwendungscode konzentrieren.

 

FaaS vs. Serverless

Serverless und Function-as-a-Service (FaaS) werden oft miteinander verwechselt. Tatsächlich lässt sich FaaS als Untergruppe von Serverless definieren.

Serverless hat jede Servicekategorie zum Fokus, sei es Rechenleistung, Speicherung, Datenbank, Messaging, API-Gateways usw., wo Konfiguration, Verwaltung und Rechnungsstellung für Server für den Endbenutzer unsichtbar sind.

FaaS hingegen ist zwar vielleicht die zentralste Technologie in serverlosen Architekturen, hat jedoch das ereignisgesteuerte Computing-Paradigma zum Fokus, bei dem Anwendungscode oder Container nur als Reaktion auf Ereignisse oder Anforderungen ausgeführt werden.

Vorteile von FaaS

FaaS ist ein wertvolles Tool für die effiziente und kostengünstige Migration von Anwendungen in die Cloud. Im Folgenden sind einige Vorteile aufgeführt, die FaaS unverzichtbar machen:

  • Konzentrieren Sie sich auf Code anstatt auf die Infrastruktur: Mit FaaS können Sie den Server in Funktionen aufteilen, die automatisch und unabhängig skaliert werden können, sodass Sie sich nicht um die Verwaltung der Infrastruktur kümmern müssen. So können Sie sich auf den App-Code konzentrieren und die Zeit für die Einführung am Markt erheblich verkürzen.

  • Zahlen Sie nur für die Ressourcen, die Sie auch tatsächlich nutzen: Bei FaaS zahlen Sie nur, wenn eine Aktion stattfindet. Sobald die Aktion abgeschlossen ist, stoppt alles – es wird kein Code ausgeführt, es gibt keine Serverinaktivität, es fallen keine Kosten an. FaaS ist daher besonders kostenwirksam, insbesondere bei dynamischen Workloads oder geplanten Aufgaben. FaaS bietet außerdem hervorragende Gesamtbetriebskosten für Szenarien mit hoher Auslastung.

  • Skalieren Sie automatisch nach oben oder unten: Mit FaaS werden Funktionen je nach Bedarf automatisch, unabhängig und sofort skaliert. Wenn die Nachfrage sinkt, skaliert FaaS automatisch wieder nach unten.

  • Nutzen Sie alle Vorteile einer robusten Cloud-Infrastruktur: FaaS bietet inhärente Hochverfügbarkeit, die über mehrere Verfügbarkeitszonen pro geografischer Region verteilt ist und ohne zusätzliche Kosten in beliebig vielen Regionen bereitgestellt werden kann.
FaaS-Prinzipien und Best Practices

Es gibt mehrere Best Practices, die Sie befolgen können, um die Bereitstellung von FaaS einfacher und effektiver zu gestalten:

  • Jede Funktion sollte nur eine Aktion ausführen: FaaS-Funktionen sollten so konzipiert sein, dass sie als Reaktion auf ein Ereignis nur einen einzigen Arbeitsschritt ausführen. Sorgen Sie dafür, dass sie Ihren Codeumfang begrenzt, effizient und schlank halten, damit Funktionen schnell geladen und ausgeführt werden können.

  • Funktionen sollten keine anderen Funktionen aufrufen: Der Wert von FaaS liegt in der Isolation von Funktionen. Zu viele Funktionen erhöhen Ihre Kosten und machen den Vorteil der Isolation Ihrer Funktionen zunichte.

  • Verwenden Sie in Ihren Funktionen so wenige Bibliotheken wie möglich: Die Verwendung zu vieler Bibliotheken kann Funktionen verlangsamen und die Skalierung erschweren.
FaaS-Anwendungsfälle

Da Transaktionen einfach isoliert und skaliert werden können, eignet sich FaaS für hochgradig parallele Workloads mit hohem Volumen. Die Lösung kann auch zur Erstellung von Backend-Systemen oder für Aktivitäten wie Datenverarbeitung, Formatkonvertierung, Codierung oder Datenaggregation verwendet werden.

FaaS ist auch ein gut geeignetes Tool für Webanwendungen, Backends, Daten-/Stromverarbeitung sowie für die Erstellung von Online-Chatbots oder -Backends für IoT-Geräte. FaaS kann Ihnen bei der Verwaltung und Nutzung von Services anderer Anbieter helfen. Wenn Sie beispielsweise über die Entwicklung einer Android-App nachdenken, können Sie einen FaaS-Ansatz wählen, um Ihre Kosten im Rahmen zu halten. Da Ihnen nur Kosten berechnet werden, wenn Ihre App für eine bestimmte Funktion wie die Stapelverarbeitung eine Verbindung mit der Cloud herstellt, kann dies im Vergleich zu einem herkömmlichen Ansatz die erheblich günstigere Vorgehensweise sein.

FaaS kann auch die Rechenleistung erheblich steigern. So haben zwei Studenten kürzlich gemeinsam mit IBM Ingenieuren erforscht, wie sich IBM Cloud-Funktionen für Monte-Carlo-Simulationen (mathematische Methoden zur Abschätzung der zukünftigen Ergebnisse bestimmter schwer vorhersehbarer Ereignisse) nutzen lassen, um Aktienkurse abzuschätzen. Monte-Carlo-Simulationen gelten als wichtiger leistungsfähiger Computing-Workload. Die Kombination aus Monte Carlo und IBM® Cloud Functions ermöglichte es dem Team, Berechnungen in großem Umfang durchzuführen und die Geschäftslogik in den Fokus zu stellen. Mit FaaS konnte das Team eine komplette Monte-Carlo-Simulation mit 1.000 gleichzeitigen Aufrufen in etwa 90 Sekunden abschließen. Im Vergleich dazu dauerte derselbe Ablauf auf einem Laptop mit vier CPU-Kernen 247 Minuten bei einer CPU-Auslastung von fast 100 %.

Weitere Beispiele für FaaS-Anwendungsfälle finden Sie unter „A Recap of the Key Advantages Offered by IBM Cloud Functions“ (Zusammenfassung der wichtigsten Vorteile von IBM® Cloud Functions).

FaaS im Vergleich zu PaaS, Containern und VMs

FaaS, PaaS (Platform-as-a-Service), Container und virtuelle Maschinen (VMs) spielen alle eine entscheidende Rolle im serverlosen Ökosystem. Da FaaS das zentralste und in höchstem Maße definitorische Element des Serverless-Stacks ist, lohnt es sich zu untersuchen, wie sich FaaS in den wichtigsten Merkmalen von anderen aktuell gängigen Rechenmodellen auf dem Markt unterscheidet:

  • Bereitstellungszeit: Millisekunden, im Vergleich zu Minuten und Stunden bei anderen Modellen.

  • Laufende Verwaltung: Keine, verglichen mit einer gleitenden Skala von einfach bis schwer für PaaS, Container bzw. VMs.

  • Elastische Skalierung: Jede Aktion wird immer sofort und inhärent skaliert, im Gegensatz zu den anderen Modellen, die eine automatische – aber langsame – Skalierung bieten und eine sorgfältige Abstimmung der Regeln für Auto-Scaling erfordern.

  • Kapazitätsplanung: Keine erforderlich, im Gegensatz zu den anderen Modellen, für die eine Mischung aus automatischer Skalierung und Kapazitätsplanung nötig ist.

  • Persistente Verbindungen und Status: Eingeschränkte Fähigkeit, Verbindungen aufrechtzuerhalten, und der Status muss in externen Diensten/Ressourcen beibehalten werden. Die anderen Modelle können http nutzen, einen Socket oder eine Verbindung über längere Zeiträume offen halten und den Status zwischen den Aufrufen im Hauptspeicher speichern.

  • Wartung: Alle Wartungsarbeiten werden vom FaaS-Anbieter verwaltet. Dies gilt auch für PaaS; Container und VMs erfordern umfangreiche Wartungsarbeiten, die das Aktualisieren/Verwalten von Betriebssystemen, Container-Images, Verbindungen usw. umfassen.

  • Hohe Verfügbarkeit (High Availability, HA) und Disaster-Recovery (DR): Auch hier ist die Hochverfügbarkeit im FaaS-Modell enthalten, und zwar ohne zusätzlichen Aufwand oder Kosten. Für die anderen Modelle fallen zusätzliche Kosten und mehr Verwaltungsaufwand an. Sowohl bei VMs als auch bei Containern kann die Infrastruktur automatisch neu gestartet werden.

  • Ressourcennutzung: Ressourcen sind nie ungenutzt – sie werden nur auf Anforderung aufgerufen. Alle anderen Modelle weisen zumindest ein gewisses Maß an ungenutzter Kapazität auf.

  • Ressourcenbeschränkungen: FaaS ist das einzige Modell mit Ressourcenbeschränkungen für Codegröße, gleichzeitige Aktivierungen, Speicher, Lauflänge usw.

  • Granularität der Leistungsverrechnung und Rechnungsstellung: Pro Blöcke von 100 Millisekunden, im Vergleich zur Abrechnung pro Stunde (und manchmal Minute) bei anderen Modellen.
Kubernetes/Knative und FaaS

Kubernetes und Knative sind eine Implementierung der „Klempnerarbeit“ hinter FaaS. Kubernetes ist eine Open-Source-Plattform für die Containerorchestrierung, die für die Verwaltung von Cloudanwendungen von entscheidender Bedeutung ist. Knative macht das serverlose Arbeiten innerhalb eines Kubernetes-Clusters möglich.

Dank der Kombination von Knative und Kubernetes können Sie die Vorteile von Kubernetes-Funktionen wie Überwachung, Sicherheit, Protokollierung und Authentifizierung nutzen und diese mit den Leistungen von Knative wie dem automatisierten Containeraufbau, der vollständigen Portierbarkeit und der Arbeit in hybriden Umgebungen kombinieren.

Die Begründer dieser Technologie waren davon überzeugt, dass Entwicklungsteams bei der Erstellung von Cloud-Anwendungen nicht zwischen Serverless und Containern wählen müssen. Das Ziel bestand darin, die Verfügbarkeit und Konsistenz von Containern mit der leistungsstarken Skalierung und dem On-Demand-Zugriff von Serverless zu erweitern.

Sehen Sie sich dieses Video an, um mehr über Knative zu erfahren:

Weiterführende Lösungen
IBM Cloud Code Engine

Führen Sie Container-Images, Stapeljobs oder Quellcode als serverlose Workloads aus – ohne Größenanpassung, Bereitstellung, Vernetzung oder Skalierung.

IBM® Cloud Code Engine kennenlernen
IBM Cloud Functions

Nutzen Sie diese FaaS-Programmierplattform (Functions-as-a-Service), um schlanken Code zu entwickeln, der bei Bedarf skalierbar ausgeführt wird.

IBM® Cloud Functions kennenlernen
Ressourcen Was ist Serverless?

Serverless ist ein Modell für die Entwicklung und Ausführung von Cloud-Anwendungen, mit dem Entwicklungsteams Anwendungscode erstellen und ausführen können, ohne Server oder Backend-Infrastruktur bereitstellen oder verwalten zu müssen.

Was sind Container?

Container sind ausführbare Softwareeinheiten, die Anwendungscode zusammen mit seinen Bibliotheksabhängigkeiten als Paket enthalten und überall ausgeführt werden können, sei es auf dem Desktop, auf herkömmlicher IT oder in der Cloud.

Was ist PaaS?

PaaS oder Platform-as-a-Service bietet eine vollständige, flexible und kostenwirksame Cloud-Plattform für die Entwicklung, Ausführung und Verwaltung von Anwendungen.

Gehen Sie den nächsten Schritt

Die IBM® Cloud Code Engine ist eine vollständig verwaltete serverlose Plattform, mit der Sie sich statt der Verwaltung der Infrastruktur auf das Programmieren konzentrieren können. Ob Container-Images, Stapeljobs oder Quellcode – IBM® Cloud Code Engine verwaltet und sichert die zugrunde liegende Infrastruktur für Sie.Container-Cluster müssen nicht selbst dimensioniert, bereitgestellt oder skaliert werden. Zudem ist auch kein Know-how zum Netzbetrieb erforderlich.

IBM® Cloud Code Engine kennenlernen