Serverless Computing ist wie IaaS (Infrastructure as a Service), PaaS (Platform as a Service) und SaaS (Software as a Service) eine spezifische Art des Cloud-Services. Es beschreibt die Bereitstellung von Backend-Diensten (Datenverarbeitung im Hintergrund von Webanwendungen) auf Grundlage der tatsächlichen Nutzung. Im Gegensatz zu anderen Services basiert das Prinzip nicht auf einer fest gemieteten Bandbreite, Speicherkapazität oder Rechenleistung. Unternehmen zahlen lediglich für den Umfang der genutzten Webanwendungen.
Serverless Computing bedeutet im Unterschied zur wörtlichen Übersetzung nicht, dass für die jeweilige Anwendung kein Server benötigt wird. Stattdessen betreiben Anbieter die Server für Nutzer:innen und nehmen ihnen dabei sämtliche Aufgaben ab, die damit einhergehen. Dadurch können sich zum Beispiel Entwickler:innen ganz auf die Programmierung und Bereitstellung ihres Codes konzentrieren. Die „Serverlosigkeit” auf Kundenseite wird also wie so vieles im Cloud-Umfeld durch Abstraktion und Virtualisierung hergestellt.
Wir erklären, wie Serverless Computing funktioniert und welche Vorteile es Ihrem Unternehmen bringen kann.
Was ist Serverless Computing?
Wollten Unternehmen in der Vergangenheit Webanwendungen nutzen, mussten sie zunächst entsprechende Geräte wie zum Beispiel Server anschaffen. Das war teuer und brachte oft erheblichen Personal- und Materialaufwand mit sich. Die meisten Cloud-Dienste ersparen Unternehmen diese Investitionen. Deren Entwickler:innen können sich vor allem auf ihre Kernaufgaben konzentrieren, anstatt sich immer wieder mit der Verwaltung und Pflege von IT-Strukturen zu beschäftigen.
Aber auch die Administration und Konfiguration von Serverstrukturen sowie die korrekte Funktion von Backend-Diensten für Webanwendungen kostet Unternehmen wertvolle Entwicklungszeit und verzögerten mitunter Projekte. Serverless Computing nimmt Entwickler:innen diese lästigen Verwaltungsaufgaben komplett ab. Konfigurierte Server und modulare Angebote zur Entwicklung eigener Backends für Webanwendungen stehen beim Serverless Computing jederzeit bereit. Lediglich die Geschäftslogik und die Verwaltung des Datenbestands von Unternehmen fallen weiterhin unter deren Hoheit.
Dazu zählen:
- Bereitstellung von theoretisch unbegrenzter Rechen- und Speicherkapazität in der Cloud
- Konfiguration und Administration der Server-Infrastruktur
- Wartung des Betriebssystems (zum Beispiel durch Patches, Updates usw.)
- Bereitstellung leistungsfähiger Anwendungen und Funktionsmodule zur Backend-Entwicklung
- Skalierung aller benötigten Ressourcen je nach Leistungsbedarf (unter anderem Speicher, Netzwerk, Laufzeitumgebungen)
Entwickler:innen laden also lediglich ihren Code in die Cloud und können sofort damit beginnen, ihn mithilfe der angebotenen Backend-Tools zu testen oder ihn Nutzer:innen im Frontend einer Webanwendung zur Verfügung zu stellen.
Wie ist Serverless Computing aufgebaut?
Serverless Computing unterteilt die Backend-Architektur für Anwendungen als kombiniertes Cloud-Service-Modell in Funktionsbereiche. Jeder einzelne davon führt eine andere Aufgabe innerhalb der Anwendung aus und kann individuell gestartet oder gestoppt werden.
Innerhalb der Architektur von Serverless Computing unterscheidet man grundlegend zwei Bereiche:
- Function-as-a-Service (FaaS): Dieses verhältnismäßig neue Konzept ähnelt dem Dienst Software-as-a-Service (SaaS). Es stellt Entwickler:innen die Möglichkeit zur Verfügung, einzelne Funktionen für Webanwendungen auf einfache Weise zu mieten oder zu generieren. Sie erstellen ihren Code dabei nach wie vor eigenständig und laden ihn modular in zustandslose (stateless) Instanzen, die ihnen der Anbieter zur Verfügung stellt. Diese Funktionen starten und stoppen auf einzelne Ereignisse (Events) hin.
- Backend-as-a-Service (BaaS): Diese Entwicklungsumgebungen erlauben Entwickler:innen, im Browser eigene Backends für Webseiten und -anwendungen zu erstellen. Der Service stellt Module und standardisierte Funktionen zur Verfügung, die häufig bei der Verwaltung von Webseiten zur Anwendung kommen. Gleichzeitig hosten die Anbieter auch das Backend. Dieses können die Entwickler:innen nach der Erstellung mit einem gewöhnlichen Webbrowsers aufrufen und konfigurieren.
Die wichtigste Eigenschaft der aus diesen Services bestehenden Serverless-Architektur ist die Skalierbarkeit: Anwendungen des Serverless Computing passen sich automatisch der Zahl der Nutzer:innen und der damit einhergehenden Last an. Funktionen werden nur nach Bedarf gestartet – werden sie nicht benötigt, kommt es auch nicht zur Ausführung. Unternehmen zahlen dabei lediglich die tatsächlich genutzte Rechen- und Speicherkapazität und keine pauschalen Gebühren wie bei anderen Cloud-Services.
Backend-Dienste für Serverless Computing
Serverless Computing stellt innerhalb der oben geschilderten Architektur Backend-Dienste nach dem FaaS-Prinzip bereit. Diese können Funktionsmodule umfassen, die entweder von Programmier:innen erstellt oder vom Service-Provider angeboten werden. Sie können durch Edge Computing zudem an den Rand des lokalen Netzwerks ausgelagert werden, um Rechenleistung und Bandbreite bei der Verbindung zur Cloud einzusparen. Häufig angewendete Funktionen sind zum Beispiel Datenbank- und Speicherdienste für Daten von Kund:innen.
Zusätzliches Sicherheitskonzept
Daneben muss Serverless Computing gegenüber klassischen Webanwendungen ein weiteres Sicherheitskonzept berücksichtigen: Während ersteren eine singuläre Prüfung der Sicherheitsregeln für Benutzer:innen genügt, reicht dies bei Serverless-Computing-Anwendungen nicht aus. Dort benötigt jede modulare und zustandslose Funktionseinheit eine separate Authentifizierung, die durch entsprechende Dienste innerhalb der Anwendung zur Verfügung gestellt werden muss.
Die Überprüfung ist bei jedem Start einer funktionalen Einheit notwendig, findet also im Verlauf einer einzelnen Session von Benutzer:innen recht häufig statt. Ein API-Gateway kann als Management-Tool diese Sicherheitsabfragen übernehmen und gewissermaßen als „Tür” zwischen der Anwendung und dem Backend dienen. Das Gateway wandelt Anfragen der Nutzer:innen in authentifizierte Events um und sendet sie an die funktionalen Einheiten, die daraufhin starten.
Serverless Computing im Vergleich zu anderen Cloud-Services
Serverless Computing weist als integriertes Angebot mit verschiedenen Ebenen Unterschiede zu singulären Cloud-Services auf:
- Function-as-a-Service (FaaS) besteht aus zustandslosen, ereignisgesteuerten, skalierbaren und serverseitigen Funktionen, die vollständig vom Anbieter verwaltet werden. Einzig die Daten und die Geschäftslogik verwalten Nutzer:innen selbst. FaaS wird oft mit Serverless Computing gleichgesetzt, hält als singulärer Service allerdings lediglich einzelne Funktionen und keine kompletten Anwendungen oder ein Backend-Hosting bereit.
- Backend-as-a-Service (BaaS) bietet Module für das komplette Backend von Webanwendungen an. Das Backend kann dabei allerdings nicht individuell skaliert werden. Beim Serverless Computing wird es hingegen in Kombination mit FaaS in kleinere Blöcke unterteilt, die nach Bedarf ausgeführt und beendet werden.
- Software-as-a-Service (SaaS) bedeutet, dass Sie eine einzelne Software-Lösung oder ein Software-Paket bei Ihrem Cloud-Anbieter auf Zeit mieten, anstatt regelmäßig neue Lizenzen oder Updates zu kaufen (zum Beispiel ein Office-Paket).
- Platform-as-a-Service (PaaS) stellt Entwickler:innen wie beim Serverless Computing Server, Ressourcen und eine Umgebung für ihre Arbeit zur Verfügung. PaaS ist dabei aber weniger leicht skalierbar: Die Anwender:innen müssen die Skalierung beziehungsweise ihren Bedarf gewöhnlich bereits im Voraus (grob) planen.
- Infrastructure-as-a-Service (IaaS) bietet Hardware, Speicher, Rechenleistung und Netzwerkressourcen. Diese können nach Umfang oder genutzter Zeit gemietet werden und sind häufig frei skalierbar. Konfiguration und Verwaltung der darauf installierten Software obliegt dabei den Nutzer:innen.
Anwendungsbereiche von Serverless Computing
Serverless Computing wird für Unternehmen immer wichtiger, die Aufwand und Kosten für Ihre Webanwendungen minimieren möchten. Dessen Funktionen kommen vor allem in zwei Bereichen zum Einsatz:
- Bei der Übermittlung von Ereignissen und Daten zwischen Services: Darunter fällt zum Beispiel die Zerlegung und Umwandlung einer Eingabe in ein für die Weiterverarbeitung nutzbares Format (sogenanntes Parsing).
- Bei der Entwicklung einer API zu einem konkreten Zweck: Diese in sich geschlossenen Schnittstellen oder kleinere Services stehen Unternehmen zur Verfügung, um damit singuläre Funktionen einer Webanwendung zu starten. Dabei müssen sie sich keine Sorgen um die Skalierung oder langfristige Kosten machen: Während die Skalierung durch den Provider erfolgt, entstehen Kosten lediglich bei dem konkreten Aufruf des Services.
Resultierend daraus kann Serverless Computing unter anderem bei folgenden Anwendungen eingesetzt werden:
- Web-Applikationen (skalierbare Anwendungen für Benutzer:innen)
- API-Backends (Zusammenführung der Services einer Anwendung in einem Backend)
- Microservices (unter anderem Zahlungsverarbeitung, Netzwerk- und Messagingdienste)
- Datenverarbeitung (zum Beispiel Text-, Bild-, Video- und Audiobearbeitung bei großen, unregelmäßig eingehenden Dateien)
- Stream-/Batch-Verarbeitung (unter anderem App-Protokolle, IoT-Sensoren, Finanzdaten)
- Customer Relationship Management (CRM) (beispielsweise Chatbots, Email- oder Anruffunktionen)
Vorteile von Serverless Computing
Serverless Computing bietet für den Einsatz in Ihrem Unternehmen viele Vorteile. Diese bestehen letztlich vor allem in der Einsparung betrieblicher Ressourcen sowie einem Zeitgewinn gegenüber herkömmlichen Backend-Diensten. Serverless eignet sich vor allem bei schwankendem Workload hervorragend für den Betrieb Ihrer Webanwendungen.
Die wichtigsten Vorteile von Serverless Computing sind:
- Niedrige Investitionen: Sie müssen nicht in teure Server und weitere Hardware investieren, deren Kapazitäten Ihr Unternehmen vielleicht nur zum Teil ausschöpft.
- Keine Server-Verwaltung: Ohne eigene Hardware ist auch keine Konfiguration, Administration und Wartung notwendig. Dies spart Ihnen zusätzliches Personal und Ressourcen (wie zum Beispiel Strom) ein.
- Hohe Sicherheit: Regelmäßige Updates und Patches durch den Service-Provider garantieren Ihnen größtmögliche Sicherheit für Ihre Geschäftsdaten.
- Automatische Skalierung: Serverless Computing skaliert die erforderliche Rechen- und Speicherkapazität auch bei Lastspitzen flexibel auf Ihre Bedürfnisse.
- Pay-on-demand: Die Abrechnung erfolgt ausschließlich nach tatsächlich ausgeführtem Code. Sie zahlen statt pauschaler Beträge nur die Gebühren für die von Ihnen genutzten Kapazitäten.
- Zeitgewinn: Die Konfiguration und Wartung von Servern wird auf ein Minimum reduziert. Ihre Entwickler:innen haben mehr Zeit für die Entwicklung und Verbesserung neuer oder bestehender Anwendungen.
Herausforderungen für Entwickler:innen
Serverless Computing klingt in der Theorie perfekt für die Arbeit von Programmierer:innen, doch in der Praxis müssen sie einige Herausforderungen bewältigen.
Der Service setzt funktionale Einheiten für Anwendungen voraus, deren Laufzeit möglichst kurz ausfallen sollte. Nur so ist eine schnelle Kommunikation zwischen Client (Nutzer:innen der Anwendung) und Server gewährleistet. Der Provider führt automatisch für jede Anfrage eine neue Instanz der funktionalen Einheit aus, angepasst an die aktuelle Auslastung.
Bei zustandslosen (stateless) Anwendungen erfolgt dies problemlos. Viele Webanwendungen sind jedoch zustandsorientiert (stateful) aufgebaut und müssen zum Beispiel auf Datenbanken zugreifen oder Daten darin speichern. Die Logik der Workflows verschiebt sich dabei hin zum Client – erst recht bei der Nutzung von Single Page Applications (SPA). Diese Einzelseiten-Webanwendungen laden Inhalte dynamisch nach und verstärken die Last noch.
Ein Beispiel dafür ist der Warenkorb in einem Online-Shop: Die Anwendung merkt sich den Inhalt des Warenkorbs und auch nach einem erneuten Laden der Seite bleiben dessen Einträge erhalten. Soll dies im Rahmen des Serverless Computings erfolgen, müssen die Anwendungen entsprechend angepasst werden.
Wie bei anderen Cloud-Services, bei denen die Anwender:innen viele Aufgaben an den Service-Provider übertragen (wie zum Beispiel bei PaaS), ergeben sich auch beim Serverless Computing mögliche Nachteile aus diesem Prinzip:
- erschwertes Debugging: Die Wartung und Fehlerbehebung innerhalb der angebotenen Module ist von Seiten der Anwender:innen schwierig bis unmöglich. Tiefere Einblicke in die Backend-Prozesse (z.B. mit Debugger-Programmen) bleiben meist verwehrt.
- aufwendiges Logging: Die ganzheitliche Protokollierung der Softwareprozesse wird durch die Modularisierung der einzelnen Funktionen erheblich komplexer.
- umständliches Monitoring: Auch die Nachvollziehbarkeit und Auswertung der Logdaten gestaltet sich aufwendiger.
- Kontrollverlust: Während Anwender:innen große Kontrolle und Möglichkeiten zur Individualisierung einzelner FaaS-Komponenten innerhalb ihres Backends besitzen, geben sie die Kontrolle über alle vom Anbieter betriebenen Komponenten komplett ab. Ähnlich wie bei PaaS kann sich dieser Vorteil schnell in einen Nachteil verwandeln, wenn die Infrastruktur, auf denen Serverless Computing betrieben wird, nicht ordnungsgemäß arbeitet.
- Abhängigkeit vom Provider: Durch die Abgabe der Kontrolle über die Infrastruktur sind Anwender:innen nahezu vollständig vom Support der Anbieter von Serverless Computing abhängig.
Generell gilt: Serverless Computing ist eine leistungsstarke Alternative für Ihre Webanwendungen, wenn Sie Zeit und Kosten sparen wollen. Seine Stärken spielt diese Art von Cloud-Service vor allem bei schwankender Nachfrage von Nutzer:innen und ungleichmäßigen Workload aus. Sind die Webanwendungen Ihres Unternehmens hingegen eher gleichbleibend und auf einem hohen Niveau ausgelastet, empfiehlt sich eher ein anderer Cloud-Service auf PaaS-Basis ohne FaaS-Module.
Quelle:
https://www.vodafone.de/business/featured/technologie/was-ist-serverless-computing/