ADMIN
2024
06
2024-05-30T12:00:00
Datenbanken
PRAXIS
050
Server-Client
Serverless Computing
Status Quo von Serverless Computing
Schnell zur App
von Steffi Burgard
Veröffentlicht in Ausgabe 06/2024 - PRAXIS
Um heute eine Anwendung auszurollen, muss sich der IT-Verantwortliche nicht mehr viele Gedanken über Hardware, Betriebssysteme, Updates, Backups und Security machen, wenn er den Weg über einen Cloudanbieter wählt. So lassen sich Projekte bedarfsgerecht, skalierbar und auch kurzfristig zu überschaubaren Kosten realisieren. Serverless Computing macht dies möglich. Dem gegenüber steht der mögliche Kontrollverlust über die eigenen Daten und eine schwer zu durchschauende Vielfalt an Modellen, Kosten und Technologien.

Serverless Computing erlaubt Entwicklern, eine Anwendung zu programmieren, ohne sich um technische Infrastrukturen bemühen zu müssen. Tat- sächlich kommen zwar Server zum Einsatz, diese stehen allerdings bei Cloudanbietern. Diese übernehmen die Verwaltung, Sicherheit und Wartung der Hardware. Dafür verlangen sie Gebühren, die für die tatsächliche Nutzung der Ressourcen entstehen.
Der Code der Entwickler wird im Bedarfsfall in sogenannten Function-as-a-Service-Umgebungen (FaaS) ausgeführt. Die Abgrenzung zu Plattform- (PaaS), Infrastructure- (IaaS) und Software-as-a-Service (SaaS) erhalten Sie im Verlauf dieses Artikels.
In solchen Szenarien schreiben Entwickler ihre Anwendungen und stellen sie in Containern bereit, die der Cloudprovider verwaltet. Dazu stehen jedoch nur bestimmte Programmiersprachen zur Verfügung. In den meisten Fällen sind dies Node.js, Python, Go und C#. Aber auch andere werden langsam möglich, wobei zu beachten ist, dass ein effizienter Code zu kürzeren Ausführungszeiten und somit geringeren Kosten führt.
Serverless Computing erlaubt Entwicklern, eine Anwendung zu programmieren, ohne sich um technische Infrastrukturen bemühen zu müssen. Tat- sächlich kommen zwar Server zum Einsatz, diese stehen allerdings bei Cloudanbietern. Diese übernehmen die Verwaltung, Sicherheit und Wartung der Hardware. Dafür verlangen sie Gebühren, die für die tatsächliche Nutzung der Ressourcen entstehen.
Der Code der Entwickler wird im Bedarfsfall in sogenannten Function-as-a-Service-Umgebungen (FaaS) ausgeführt. Die Abgrenzung zu Plattform- (PaaS), Infrastructure- (IaaS) und Software-as-a-Service (SaaS) erhalten Sie im Verlauf dieses Artikels.
In solchen Szenarien schreiben Entwickler ihre Anwendungen und stellen sie in Containern bereit, die der Cloudprovider verwaltet. Dazu stehen jedoch nur bestimmte Programmiersprachen zur Verfügung. In den meisten Fällen sind dies Node.js, Python, Go und C#. Aber auch andere werden langsam möglich, wobei zu beachten ist, dass ein effizienter Code zu kürzeren Ausführungszeiten und somit geringeren Kosten führt.
Zunächst möchten wir auf die Anbieter und die aktuelle Verbreitung, also den Status Quo von Serverless Computing eingehen, dessen Chancen und Risiken die Tabelle auflistet.
Anbieter und Verbreitung
Es gibt unter den Cloudanbietern einige große und bekannte Unternehmen, aber auch zahlreiche aufstrebende mit entsprechenden serverunabhängigen Plattformen, die bekanntesten sind:
- Amazon Web Services (AWS): Lambda, App Runner ECS Fargate, EKS Fargate, CloudFront
- Microsoft Azure: Azure-Funktionen, Azure Container Apps, Azure Container Instances
- Google Cloud Platform (GCP): GCP-Funktionen, Google App Engine-Flex, Google Cloud Run
- IBM: Cloud Code Engine
- Oracle: Cloud Fn
- Cloudflare Worker
- Apache Software Foundation: Open Whisk
- Vercel
- Netlify
- Fastly
In der Studie "State of Serverless 2023" [1] untersuchte das Unternehmen Datadog die aktuelle Verbreitung von Serverless Computing. Diese Analyse über die Einführung serverloser Technologien in Cloud-Workflows zeigte ein erhebliches Wachstum: 2023 wuchs die Nutzung serverloser Anwendungen, die in Azure und GCP laufen, um sechs beziehungsweise sieben Prozent und in AWS um drei Prozent. Über 70 Prozent der AWS- und 60 Prozent der Google-Cloud-Nutzer setzen derzeit eine oder mehrere serverlose Umgebungen ein, wobei Azure mit 49 Prozent folgt.
Die großen Hyperscaler wie AWS, Google und Microsoft sind nicht die einzigen Akteure. Heute bieten moderne Frontend-Entwicklungs- und Content-Plattformen wie Vercel, Netlify, Cloudflare und Fastly auch spezialisierte serverlose Rechenfunktionen. Sieben Prozent aller Organisationen, die serverlose Workloads in einer der großen Clouds laufen lassen, arbeiten auch mit mindestens einer dieser aufstrebenden Cloudplattformen. Davon nutzen 62 Prozent eine Frontend-Entwicklungsplattform wie Vercel oder Netlify und 39 Prozent nutzen Edge-Compute-Angebote von Cloudflare und Fastly. In ähnlicher Weise berichtete die Cloud Native Computing Foundation (CNCF) in ihrer Jahresumfrage 2022. Darin zeigte sich, dass 53 Prozent der befragten Unternehmen die serverlose Architektur beziehungsweise FaaS einsetzen.
Technische Abgrenzung des Serverless Computing
Function-as-a-Service, auch definiert als Serverless Computing, grenzt sich klar von PaaS, IaaS und SaaS ab. PaaS bietet bedarfsgerechten Zugriff auf eine vollständige, sofort einsatzbereite, in der Cloud gehostete Entwicklungsplattform. Developer können Anwendungen erstellen, betreiben, warten und verwalten. PaaS ist geeignet für Programmierer, die sich auf die Anwendungserstellung konzentrieren möchten, ohne Server und Plattformdetails beherzigen zu müssen. Entwickler können PaaS verwenden, um Webanwendungen zu erstellen, die auf einer skalierbaren Plattform laufen. Dies umfasst Websites, E-Commerce-Plattformen, Blogs und mehr. PaaS ermöglicht es, diese Backend-Services zu erstellen und zu verwalten. PaaS bietet eine komplette Plattform für Anwendungen, während FaaS sich auf die Ausführung von Funktionen konzentriert, ohne sich um die Infrastruktur zu bemühen.
IaaS hingegen bietet einen Zugang zu in der Cloud gehosteten, physischen und virtuellen Servern, Speichern und Netzwerkressourcen. Anwender können diese Ressourcen nutzen, konfigurieren und verwenden wie lokale Hardware, aber ohne die Notwendigkeit, diese selbst zu betreiben und zu warten. Beispiele für IaaS sind Amazon EC2 und Microsoft Azure Virtual Machines. IaaS kommt zur Anwendung, wenn Software skalieren soll und bietet grundlegende Infrastrukturressourcen, während sich FaaS auf die Ausführung von Funktionen konzentriert.
SaaS bietet bedarfsgerechten Zugriff auf sofort einsatzfähige, in der Cloud gehostete Anwendungssoftware. IT-Verantwortliche können auf Anwendungen wie E-Mail, CRM, Collaboration-Tools, ERP-Systeme und mehr zugreifen, ohne sie selbst zu installieren oder zu warten. Beispiele für SaaS sind Microsoft 365, Salesforce und Google Workspace. SaaS bietet sich für Unternehmen an, die sofort einsatzbereite Software benötigen. Während sich FaaS auf einfache Funktionen beschränkt, bietet SaaS umfangreiche Anwendungen für verschiedene Zwecke.
Attack-Surface-Reduction-Regeln im Überblick
Chancen |
Risiken |
Zeit- und Kostenersparnis | Komplexität beim Testen und Debuggen |
Skalierbarkeit | Sicherheitsbedenken |
Flexibilität und Verringerung der Kapitalbindung | Verlust der Kontrolle über Server |
Effizienz bei der Entwicklung | Performanceeinbußen bei eventuellen verzögerten Reaktionen |
Agile Entwicklung in Teams | Vendor-Lock-in (Anbieterwechsel ist kompliziert) |
Effiziente Ressourcennutzung | Einschränkungen bei der Nutzlast |
Automatisierung | Latenzprobleme bei Kaltstarts |
Anwendungsbeispiele für Serverless Computing
Grundsätzlich lässt sich sagen, dass Serverless Computing hilfreich ist, wenn Daten durch ein bestimmtes Ereignis oder Eingaben verändert werden müssen beziehungsweise eine Reaktion notwendig wird. Wir sprechen hier von eventgesteuerten Anwendungen. Beispiele sind Benutzeranmeldungen (Anmelde- und Authentifizierungsprozesse), Datei-Uploads oder Änderungen in einer Datenbank (Datenbankdienste). Auch in der Batch-Verarbeitung kann die Technologie zum Einsatz kommen, wenn zeitgesteuerte Aufgaben wie Datenbereinigung, Bericht-erstellung oder Backups verwendet werden. In diesem Zusammenhang sind wiederkehrende E-Mail-Benachrichtigungen und Datenbank-Synchronisierungen denkbar. Weitere Anwendungsfälle sind Bildverarbeitung, Textanalyse, Benachrichtigungs- und Alarmdienste, die Echtzeitverarbeitung von Streamingdaten oder die Bearbeitung von Anfragen bei einem Hotline-Telefonservice.
Wenn eine Anwendung unvorhersehbare Spitzenlasten hat, kann Serverless die Skalierung automatisch anpassen. Beispiele sind E-Commerce-Websites, Blogs und Contentmanagement-Systeme. Des Weiteren sind Szenarien in Zusammenhang mit IoT-Geräten zu nennen. Hier lassen sich Messdaten verarbeiten und analysieren, wie etwa die Temperaturüberwachung oder eine Geräteprotokollierung. Letztlich ist Serverless auch geeignet für schnelle Prototypen und Experimente, da es keine langwierige Infrastrukturkonfiguration erfordert, das heißt, um neue Ideen zu testen oder Proofs-of-Concepts zu entwickeln.
Kosten beim Serverless Computing
Die Aufwände für Serverless Computing unterscheiden sich je nach Cloudprovider, Dienst und Nutzung. Serverless-Dienste werden normalerweise pro Ausführung oder pro Ressourceneinheit abgerechnet. Die Abrechnung erfolgt in der Regel in Millisekunden für die tatsächliche Ausführungszeit. Je länger die Ausführungszeit, desto höher sind die Kosten. Der verwendete Speicher beeinflusst ebenfalls die Kosten, je höher die Speicherkapazität und je größer die Anzahl der Aufrufe (jeder Funktionsaufruf wird berechnet), umso höher ist auch der Preis. Schauen wir uns ein Beispiel dazu an: Eine Funktion weist 100.000 Aufrufe pro Monat auf und benötigt durchschnittlich 200 Millisekunden pro Ausführung. Liegt der Preis pro Million Aufrufe bei einem US-Dollar und der Speicher beträgt 256 MByte, betragen die monatlichen Kosten ungefähr 2,50 Dollar.
Fazit
Serverless Computing bringt eine Reihe von Vorteilen mit, etwa niedrigere Betriebs- und Wartungskosten sowie ortsunabhängige Anwendungen. Der Ansatz, nur für die Aufrufe und Ausführungen des Codes zu bezahlen, dürfte das ein oder andere Softwareprojekt vorantreiben. Die Einsatzmöglichkeiten von Cloudprojekten sind in den letzten Jahren deutlich gestiegen. So gibt es Multicloud-Modelle, bei denen Admins verschiedene Anbieter für durchgängige Steuerungs- und Kontrollmechanismen kombinieren. Container wiederum spielen eine wichtige Rolle für die Entwicklungen im IoT und den zugehörigen Edge-Geräten.
(jp)