Definition

Serverless Computing

Was ist Serverless Computing?

Serverless Computing ist ein Cloud-Computing-Ausführungsmodell, mit dem Softwareentwickler Anwendungen und Server erstellen und ausführen können, ohne die Backend-Infrastruktur bereitstellen oder verwalten zu müssen. Bei serverlosen Technologien übernimmt der Cloud-Anbieter die gesamte routinemäßige Infrastrukturverwaltung und -wartung, einschließlich der Aktualisierung des Betriebssystems (OS), der Installation von Patches, der Sicherheitsverwaltung, der Systemüberwachung und der Kapazitätsplanung.

Beim Serverless Computing erwerben Entwickler Backend-Services von Cloud-Service-Anbietern auf einer Pay-as-you-go-Basis, sie zahlen also nur für die tatsächlich genutzten Services. Das Hauptziel des Serverless Computing ist es, Entwicklern das Schreiben von Code zu vereinfachen, der auf Cloud-Plattformen ausgeführt werden und eine bestimmte Aufgabe erfüllen soll.

So funktioniert Serverless Computing

Beim Serverless Computing müssen Entwickler keine Maschineninstanzen in der Cloud verwalten. Stattdessen führen sie Code auf Cloud-Servern aus, ohne diese konfigurieren oder warten zu müssen. Die Preise richten sich nach dem tatsächlichen Ressourcenverbrauch einer Anwendung und nicht nach im Voraus erworbenen Kapazitätseinheiten.

Wenn Entwickler ihre Anwendungen auf virtuellen Servern in der Cloud hosten, müssen sie in der Regel diese Server einrichten und verwalten, Betriebssysteme darauf installieren, sie überwachen und die Software kontinuierlich aktualisieren.

Bei einem serverlosen Modell schreiben Entwickler eine Funktion in ihrer bevorzugten Programmiersprache und veröffentlichen sie auf der Plattform eines serverlosen Anbieters. Eine Funktion ist eine Geschäftslogik, bei der eine Aufgabe ausgeführt wird, sobald ein bestimmtes Ereignis sie auslöst. Eine automatische Antwort auf eine E-Mail mit einer bestimmten Betreffzeile ist beispielsweise eine Funktion.

Der Cloud-Service-Anbieter verwaltet die Infrastruktur und die Software und ordnet die Funktion einem Endpunkt der Anwendungsprogrammierschnittstelle zu. Benutzer interagieren mit der API, um die Funktion zu nutzen und Aufgaben auszuführen. Die API ermöglicht die gleichzeitige Ausführung vieler verschiedener Instanzen der Funktion und kann so viele Benutzer bedienen, bis die Funktion eine bestimmte Grenze erreicht, die als Concurrency Limit bezeichnet wird.

Warum ist Serverless Computing wichtig?

Serverless Computing spielt eine wichtige Rolle bei der digitalen Transformation. Erstens können sich Entwickler auf das Schreiben und Bereitstellen von Code konzentrieren, ohne sich um die zugrunde liegende Infrastruktur kümmern zu müssen, die die Codeausführung unterstützt. Unabhängig von der Branche oder Unternehmensgröße eliminiert eine Serverless-Computing-Strategie den Verwaltungsaufwand und erhöht so die Produktivität der Entwickler.

Dies ist besonders nützlich für Startups oder kleine und mittlere Unternehmen, die nicht über das Budget für die Implementierung und den Support einer physischen Infrastruktur verfügen. Mit Serverless zahlen sie nur für die tatsächlich genutzten Rechenressourcen. Außerdem können sie aus den Angeboten der Anbieter diejenigen Dienste auswählen, die ihren Anforderungen entsprechen. Anwendungsentwicklungsteams können sich auf benutzernahen Anwendungen konzentrieren, anstatt sich um die Verwaltung der Infrastruktur zu kümmern. Serverless entlastet auch in anderer Hinsicht, da Anbieter häufig weitere Funktionen anbieten, darunter

  • Sicherheitsfunktionen
  • Compliance-Funktionen
  • keine Serververwaltung
  • automatische Skalierung zur Anpassung an wechselnde Traffic-Anforderungen
  • verwaltete integrierte Sicherheit

Vor- und Nachteile von Serverless Computing

Zu den Vorteilen von Serverless Computing gehören:

  • Kosteneffizienz: Entwickler zahlen nur für die Zeit, in der der Code auf einer serverlosen Rechenplattform ausgeführt wird. Sie zahlen nicht für virtuelle Maschinen (VMs), die im Leerlauf sind.
  • einfache Bereitstellung: Entwickler stellen Apps innerhalb von Stunden oder Tagen statt Wochen oder Monaten bereit.
  • automatische Skalierung: Cloud-Anbieter übernehmen die Skalierung und das Herunterfahren von Ressourcen oder Instanzen, wenn der Code nicht ausgeführt wird.
  • gesteigerte Produktivität: Entwickler verbringen den Großteil ihrer Zeit mit dem Schreiben und Entwickeln von Apps, anstatt sich mit Servern und Laufzeiten zu beschäftigen.

Serverless Computing hat jedoch auch Nachteile:

  • Anbieterabhängigkeit: Der Wechsel des Cloud-Anbieters kann schwierig sein, da die Bereitstellung von serverlosen Diensten von Anbieter zu Anbieter variiert.
  • lang laufende App: Manchmal kann die Verwendung lang laufender Aufgaben mehr kosten als die Ausführung eines Workload auf einer VM oder einem dedizierten Server.
  • Latenz: Bei Serverless kommt es zu einer Verzögerung, bis eine skalierbare Serverless-Plattform eine Funktion zum ersten Mal ausführt. Diese Latenz wird als Kaltstart bezeichnet.
  • Schwierigkeiten beim Debugging: Da eine serverlose Instanz bei jedem Start eine neue Version von sich selbst erstellt, ist es schwierig, die Daten zu sammeln, die zum Debuggen und Beheben einer serverlosen Funktion erforderlich sind.

Anwendungsfälle für Serverless Computing

Es gibt zahlreiche Anwendungsfälle für Serverless Computing, darunter die folgenden Aufgaben:

  • Ereignisgesteuertes Computing: Serverless Computing wird in Szenarien eingesetzt, in denen Geräte auf verschiedene Dateitypen zugreifen, wie Mobiltelefone und PCs, die Videos, Textdateien und Bilder hochladen.
  • Datenverarbeitung im Internet of Things (IoT): Serverless Computing bietet eine Möglichkeit, Daten aus verschiedenen Geräten zu kombinieren und zu analysieren und dann die gewünschten Ereignisse auszulösen. Damit ist es eine hochfunktionale und kostengünstige Methode zur Verwaltung des IoT.
  • Backend-Aufgaben für mobile Apps oder Websites: Eine serverlose Funktion kann eine Anfrage, beispielsweise nach Informationen aus einer Benutzerdatenbank, vom Frontend der Website oder Anwendung entgegennehmen, die Informationen abrufen und an das Frontend zurückgeben.
  • umfangreiche Hintergrundprozesse: Serverless wird verwendet, um Daten in den Langzeitspeicher zu übertragen, die Daten zu konvertieren, zu verarbeiten und zu analysieren und Metriken an einen Analysedienst zu übertragen.
  • Unterstützung von Microservices: Die Unterstützung von Microservices-Architekturen ist eine der häufigsten Anwendungen von Serverless Computing. Entwickler können zwar Container oder Platform as a Service (PaaS) zum Erstellen und Betreiben von Microservices verwenden, aber auch Serverless Computing kommt zum Einsatz. Die inhärente und automatische Skalierung, die schnelle Bereitstellung, die Verwendung kleiner Code-Bits und das Preismodell, bei dem nur die tatsächlich genutzten Ressourcen in Rechnung gestellt werden, sind für die Unterstützung von Microservices von Vorteil.
  • Erstellung von RESTful-APIs: Serverless Computing erleichtert die Erstellung von RESTful-APIs, die Entwickler bei Bedarf skalieren können.
  • Video- und Bildbearbeitung: Mit Serverless Computing können Entwickler die Videotranskodierung für verschiedene Geräte anpassen und die Größe von Bildern dynamisch ändern.
  • Schreiben mehrsprachiger Apps: Bei der Erstellung von Anwendungen ist eine der ersten Überlegungen, welche Sprache verwendet werden soll. Da Serverless eine polyglotte Programmierumgebung ist, können Entwickler Code in jeder beliebigen Sprache oder jedem beliebigen Framework schreiben, darunter Python, Node.js, Java und JavaScript.
  • kontinuierliche Integration/kontinuierliche Bereitstellung: CI/CD-Pipelines ermöglichen es Entwicklern, kleine Code-Teile auszuliefern, sodass sie täglich Bugfixes und andere Updates bereitstellen können. Die serverlose Architektur kann viele der Workflows in den CI/CD-Pipelines von Entwicklern automatisieren, beispielsweise Pull-Anfragen, die automatisierte Tests auslösen.
Serverlose Plattformen haben verschiedene Anwendungsmöglichkeiten
Abbildung 1: Serverlose Plattformen haben verschiedene Anwendungsmöglichkeiten in der Praxis.

Serverless im Vergleich zu anderen Cloud-Backend-Modellen

Es gibt zahlreiche Unterschiede zwischen Serverless Computing und anderen Cloud-Backend-Modellen, darunter Infrastructure as a Service (IaaS), Backend as a Service (BaaS) und PaaS.

Serverless im Vergleich zu IaaS

Beim IaaS-Cloud-Computing-Modell kaufen Entwickler Kapazitätseinheiten im Voraus, anstatt sie wie beim Serverless Computing nach Bedarf zu erwerben. Das bedeutet, dass Unternehmen Public-Cloud-Anbietern für Serverkomponenten bezahlen, die ständig in Betrieb sind, um die Hauptkomponenten ihrer Anwendungen auszuführen.

Folglich sind der Serveradministrator und das Technikteam eines Unternehmens dafür verantwortlich, die durchschnittliche monatliche Nutzungskapazität des Unternehmens zu schätzen, um einen Preisplan auszuwählen, der seinen Anforderungen entspricht.

Serverlose Architekturanwendungen werden jedoch nur bei Bedarf bereitgestellt, da ein Ereignis die Ausführung des Anwendungscodes auslöst. Der Public-Cloud-Anbieter weist die für diesen Vorgang erforderlichen Ressourcen zu, und das Unternehmen zahlt nur, solange der Code ausgeführt wird.

Serverless und BaaS im Vergleich

Einer der Hauptunterschiede zwischen BaaS und Serverless Computing ist die Skalierbarkeit. Bei Serverless Computing wird die Anwendung automatisch entsprechend der App-Nutzung skaliert. Die Infrastruktur des Cloud-Anbieters weist automatisch die Server oder Container zu, die für diese Erhöhung erforderlich sind.

BaaS skaliert eine Anwendung möglicherweise nicht automatisch, da einige BaaS-Plattformen eine Begrenzung der Anfragen pro Sekunde haben, um eine automatische Skalierung zu verhindern. Viele BaaS-Anbieter bieten jedoch Plattformen an, die ähnlich wie Serverless Computing funktionieren und Anwendungen automatisch skalieren.

Da die serverlose Architektur ereignisgesteuert ist, werden sie außerdem als Reaktion auf Ereignisse ausgeführt. BaaS-Apps sind in der Regel nicht ereignisgesteuert, was bedeutet, dass sie mehr Serverressourcen benötigen.

Serverless und PaaS im Vergleich

Mit serverlosen Apps ist die Skalierung nach oben und unten einfach, da sie bedarfsabhängig sind und keine Eingriffe durch Entwickler erfordern.

PaaS-Angebote ermöglichen zwar ebenfalls Skalierbarkeit, jedoch müssen Entwickler die Skalierungsparameter festlegen. Im Allgemeinen bietet PaaS Entwicklern eine bessere Kontrolle über ihre Bereitstellungsumgebungen als Serverless Computing.

Bei Serverless zahlen Entwickler nur für das, was sie nutzen. Bei PaaS zahlen Entwickler in der Regel eine monatliche Gebühr für die Dienste – unabhängig davon, wie viel sie nutzen –, was viel besser planbar ist und unter Umständen kostengünstiger sein kann.

Was Sie bei einer serverlosen Architektur beachten sollten

Unternehmen sollten nach serverlosen Plattformen suchen, die ihnen helfen, Anwendungen durchgängig zu entwickeln und dabei Dienste aus Rechenzentren, Datenbanken, Storage, Messaging, Datenanalyse, maschinellem Lernen und intelligenten Assistenten zu nutzen.

Einige serverlose Cloud-Services bieten Skalierbarkeit und Kosteneinsparungen, können jedoch zusätzliche Komplexität mit sich bringen. Bei der Auswahl einer serverlosen Architektur müssen beispielsweise eingeschränkte Laufzeiten und die Bindung an einen Anbieter berücksichtigt werden.

Entwickler stehen oft vor einem schwierigen Kompromiss zwischen der Einfachheit und Geschwindigkeit von Serverless Computing und der Flexibilität und Portabilität von Containern. Die meisten Unternehmen profitieren von einem Full-Stack-Ansatz, anstatt Serverless auf Rechenfunktionen zu beschränken.

Anbieter und Sprachen für Serverless Computing

Zu den wichtigsten Anbietern von serverlosem Computing und den von ihnen unterstützten Programmiersprachen gehören die folgenden:

  • Alibaba Cloud Function Compute: Dieser Dienst wurde 2017 eingeführt und machte Alibaba Cloud zu einem der ersten chinesischen Cloud-Anbieter, der Serverless-Computing-Dienste anbot. Er unterstützt Node.js, Python, Java, Hypertext Preprocessor (PHP) und C#.
  • Amazon Web Services (AWS) Lambda: Dieses Function-as-a-Service-Angebot (FaaS) von AWS wurde 2014 eingeführt. AWS-Lambda-Funktionen können in Java, Go, PowerShell, Node.js, JavaScript, C#, Python, Rust, Swift und Ruby geschrieben werden.
  • Google Cloud Functions: Dieser 2017 von Google veröffentlichte Dienst unterstützt Node.js, JavaScript, Python, Go, PHP, .NET und Ruby, ermöglicht jedoch eine unbegrenzte Ausführungszeit für Funktionen. Google Cloud Functions kann auch mit anderen Google-Diensten interagieren, sodass Entwickler komplexe Anwendungen der Enterprise-Klasse schnell erstellen und verwalten können, ohne sich um die zugrunde liegenden Server kümmern zu müssen.
  • IBM Cloud Functions: Basierend auf Apache OpenWhisk unterstützt IBM Cloud Functions JavaScript (Node.js), Swift, Python, Ruby, PHP, .NET und andere. Es führt Funktionen aus, die in JavaScript und in jeder Sprache geschrieben sind, die in WebAssembly kompiliert werden kann.
  • Microsoft Azure Functions: Microsoft hat Azure Functions 2016 eingeführt, um mit AWS Lambda zu konkurrieren. Es unterstützt C#, Java, JavaScript (Node.js), PowerShell, Python und TypeScript.
  • Oracle Cloud Infrastructure Functions: OCI Functions (ehemals Oracle Functions) wurde 2019 veröffentlicht und lässt sich in die Plattformdienste und SaaS-Anwendungen von Oracle Cloud Infrastructure integrieren. Oracle Functions basiert auf dem Open-Source-Projekt Fn Project. Es unterstützt Java, Python, Node.js, Go, Ruby und C#. Für fortgeschrittene Anwendungsfälle können Entwickler ihre eigenen Dockerfiles und GraalVM mitbringen.

Best Practices für die Sicherung serverloser Anwendungen

Es gibt bestimmte Best Practices zur Reduzierung von Cyberangriffen und anderen Sicherheitsrisiken für serverlose Umgebungen. Dazu gehören die folgenden:

  • Verwendung von APIs: Die Anforderung, dass Daten von der Client-Seite über eine API übertragen werden müssen, bedeutet eine zusätzliche Sicherheitsebene, die die serverlosen Backend-Anwendungen schützt. Dadurch wird sichergestellt, dass böswillige Benutzer keine Cyberangriffe über die Datenübertragung durchführen können.
  • Optimierung der Sicherheit: Sicherheitsmaßnahmen wie Verschlüsselung und Multifaktor-Authentifizierung sollten auf verschiedene serverlose Anwendungsressourcen angewendet werden. Da serverlose Anwendungen viele verschiedene Microservices enthalten können, muss jeder einzelne geschützt werden, um die Anzahl der Angriffsflächen zu reduzieren, die von Angreifern ausgenutzt werden können.
  • Festlegen von Berechtigungen und Privilegien: Anwendungsbenutzern sollten nur die Berechtigungen und Privilegien gewährt werden, die sie zur Ausführung bestimmter Aufgaben benötigen. Dies wird als Prinzip der geringsten Berechtigungen bezeichnet.
  • Überwachen und Protokollieren der Nutzung: Die Aktivitäten der Benutzer mit einer serverlosen Funktion oder einem Microservice sollten konsistent protokolliert und überwacht werden, um Fehler zu identifizieren und verdächtige Aktivitäten zu stoppen, bevor Schaden entsteht.
  • beschränkter Zugriff mithilfe Virtual Private Clouds: VPCs können mit eigenen Sicherheitsfunktionen wie virtuellen Firewalls konfiguriert werden, um Ressourcen zu schützen.

Die Zukunft des Serverless Computing

Laut einem Bericht von Mordor Intelligence wird der weltweite Markt für Serverless Computing zwischen 2025 und 2030 um mehr als 23 Prozent wachsen. Das bedeutet, dass Unternehmen die Vorteile der Entwicklung und Bereitstellung maßgeschneiderter Anwendungen ohne den Aufwand und die Kosten für die Verwaltung von Hardware erkennen. Die folgenden Trends im Bereich Serverless Computing werden sich voraussichtlich fortsetzen:

  • Wettbewerb auf dem Markt: Cloud-Anbieter werden mehr serverlose Dienste anbieten, um sich von anderen Anbietern auf dem Markt abzuheben.
  • Serverless am Edge: Edge-Computing- und Machine-Learning-Plattformen werden weiterhin serverlose Anwendungen integrieren. Edge-Computing-Geräte müssen näher an den Datenerfassungsquellen platziert werden. Serverless erleichtert dies, da keine physischen Server erforderlich sind.
  • Serverless Container: Der Einsatz Serverless Container wird zunehmen, da Unternehmen die Vorteile der Anpassung und Orchestrierung von Containern für die Entwicklung vollständiger Softwareanwendungen erkennen, während die Anbieter sich um die zugrunde liegende Infrastruktur kümmern.
  • Serverless AI und WebAssembly: Moderne Serverless-Plattformen integrieren zunehmend KI-Services (wie Textgenerierung oder Bildanalyse) als Funktionen, die auf Abruf skalieren. Auch WebAssembly (WASM) hält Einzug in die Serverless-Welt. Durch seine Geschwindigkeit und Portabilität ist es ideal für Edge-Computing oder leistungsarme Geräte.

Serverless Computing auf einen Blick

Serverless Computing ist ein Cloud-Modell, bei dem Entwickler Code ausführen können, ohne sich um Serverinfrastruktur kümmern zu müssen. Der Cloud-Anbieter übernimmt Wartung, Skalierung und Sicherheit. Bezahlt wird nur für die tatsächliche Nutzung. Vorteile sind schnelle Bereitstellung, Kosteneffizienz und automatische Skalierung. Typische Einsatzbereiche sind Microservices, APIs, IoT und datenverarbeitende Anwendungen. Nachteile sind nter anderem Anbieterabhängigkeit und mögliche Kaltstarts.

Erfahren Sie mehr über Cloud Computing