Serverless Computing: Was es ist und warum es wichtig ist

Viele Firmen gehen davon aus, Serverless Computing sei nur das Neueste in einer langen Reihe gehypter Technologien. Doch es hat eine ernsthafte Substanz.

Serverless Computing hat sich in letzter Zeit stark verbreitet und gilt als effiziente Möglichkeit, Cloud-Ressourcen zu nutzen. Aber es steckt noch mehr dahinter.

Das Konzept Serverless Computing gibt es schon seit etwa einem Jahrzehnt, wobei ein längst vergessenes Unternehmen Pionierarbeit geleistet hat. Leider hat es für dieses Unternehmen nicht geklappt und es ist längst von der Bildfläche verschwunden. Doch wie so oft feiert Altes immer wieder ein Revival.

Der beste Weg, Serverless Computing zu verstehen, besteht darin, sich der aktuellen IT-Entwicklungen und der zuletzt gemachte Schritte auf diesem Gebiet bewusst zu machen. Der letzte große Schritt in der IT ist das Abstrahieren von Diensten weg von der virtuellen oder physischen Infrastruktur – obwohl letztere natürlich immer noch vorhanden sein muss.

Wenn der Begriff Serverless Computing verwendet wird, hat er für gewöhnlich eine von zwei Bedeutungen. Einige Leute benutzen den Begriff, um (fälschlicherweise) auf Container, Microservices und andere Abstraktionen zu verweisen. Alternativ bezieht sich der Begriff (richtiger) auf Function as a Service (FaaS).

Serverless Computing definieren

Wie also kann man sich Serverless Computing vorstellen? Wie der Name schon sagt, wird bei Serverless Computing auf den direkten Einsatz von Servern verzichtet. Stattdessen übernimmt der Cloud-Service eines Anbieters in Form einer Blackbox die Arbeit. Der Entwickler lädt seinen Code hoch und der Cloud-Service erledigt die vollständige Administration der dafür benötigten Serverinfrastruktur – inklusive der Server- und Betriebssystemwartung.

Dieses IT-Betriebskonzept versetzt Entwickler in die Lage, Cloud-Anwendungen und -Services erstellen und ausführen zu können, ohne sich um Server und deren Verwaltung kümmern zu müssen. Während sich bei PaaS-Lösungen die Server-Administration und -Skalierung automatisieren lassen, wird bei Serverless Computing die Serverschicht vollkommen abstrahiert.

Konkret heißt das: Entwickler laden ihren Code – ihre Funktionen – einfach hoch, und dieser wird beim Eintreten bestimmter vordefinierten Ereignisse ausgeführt. Serverless kann man sich deshalb auch als „Code, und nur Code“ vorstellen, da es die Abhängigkeiten und das Patching des zugrunde liegenden Hosts entfernt.

Natürlich wird der Code weiterhin auf einem bestimmten Anwendungsserver im Hintergrund ausgeführt, doch der Entwickler kommt damit nicht mehr in Berührung. Daher müssen sich Entwickler bei Serverless Computing nicht um die Wartung, Sicherheit und das Patching der Hosts kümmern, auf denen der Code läuft. Aber es wird immer noch einen System-Administrator geben, der die Hosts verwaltet und patcht, auf denen der Code läuft.

Serverless für kurzlebige Interaktion

Serverless Computing ist in erster Linie für kurzlebige Interaktionen konzipiert. Tatsächlich beenden viele Serverless-Computing-Anbieter Threads, die länger als fünf Minuten dauern, automatisch. Das macht Serverless zu einer schlechten Option für einen klassischen Webserver.

Was bei Serverless Computing geschieht, ist, dass man alles auf Code und API-Aufrufe reduziert und die Anwendung von den Komponenten, aus denen sie besteht, dekonstruiert. Anstatt beispielsweise einen eigenen Authentifizierungsserver für Anwendungen zu erstellen, auszuführen und sich auf sie die Server zu verlassen, um Benutzer zu authentifizieren, kann man einen Drittanbieter konsultieren, um die Funktion auszuführen.

Dasselbe gilt für andere Komponenten. Serverless stellt dann die gleiche Funktion, basierend auf der Verwendung von API-Aufrufen und Messaging zwischen der Anwendung und dem Authentifizierungssystem eines Drittanbieters, bereit. Jede Authentifizierungsinstanz wird separat und für die Dauer des Authentifizierungsprozesses ausgeführt und dann beendet. Normalerweise existieren diese Prozesse weniger als ein paar Sekunden.

Vielen denken nun, dass dies nach einer extrem teuren Methode klingt. Wenn man aber überlegt, dass jeder API-Aufruf irgendwo im Bereich eines Tausendstel Cent kostet, ist es sehr preiswert. Vielleicht noch wichtiger ist, dass es ziemlich einfach ist, eine horizontale, elastische Skalierung zu erreichen.

Kosten senken

Auch die geringeren Kosten für die Infrastruktur senken die Gesamtkosten für die Bereitstellung einer Web-Scale-Anwendung. Bei Serverless Computing ändert sich der Preis pro Applikationsaufruf. Man zahlt nur für das, was man benötigt.

Die Abrechnung deckt auch die Kosten der genutzten Hardware ab, was den Begriff Serverless ein wenig paradox erscheinen lässt. Das Modell kann jedoch wesentlich günstiger sein, als permanent einen Hardwareüberschuss vorzuhalten. In vielen Unternehmen stehen Server die meiste Zeit ungenutzt herum und warten nur darauf, eingesetzt zu werden. Ob der Hardwarepool verwendet wird oder nicht, spielt keine Rolle. Für die serverlose Architektur gilt das nicht.

Am besten beschreibt man diesen Ansatz mit dem dem Slogan „Das Alltägliche outsourcen“ – während gleichzeitig die wichtige Geschäftslogik intern und fernab von Dritten beibehalten wird.

Um das Kostenproblem in einfache Worte zu fassen: Die Verwendung einer virtuellen Maschine (VM) über Amazon Web Services kostet mehrere Dutzend Dollar pro VM und Monat. Vergleicht man dies mit Serverless Computing, kann dies bei vernünftiger Nutzung rund zwei Drittel billiger werden.

Das ist der Vorteil. Der Nachteil ist: Da alles über API-Aufrufe gemacht wird, gibt es eine starke Abhängigkeit davon, dass die Programme und Aufrufe alle korrekt sind.

Kostenüberlegungen für Serverless-Implementierungen

Wenn man jetzt denkt, dass das nach einer guten Methode klingt, um Kosten zu reduzieren, täuscht man sich aber. Es gibt ein paar Dinge, die noch berücksichtigt werden müssen, bevor man auf Serverless umstellt.

So erfordert zum Beispiel der Wechsel zu einem Serverless-Stack viel Entwicklungszeit und Arbeitszeit, da die Anwendung von Grund auf neu strukturiert werden muss. Das ist selbst für eine einfache Anwendung kein kleines Unterfangen.

An diesem Punkt kann die Implementierung von Serverless Computing Unternehmen dazu zwingen, neue Tools und Techniken einzuführen. Außerdem benötigen sie Entwickler, die wissen, wie man die Werkzeuge und Methoden richtig und effizient einsetzt. Und die sind nicht billig.

Es ist außerdem erwähnenswert, dass nur einige Programmiersprachen vom Serverless-Ansatz unterstützt werden. Wenn man ins kalte Wasser springen möchte, ist es wichtig zu eruieren, welcher der in die engere Wahl genommene FaaS-Anbieter hier mitspielt. AWS Lambda zum Beispiel unterstützt Go, Node.js, Java, C# und Python.

Serverless Computing erfordert vor dem Produktivstart viele Tests, und das Debugging ist von Natur aus schwieriger. Es ist auch nicht für alle Nutzungsarten geeignet.

Man kann mit Fug und Recht sagen, dass für kleinere Unternehmen die Serverless-Philosophie wohl als Overkill angesehen werden kann. Der Schlüssel für die Entscheidung Pro oder Contra Serverless Computing liegt darin, eine Kosten-Nutzen-Rechnung zu machen (inklusive der Kosten für alles, was damit zusammenhängt: Tests, Redesign und Entwickler-Know-how).

Für bestimmte Unternehmen kann sich Serverless Computing lohnen. Aber es wird nicht für jeden Sinn machen, wenn das Traffic-Volumen und die eingesetzten Ressourcen einen solchen Ansatz nicht rechtfertigen.

Wenn man Auto-Skalierung auf Webebene macht, kann Serverless nützlich sein. Aber der Weg dorthin ist weder billig noch einfach, auch wenn es der Organisation auf lange Sicht Geld sparen kann. Kurz gesagt: Es geht in erster Linie darum, alles durchzurechnen, bevor man sich auf Serverless Computing stürzt.

Folgen Sie SearchDataCenter.de auch auf Twitter, Google+, Xing und Facebook!

Nächste Schritte

Serverless Computing: Darauf müssen Sie achten.

IT-Sicherheit in Serverless-Umgebungen gewährleisten.

Mit C# Multi-Plattform-Anwendungen auf AWS Lambda entwickeln.

Erfahren Sie mehr über Cloud Computing