Was ist serverloses Computing? {So funktioniert serverloses Arbeiten}


Das Infrastrukturmanagement fügt dem modernen Softwareentwicklungsworkflow eine zusätzliche Komplexitätsebene hinzu. Die Server am Laufen zu halten, sich um Sicherheitsupdates zu kümmern und Ressourcen zu skalieren, nimmt den DevOps-Teams wertvolle Zeit in Anspruch. Beim Serverless Computing werden alle Infrastrukturvorgänge vom Dienstanbieter abgewickelt. Serverlos ermöglicht es Entwicklungsteams, sich auf das Schreiben von Code zu konzentrieren, anstatt zu viel Zeit mit der Infrastrukturverwaltung zu verbringen.

In diesem Artikel wird erläutert, was Serverless Computing ist und wie es im Vergleich zu verschiedenen Cloud-Bereitstellungsmodellen abschneidet. Wir werden auch die Vor- und Nachteile von Serverless untersuchen und über einige häufige Anwendungsfälle sprechen.

Was ist serverloses Computing?

Serverloses Computing ist eine Methode zum Bereitstellen und Ausführen von Code in der Cloud, ohne sich um die Bereitstellung von Servern und die Verwaltung der Infrastruktur zu kümmern. Trotz seines Namens ist Serverless für die Codeausführung immer noch auf Cloud- oder physische Server angewiesen. Allerdings kümmern sich die Entwickler nicht um die zugrunde liegende Infrastruktur. Dies bleibt dem serverlosen Anbieter überlassen, der die erforderlichen Rechenressourcen dynamisch zuweist und sie im Namen des Benutzers verwaltet.

Für Entwickler bedeutet dies, dass sie keinen Zeitaufwand für Serververwaltung, Wartung, Ressourcenskalierung oder Kapazitätsplanung aufwenden müssen. Sie laden einfach ihren Code hoch und lassen den Anbieter die serverseitige Logik basierend auf verschiedenen Ereignissen oder Anforderungen ausführen. Im Gegensatz zu bekannten Cloud-Abrechnungsmodellen werden serverlose Dienste basierend auf der Anzahl der Codeausführungen oder dem Auslösen eines bestimmten Ereignisses abgerechnet.

Wie funktioniert serverloses Computing?

In einer serverlosen Umgebung wird Code durch Ereignisse ausgelöst und als Funktion ausgeführt. Aus diesem Grund wird Serverless oft mit „Functions-as-a-Service“ oder FaaS in Verbindung gebracht, einem ähnlichen Konzept. FaaS ist ein ereignisgesteuertes Cloud-Modell, das die serverseitige Logik für die Codeausführung ohne Eingriff des Benutzers übernimmt. Diese Ereignisse können alles sein, von einer einfachen HTTP-Anfrage, einem API-Aufruf bis hin zu einer Datenbankabfrage oder einem Datei-Upload.

Funktionen werden in zustandslosen Containern ausgeführt. Dies bedeutet, dass Rechenressourcen zum Ausführen einer Funktion nur bereitgestellt werden, wenn sie aufgerufen wird. Es werden keine Daten im RAM gespeichert oder auf die Festplatte geschrieben. Sobald die Anfrage erfüllt wurde, wird der Status der App zurückgesetzt und es gibt keine Erinnerung an die Transaktion. Bei einer neuen Anfrage müssen die Ressourcen von Grund auf bereitgestellt werden, und der Code wird ohne Verweis auf den vorherigen Aufruf ausgeführt.

Um diesem zustandslosen Zustand Rechnung zu tragen, müssen Anwendungen als Funktionen konzipiert werden, die in zustandslosen Containern ausgeführt werden können. Dies wird normalerweise durch Mikrodienste erreicht. Große monolithische Apps werden in kleinere Segmente zerlegt und über eine API miteinander verbunden. Monolith-Apps können weiterhin als Einzelfunktionen ausgeführt werden, dies ist jedoch keine gängige Praxis. Wenn man bedenkt, dass bei jeder Anfrage ein neuer Rechencontainer bereitgestellt wird, wirken sich große Funktionen negativ auf die Ausführungsgeschwindigkeit und -dauer aus.

FaaS-Funktionen laufen nicht unendlich. Sie werden nach einer bestimmten Zeitspanne nach Aufruf beendet. In den meisten Fällen kommt es nach etwa fünf Minuten zu einem Funktions-Timeout. Das bedeutet, dass Apps, die Langzeitaufgaben ausführen, neu gestaltet werden müssen, um Beendigungslimits zu berücksichtigen.

Auch die Bereitstellung und Initialisierung von Containern für die Funktionsausführung nimmt Zeit in Anspruch. Dies wird normalerweise in Millisekunden gemessen. Allerdings kann die Initialisierung komplexer Funktionen mehrere Sekunden dauern, was zu einer höheren Latenz führt.

Es gibt zwei gängige Methoden zum Initialisieren einer Funktion: Warmstart und Kaltstart. Bei einem Warnstart werden Ressourcen aus einem vorherigen Ereignis wiederverwendet, während bei einem Kaltstart ein neuer Container bereitgestellt wird. Die Zeit, die zum Initialisieren und Ausführen einer Funktion benötigt wird, hängt von der Codemenge, der Programmiersprache, der Anzahl der vom Skript verwendeten Bibliotheken sowie vielen anderen Faktoren ab. Bezüglich der Latenzzeit dauert es bei einem Kaltstart länger, eine Funktion zu starten.

Wie schneidet Serverless Computing im Vergleich zu BaaS, PaaS und IaaS ab?

Wie bei jedem Softwaretrend gibt es keine offizielle Definition, die beschreibt, was Serverless ist und was nicht. Aus diesem Grund wird Serverless Computing oft mit anderen Cloud-Diensten und Bereitstellungsmodellen verwechselt. Das Konzept des Serverless Computing dreht sich um zwei ähnliche Bereiche:

Backend-as-a-Service - BaaS ermöglicht es Entwicklern, sich auf das Schreiben von Frontend-Schnittstellen zu konzentrieren und gleichzeitig alle Backend-Vorgänge an einen Dienstanbieter auszulagern. Zu diesen Aufgaben hinter den Kulissen gehören in der Regel sofort einsatzbereite Benutzerauthentifizierungs-, Speicher-, Datenbankverwaltungs- und Hosting-Dienste. Außerdem müssen Entwickler keine Server verwalten, auf denen ihr Backend läuft, was eine schnellere App-Bereitstellung ermöglicht.

Functions-as-a-Service - Dieses serverlose Cloud-Service-Modell macht die Infrastrukturverwaltung überflüssig. Der Dienstanbieter hat die Aufgabe, Rechenressourcen nach Bedarf bereitzustellen, um den Code der Benutzer auszuführen. Dies geschieht immer dann, wenn ein Ereignis oder eine Anfrage ausgelöst wird. Serverlose Funktionen werden in zustandslosen Containern ausgeführt, was bedeutet, dass Rechenressourcen nur bereitgestellt werden, wenn die Funktion aufgerufen wird.

Der größte Verwirrungspunkt besteht zwischen Backend-as-a-Service und Platform-as-a-Service (PaaS). Ersteres ist eine Technik des Serverless Computing, während letzteres ein Cloud-Bereitstellungsmodell ist. Auch wenn sie einige grundlegende Merkmale gemeinsam haben, ist PaaS nicht auf die Anforderungen von Serverless abgestimmt.

Platform-as-a-Service - Bei PaaS mieten Benutzer die für Entwicklungsarbeitslasten erforderlichen Hardware- und Softwarelösungen gegen eine Abonnementgebühr von einem Dienstanbieter. Dadurch können Entwickler mehr Zeit mit dem Programmieren verbringen, ohne sich um die Infrastrukturverwaltung kümmern zu müssen. Andererseits bietet BaaS zusätzliche Funktionen wie eine sofort einsatzbereite Benutzerauthentifizierung, verwaltete Datenbanken, E-Mail-Benachrichtigungen und dergleichen. BaaS ermöglicht es Entwicklern außerdem, sich ausschließlich auf den Aufbau des Frontends zu konzentrieren und gleichzeitig verschiedene Backend-Dienste bei Bedarf zu integrieren.

Infrastructure-as-a-Service - IaaS bezieht sich auf eine Self-Service-Cloud-Lösung, bei der der Anbieter die Infrastruktur im Namen des Benutzers hostet. Alle Serverbereitstellungs- und Verwaltungsvorgänge einschließlich der Softwareinstallation werden vom Benutzer durchgeführt. Einige IaaS-Anbieter bieten auch serverlose Lösungen an, allerdings als deutlich unterschiedliche Produkte.

Sehen Sie sich diesen Artikel an, um mehr über die Unterschiede zwischen IaaS, PaaS und SaaS zu erfahren.

Häufige Anwendungsfälle für serverloses Computing

Wie bereits erwähnt, ist Serverless nicht jedermanns Sache. Wenn Ihre Anforderungen jedoch mit einigen dieser Anwendungsfälle übereinstimmen, könnten Sie von serverlosen Lösungen profitieren.

Erstellen von APIs

Da keine Server verwaltet werden müssen, ist die Erstellung hochskalierbarer und reaktionsfähiger APIs einer der beliebtesten Anwendungsfälle für Serverless. Die automatische Skalierungsfunktion von Serverless stellt sicher, dass APIs auch bei starkem Datenverkehr immer verfügbar sind. Darüber hinaus werden dem Benutzer keine Kosten für ungenutzte Ressourcen in Rechnung gestellt, wenn keine Aufrufe an die API erfolgen.

Websites und Anwendungen

Für die Bereitstellung von Websites und webbasierten Apps auf einer serverlosen Plattform ist keine vorherige Einrichtung der Infrastruktur erforderlich. Dies verkürzt die Zeit, die zum Starten einer voll funktionsfähigen Web-App benötigt wird, erheblich. Auch hier spielt die Funktion der automatischen Skalierung eine wichtige Rolle, da sich der Benutzer keine Gedanken über die Bereitstellung weiterer Server machen muss, um steigende Nachfrage zu bedienen. Dadurch ist es viel einfacher, eine 100-prozentige Betriebszeit aufrechtzuerhalten.

Mehrsprachige Anwendungen

Mit Serverless kann eine einzelne App in verschiedenen Sprachen geschrieben werden. Mit Serverless können Entwickler eine monolithische App in kleinere Teile aufteilen und diese als Microservices ausführen. Diese Microservices kommunizieren dann über eine API miteinander. Jedes Segment einer App kann mit einer anderen Programmiersprache geschrieben werden.

CI/CD-Pipelines

Automatisierung ist der Schlüssel zum erfolgreichen Betrieb von Entwicklungs-, Test- und Integrationspipelines. Mit Serverless können Entwickler Code automatisch testen und Fehler schneller beheben. Da Serverless ereignisbasiert ist, können Benutzer Ereignisse festlegen, um automatisierte Tests auszulösen, ohne dass ein manueller Eingriff erforderlich ist.

Erfahren Sie, wie Sie Ihre eigene DevOps-Pipeline aufbauen.

Was sind die Vorteile von Serverless Computing?

>

Im Vergleich zum herkömmlichen serverorientierten Cloud Computing abstrahiert Serverless Computing den Infrastrukturbetrieb. Alles funktioniert sofort, was wiederum schnellere Code-Releases und automatisierte Skalierbarkeit zu einem günstigeren Preis gewährleistet.

Dies sind die drei häufigsten Vorteile von Serverless:

Automatische Skalierung

Der serverlose Anbieter skaliert die Infrastrukturressourcen je nach Bedarf. Skalierungsvorgänge werden dynamisch und automatisch durchgeführt, ohne dass Entwickler eingreifen müssen.

Schnellere Markteinführung

Da keine komplexen Servercluster bereitgestellt werden müssen, können sich Entwickler stärker auf das Erreichen einer höheren Release-Geschwindigkeit konzentrieren. Dies verkürzt die Zeit, die für die Freigabe des Codes für die Produktion oder die Implementierung inkrementeller Codeänderungen benötigt wird, was zu einer schnelleren Bereitstellung von Apps für Kunden führt.

Optimierte Kosten

Da alles nach Bedarf bereitgestellt wird, müssen Unternehmen nie für ungenutzten Speicherplatz, Rechenzeit oder Netzwerke bezahlen. Der Verbrauch serverloser Dienste wird typischerweise in Millisekunden gemessen und entsprechend abgerechnet.

Was sind die Nachteile von Serverless Computing?

Wie bei jeder Softwarelösung gibt es auch bei serverlosen Lösungen einige Nachteile. Aber abhängig von der App, die Sie erstellen, sind Ihnen einige dieser Nachteile von Serverless möglicherweise nicht so wichtig.

Latenz

Beim Ausführen einer Funktion stellen serverlose Anbieter bei jedem Aufruf automatisch die erforderlichen Ressourcen bereit. Abhängig von der Größe der Arbeitslast werden Container normalerweise in Millisekunden bereitgestellt, es kann jedoch auch mehrere Sekunden dauern. Die Latenz kann durch „Warnstarts“ reduziert werden, die Instanzen einer früheren Ausführung wiederverwenden.

Ausführungsdauer

Die Ausführungszeit einer serverlosen Funktion ist begrenzt und wird nach einer bestimmten Zeit abgebrochen. Dies geschieht in der Regel etwa fünf Minuten nach dem Aufruf, variiert jedoch je nach Anbieter. Ausführungsbeschränkungen sind ein großer Nachteil für Apps, die langwierige Prozesse initiieren. Dieses Problem lässt sich beheben, indem der Code in kleinere Teile segmentiert und als Microservices ausgeführt wird.

Lieferantenbindung

Anbieter nutzen in der Regel proprietäre Technologien, um ihre serverlosen Dienste zu ermöglichen. Dies kann zu Problemen für Benutzer führen, die ihre Arbeitslasten auf eine andere Plattform migrieren möchten. Bei einem Wechsel zu einem anderen Anbieter sind Änderungen am Code und der Architektur der App unumgänglich.

Sicherheit

Benutzer haben wenig Kontrolle über die Instanzkonfiguration, in der ihr Code ausgeführt wird. Dies bleibt dem Nutzer verborgen und fällt in die Zuständigkeit des Dienstanbieters. Somit liegen auch die Sicherheitsmaßnahmen in den Händen des Anbieters. Der Nutzer ist im Falle eines Angriffs hilflos und verlässt sich allein darauf, dass der Anbieter den Schaden behebt und das System wiederherstellt. Anwendungen mit mehreren Einstiegspunkten in einer serverlosen Umgebung sind aufgrund einer größeren Angriffsfläche anfälliger für Schwachstellen.

Wie sieht die Zukunft des Serverless Computing aus?

Serverless Computing ist noch eine relativ neue Technologie. Seine Zukunft hängt von der Fähigkeit der Dienstanbieter ab, einige der oben aufgeführten Nachteile zu beheben - vor allem Kaltstarts. Anbieter müssen die Zeit verkürzen, die zum Ausführen einer Funktion benötigt wird, nachdem diese eine Weile im Leerlaufzustand war. Durch die Lösung dieses Problems wird die Latenz verringert und ein nahtloses Benutzererlebnis gewährleistet.

Serverless basiert derzeit auf zustandslosen Containern für die Funktionsausführung. Die Zukunft von Serverless geht dahin, zustandsbehaftete Apps in die Lage zu versetzen, die Vorteile von Serverless zu nutzen. Dadurch können Entwickler zustandsbehaftete Apps erstellen, ohne sich um die Backend-Datenverwaltung kümmern zu müssen.

Im Hinblick auf DevOps wird Serverless zur Ausweitung von NoOps führen. Dieser Trend wird dazu führen, dass serverlose Anbieter den gesamten Infrastrukturbetrieb im Namen des Kunden abwickeln. In einem solchen Umfeld besteht für Unternehmen keine Notwendigkeit, über interne Betriebsteams zu verfügen.

Es wird erwartet, dass Kubernetes in den kommenden Jahren die Grundlage für Serverless wird. Durch die Unterstützung von Netzwerken, agiler automatischer Skalierung und Multi-Cloud-Bereitstellungen verbessert die Kubernetes-Portabilität das serverlose Computing in mehrfacher Hinsicht. Das serverlose Ausführen bestimmter App-Klassen ist unpraktisch, da Dienstanbieter manchmal ihr Verhalten einschränken. Mit Kubernetes können Entwickler diese Einschränkungen überwinden und serverlose Plattformen basierend auf ihren spezifischen Anforderungen erstellen.

Abschluss

Auch wenn der Name darauf hindeutet, dass es keine Server gibt, basiert Serverless Computing immer noch auf Cloud- oder physischen Servern. Es handelt sich um ein Computermodell, das Infrastrukturoperationen eliminiert und es Entwicklern ermöglicht, sich auf das Schreiben und Bereitstellen von Apps zu konzentrieren. Das serverlose Modell dreht sich um zwei Schlüsselbereiche: Backend-as-a-Service und Functions-as-a-Service.

Ersteres bietet Benutzern eine sofort einsatzbereite Backend-Architektur, während letzteres die Ausführung von Apps in zustandslosen Containern ermöglicht. Diese Container werden automatisch basierend auf Ereignissen oder Auslösern bereitgestellt. Daher ist Serverless keine Allheilmittellösung für alle aktuellen Entwicklungsprobleme. Es ist hauptsächlich auf nicht-monolithische Apps ausgerichtet, die eine auf Mikrodiensten basierende Architektur verwenden.

Testen Sie Bare Metal Cloud für nur 0,10 $/Stunde! Erstellen Sie ein Konto und richten Sie Ihren ersten Server in wenigen Minuten ein. Fang hier an.

Verwandte Artikel