Function as a Service (FaaS) – Definition, Nutzen und Vorteile
Dynamische Skalierung ist ein Vorteil von FaaS und ist auch kosteneffizient, da die Anbieter nur die genutzten Ressourcen berechnen, nicht die Leerlaufzeit, so dass der Ressourcenverbrauch und die Funktionalität optimiert werden.

Function as a Service (FaaS), auch bekannt als Serverless Computing, ist eine Option für die Bereitstellung von Anwendungen in der Cloud. Es gibt sie schon seit fast einem Jahrzehnt und ist seit mindestens sechs Jahren bei den großen Cloud-Anbietern verfügbar.
So hat zum Beispiel Amazon AWS Lambdas Ende 2015 veröffentlicht. Microsoft stellte Azure Functions Anfang 2017 zur Verfügung.
Aber was genau ist Serverless Computing? Wann ist FaaS die richtige Wahl? Wenn du eine Anwendung entwirfst, die eine serverlose Architektur nutzen soll, was solltest du dabei beachten?
Wie funktioniert Function as a Service?
Function as a Service (FaaS) vereinfacht die Bereitstellung von Anwendungen in der Cloud. Mit Serverless Computing installierst du ein Stück Geschäftslogik, eine „Funktion“, auf einer Cloud-Plattform und diese Plattform führt die Funktion bei Bedarf aus. So kannst du Backend-Code ausführen, ohne Server bereitzustellen oder zu warten. Aber das ist nur ein Teil der Geschichte.
Die Cloud-Plattform stellt die Funktion zur Verfügung und verwaltet die Ressourcenzuweisung für dich. Wenn das System 100 gleichzeitige Anfragen bewältigen muss, weist es 100 (oder mehr) Kopien deines Dienstes zu. Wenn die Nachfrage auf zwei gleichzeitige Anfragen sinkt, reduziert es die nicht benötigten. Du bezahlst für die Ressourcen, die deine Funktionen nutzen, und zwar nur dann, wenn deine Funktionen sie benötigen.
FaaS ist ein Ausführungsmodell für Cloud-Services. Daher sollte ein Unternehmen, das die Vorteile von FaaS nutzen möchte, zunächst einen Cloud-Service-Provider auswählen, der mit FaaS-Funktionen wirbt. Im FaaS-Bereitstellungsmodell haben Entwickler keine Verantwortung für die Wartung von Anwendungsservern.
Stattdessen werden sie extern vom Service Provider gehostet und dynamisch basierend auf den Bedürfnissen des Kunden zugewiesen. FaaS-Dienstleister ermöglichen es Softwareentwicklern, Codestücke bereitzustellen, die als Funktionen bezeichnet werden und nach Bedarf ausgeführt werden können.
Wenn die Funktion aufgerufen wird, fährt der Service Provider einen Server hoch, führt die Funktion aus und schaltet sich dann wieder ab. Im Gegensatz zu anderen Modellen, bei denen Softwareentwickler die Anwendung auf einem dedizierten Server ausführen, ist die serverlose Architektur nur dann aktiv, wenn die Funktion aktiv genutzt wird.

Sobald die Funktion ausgeführt wurde, kann sie wieder heruntergefahren werden, so dass die gleichen Rechenressourcen an anderer Stelle eingesetzt werden können. Mit Functions-as-a-Service haben Softwareentwickler Zugang zu einer Plattform, die Anwendungslogik nach Bedarf ausführt und bei der alle Anwendungsressourcen durch den Service Provider gesichert und koordiniert werden.
Das FaaS-Modell funktioniert am besten für einfache, sich wiederholende Funktionen wie die Planung von Routineaufgaben oder Jobs, die Verarbeitung von Webanfragen oder die Verarbeitung von Warteschlangennachrichten.
Wie wirkt sich das auf die Skalierbarkeit aus?
Als Analogie kannst du dir deine Küche als monolithische Anwendung vorstellen, mit Fähigkeiten wie „Essen kalt halten“, „Essen erhitzen“ und „Backen“. Monolithische Anwendungen skalieren, indem die gesamte Anwendung auf mehreren Servern repliziert wird. Wenn du also mehr backen möchtest, müsstest du eine ganze zusätzliche Küche kaufen.
Wenn wir deine Küche in Microservices aufteilen würden, könnten diese einen Kühlschrank, einen Gefrierschrank, einen Herd, eine Kaffeemaschine und eine Mikrowelle beinhalten. Microservice-Anwendungen skalieren, indem sie nur die benötigten Dienste replizieren. Wenn du also mehr Kapazität zum Backen brauchst, könntest du zusätzliche Backöfen bereitstellen, ohne eine ganze neue Küche bereitstellen zu müssen.
Was passiert, wenn wir anfangen, Microservices in ihre einzelnen Funktionen zu unterteilen?
Ein Gerät wie die Kaffeemaschine hat eine einzige Funktion – Kaffee kochen – während dein Kühlschrank wahrscheinlich mehrere Funktionen erfüllt – Wasser kühlen, Eis machen und dein Essen kalt halten. Jede dieser Funktionen würde unter einer serverlosen Architektur ihr eigenes Stück Code bekommen und jede einzelne Funktion könnte unabhängig von den anderen skaliert werden.
Dies stellt die effizienteste Nutzung von FaaS dar, da es nicht nötig ist, eine komplette Anwendung oder gar einen ganzen Microservice zu deployen, wenn man eine einzelne Funktion skaliert.
Was sind die Vorteile von Functions as a Service?
Functions as a Service (FaaS) ist ein wertvolles Werkzeug, wenn du Anwendungen effizient und kostengünstig in die Cloud migrieren willst. Die folgenden sind einige Vorteile, die dieses Modell bietet:
Vereinfachte Logistik für Entwickler
Softwareentwicklungsteams lieben das FaaS Servicemodell, weil es den Prozess der Bereitstellung von Anwendungsupdates und neuem Code für die Nutzer erheblich vereinfacht.
Da das Management der Serverinfrastruktur vollständig optimiert und ausgelagert ist, können Softwareentwickler mehr Zeit mit dem verbringen, was sie am besten können. Das bedeutet mehr Agilität, schnellere Updates und mehr Reaktionsfähigkeit auf Kundenwünsche.
FaaS ist hochgradig skalierbar
Cloud Services sind von Haus aus hoch skalierbar und FaaS ist da keine Ausnahme. Der Hauptunterschied besteht darin, dass das FaaS-Modell die automatische und unabhängige Skalierung einzelner Funktionen auf Basis ihrer Nutzung ermöglicht.
Dies stellt die effizienteste Nutzung von Rechenressourcen für den Service einer Anwendung dar, da es im Vergleich zur Skalierung einzelner Microservices oder der gesamten Anwendung sehr wenig Verschwendung gibt
Niedrigere Vorabkosten
Das FaaS-Servicemodell bedeutet, dass Softwareentwicklungsteams weniger Geld im Voraus für Hardware, Betriebssysteme und andere IT-Infrastruktur ausgeben, die leichter ausgelagert werden kann.
Dedizierte Server sind teuer in der Anschaffung und oft nicht ausgelastet, während das Pay-as-you-go-Modell der FaaS-Anbieter sicherstellt, dass die Entwickler nur für die tatsächlich genutzten Rechenressourcen aufkommen müssen.
Eingebaute Qualität ist Standard
Eine gemanagte Infrastruktur bringt erhebliche Vorteile in Bezug auf Verfügbarkeit, Toleranz, Sicherheit und andere Wartungsaufgaben mit sich, die Softwareentwickler in der Vergangenheit selbst hätten erledigen müssen. Insofern ist von Haus aus ein gewisser Standard schon da.
Mögliche Anwendungsfälle und Beipiele von FaaS
Da es Transaktionen ermöglicht, isoliert und einfach skaliert zu werden, ist FaaS gut für hochvolumige und parallele Workloads. Es kann auch verwendet werden, um Backend-Systeme zu erstellen oder für Aktivitäten wie Datenverarbeitung, Formatkonvertierung, Kodierung oder Datenaggregation.
FaaS ist auch ein gutes Werkzeug für Web-Apps, Backends, Daten-/Stream-Verarbeitung, oder um Online-Chatbots oder Backends für IoT-Geräte zu erstellen. FaaS kann dir helfen, Dienste von Drittanbietern zu verwalten und zu nutzen.

Wenn du z.B. die Entwicklung einer Android-App in Betracht ziehst, kannst du einen FaaS-Ansatz wählen, um deine Kosten im Griff zu behalten.
Da die Kosten nur dann anfallen, wenn sich deine App für eine bestimmte Funktion wie die Stapelverarbeitung mit der Cloud verbindet, können die Kosten deutlich niedriger sein als bei einem traditionellen Ansatz.
Es gibt eine Menge verschiedener XaaS -Akronyme – Was sind die Unterschiede – Wo passt FaaS hinein?
Software as a Service: (SaaS) sind komplette Anwendungen, die aus der Cloud bereitgestellt werden, wie Office365 und Scalyr. FaaS ist näher an PaaS als an IaaS, aber mit einigen entscheidenden Unterschieden.
Platform as a Service: (PaaS) bietet Cloud-Komponenten hauptsächlich für Anwendungen. Es gibt Entwicklern ein Framework, um maßgeschneiderte Anwendungen zu erstellen. Einige prominente Beispiele sind AWS Elastic Beanstalk und Google App Engine. PaaS macht die Bereitstellung von Anwendungen einfach, aber auf Kosten von Vendor-Lock-In und oft erhöhten Kosten.
Infrastructure as a Service: (IaaS) liefert dir die Bausteine für Anwendungen. Es bietet typischerweise Zugang zu Computern (virtuell oder auf dedizierter Hardware), Netzwerken und Speicher. AWS S3 und EC sind zwei häufig genutzte Beispiele. IaaS bietet dir die meiste Kontrolle, aber du musst deine Systeme und Netzwerke von Grund auf neu aufbauen.
Anstatt eine komplette Anwendung auf einem oder mehreren Servern bereitzustellen, installierst du mit FaaS Funktionen, Teile einer App. Die Funktionen werden nur bei Bedarf geladen und können bei Bedarf parallel ausgeführt werden.
Mögliche Einschränkungen bei Function as a Service
Die Einschränkung des Anwendungsstatus ist nicht die einzige Einschränkung beim FaaS. Es gibt noch ein paar mehr und sie können verhindern, dass deine Anwendung als eine oder mehrere Funktionen läuft.
Die Plattform lädt Funktionen bei Bedarf. Sie sollten schnell starten, normalerweise in Millisekunden. Dann gibt die Plattform ihnen sofort eine Anfrage. Wenn die Verarbeitung abgeschlossen ist, beendet sie sie. Die Plattform kann eine Instanz mit einem „Warmstart“ wiederverwenden, um Zeit zu sparen, aber die Funktion kann sich nicht darauf verlassen.
Daher kommt die Beschränkung auf den Zustand. Es bedeutet aber auch, dass eine Anwendung, die viele Initialisierungen durchführt, nicht gut mit FaaS funktionieren wird. AWS begrenzt Lambdas auf 15 Minuten Ausführungszeit.
Azure begrenzt seine Functions auf 10 Minuten. Das ist viel Zeit für einen API-Aufruf, aber vielleicht nicht für einen geplanten Job. Leider haben Funktionen harte Grenzen für die Ausführungszeit.
FaaS könnte auch eine schlechte Wahl sein, wenn du dir Sorgen um die Abhängigkeit von einem bestimmten Anbieter machst und nicht herausfinden kannst, wie du sie umgehen kannst. Wenn du deinen Code auf der Plattform eines anderen Anbieters laufen lassen möchtest, musst du für dessen API schreiben.
Abhängig davon, wie du deinen Code strukturierst, kannst du vielleicht Lock-in vermeiden. Oder es könnte dir egal sein. Aber wenn doch, dann ist Serverless vielleicht nicht die richtige Lösung.
Was sind einige Best Practices von diesem Modell?
Es gibt ein paar einfache Regeln, die du befolgen kannst, damit der Einsatz von FaaS für dich funktioniert. Erinnere dich an die Einschränkungen für den Anwendungsstatus. Wenn du dich dabei ertappst, dass du Workarounds planst, damit deine Funktionen den Status halten können, dann verwendest du die falsche Architektur.
FaaS ist eine mächtige Technologie, und wenn du sie einmal in Aktion gesehen hast, möchtest du sie vielleicht überall einsetzen. Das ist aber nicht möglich. Eine logische Folge der ersten Regel ist, dass jede deiner Funktionen nur eine einzige Aktion ausführt. Denke in Form einer einzigen Anfrage, die eine einzige Antwort liefert. Deine Funktionen müssen schnell geladen und beendet werden, also halte es einfach.
Widerstehe dem Drang, die Ein-und-nur-eine-Operation-Regel zu überwinden, indem du deine Funktionen „verkettest“, und eine Funktion eine andere aufrufen lässt. Einer der Hauptvorteile der serverlosen Architektur ist die Isolation, und die Schaffung von Abhängigkeiten zwischen den Funktionen negiert dies.
Schließlich solltest du die Ladezeit im Auge behalten. Verwende nicht zu viele Bibliotheken oder schreibe eine Funktion, die viel Speicher benötigt. Auch hier gilt: Halte es einfach!