Was ist Serverless Computing?

​Serverless Computing ist ein Ausführungsmodell​​, bei dem Entwickler ​​Code schreiben und bereitstellen können, ohne sich Gedanken über die Infrastruktur zu machen​​, auf der der Code läuft. Um die Verwaltung, Bereitstellung und Wartung der Server kümmert sich ein Cloud-Service-Anbieter, der nach einem Pay-for-Compute-Modell abrechnet.

An dieser Stelle sei erwähnt, dass der Begriff „Serverless Computing“ irreführend ist: Auch wenn der Benutzer selbst keinen Server besitzt, werden in einem Cloud-Computing-Modell natürlich Server verwendet, um maschinelle Ressourcen nach Bedarf bereitzustellen.

cloud innovation summit cta
Cloud Innovation Summit

Entdecken Sie die Zukunft von Cloud-Native und erfahren Sie, wie Sie mit Low-Code Ihre Transformationsziele erreichen.

Jetzt registrieren

Was ist ein Serverless-Computing-Modell?

Der Kern des Serverless-Modells besteht darin, dass Entwickler Applikationen in kleinen Codeteilen erstellen, die vom Cloud-Service-Provider als Functions-as-a-Service (FaaS) ausgeführt werden. FaaS bietet eine ereignisgesteuerte Architektur, in der Funktionen unter anderem durch bestimmte Ereignisse wie HTTP-Anforderungen, Nachrichtenwarteschlangen, Sensordaten oder einen Mausklick ausgelöst werden. Dieses Modell eignet sich gut für Microservices, bei denen sich der Code bereits auf kleine Teile von Funktionen konzentriert, die über APIs kommunizieren.

Serverless-Computing-Anbieter verwenden ein Pay-for-Compute-Modell, das es Kunden ermöglicht, Applikationen bei Bedarf schnell zu skalieren. Sobald eine Applikation nicht mehr benötigt wird, wird ihre Nutzung eingestellt. Sie wird sofort herunterskaliert und nicht im Volatile Memory gehalten.

Sobald Applikationsressourcen nicht mehr gebraucht werden, werden sie auf null herunterskaliert und die Applikation wird nicht mehr ausgeführt. Der Kunde zahlt nur für die benötigten Ressourcen – und nur dann, wenn sie tatsächlich benötigt werden. Auf diese Weise können Kunden auf große Mengen an Rechenleistung zugreifen, ohne die Verantwortung für die Ressourcenverwaltung zu tragen.

Serverless-Computing-Funktionen sind im Wesentlichen zustandslos und speichern keine Daten von früheren Instanzen. Wenn die Latenz für Applikationen ein Problem darstellt, sollten Unternehmen abwägen, ob Serverless Computing wirklich die richtige Wahl ist. Denn bis Instanzen nach einem Kaltstart hochfahren, kann es einige Sekunden dauern.

Die Zustandslosigkeit bedeutet auch, dass alle persistenten Daten, die für die Applikation erforderlich sind, anderswo gespeichert werden müssen. Alle großen Cloud-Anbieter von Serverless Computing bieten auch Datenbanken und Speicherdienste an, die durch Softwarefunktionen ausgelöst werden können.

Serverless Computing, Microservices und Container gelten zusammen als das Herzstück von cloudnativen Applikationsentwicklungstechnologien.

serverless computing

FaaS (Function as a Service) als Kern von Serverless Computing

FaaS ist ein Teilbereich von Serverless Computing und bildet im Wesentlichen dessen Kern. FaaS ermöglicht Entwicklern das Schreiben von Code, der als Reaktion auf ein Ereignis ausgeführt wird. Der Code befasst sich nur mit der Geschäftslogik. Die komplexe Infrastruktur hingegen wird vom Cloud-Service-Anbieter verwaltet.

Die gesamte typische Back-Infrastruktur zum Hosten und Starten einer Applikation über das Internet – die physische Hardware, die Serververwaltung, die Bereitstellung, das Webhosting und das Virtual-Machine-Betriebssystem – werden vollständig vom Cloud-Service-Provider verwaltet. Im Rahmen des FaaS-Modells können Entwickler modularen Code erstellen, der in Form kleiner ausführbarer Codestücke verwaltet wird. Um eine schnelle Reaktion zu ermöglichen, kann der Code am Netzwerk-Edge verwaltet werden.

FaaS bietet viele überzeugende Eigenschaften:

  • Bereitstellungszeit gemessen in Millisekunden
  • Kein Verwaltungsaufwand
  • Elastische Skalierung, einschließlich automatischer Skalierung auf Null
  • Keine Kapazitätsplanung erforderlich
  • 100% verwaltete Wartung
  • Hochverfügbarkeit und Notfallwiederherstellung ohne zusätzlichen Aufwand oder Kosten
  • 100% Ressourcenauslastung, da keine Leerlaufzustände vorhanden sind
  • Kostengranularität in Einheiten von 100 Millisekunden

Backend-as-a-Service (BaaS) ist ein Servicemodell, das den Zugriff auf Dienste und Apps von Drittanbietern für Aktivitäten wie Benutzerauthentifizierung, Push-Benachrichtigung, zusätzliche Verschlüsselung oder in der Cloud verfügbare Datenbanken umfasst. Dadurch können Entwickler sich darauf konzentrieren, den Frontend-Code für Applikationen zu erstellen. Alle Backend- und hinter den Kulissen ausgeführten Prozesse von Mobil- und Web-Applikationen werden an den Cloud-Service-Provider ausgelagert.

In BaaS werden Serverless-Funktionen normalerweise über APIs aufgerufen. Im Gegensatz zu Serverless Computing sind BaaS-Applikationen nur dann skalierbar, wenn der Anbieter diese Möglichkeit vorsieht und der Entwickler den Code entsprechend schreibt.

Platform-as-a-Service (PaaS) ist ein Modell, bei dem Entwickler alle Tools, die zum Entwickeln und Bereitstellen von Applikationen erforderlich sind, vom Anbieter einer Cloud-Plattform mieten. Dazu gehören auch die Betriebssysteme und die erforderliche Middleware. PaaS-Applikationen skalieren nicht automatisch, sondern nur, wenn sie dafür programmiert sind. Im Gegensatz zu serverlosen Applikationen, die sofort starten, müssen PaaS-Applikationen die meiste Zeit laufen, um bei Bedarf sofort verfügbar zu sein.

Vorteile und Nachteile einer Serverless-Computing-Architektur

Vorteile:

  • Kosten: Serverless Computing ermöglicht Kunden Einsparungen bei Hardware-Investitionen und den Kosten für die Wartung von Systemen in der Produktion. Anstatt für Ressourcen zu bezahlen, die bis zum Bedarfsfall ungenutzt bleiben, startet und stoppt Serverless Computing den Zähler, wenn Computerressourcen durch Ereignisse gestartet werden. Das senkt die Betriebskosten, die Personalkosten und damit verbundene Kosten für Installation, Wartung und Support sowie für Softwarelizenzen.
  • Geschwindigkeit: Workloads mit paralleler Verarbeitung können in einer Serverless-Computing-Umgebung schneller ausgeführt werden als in anderen Formen. Auch Code kann näher am Netzwork-Edge ausgeführt werden, was die Latenz reduziert.
  • Elastizität: Die serverlose Architektur ermöglicht elastisches Computing, bei dem Ressourcen je nach Bedarf hoch- und herunterskaliert werden. Der Cloud-Anbieter ist für die entsprechende Verwaltung verantwortlich, einschließlich aller Systeme, Autoskalierung und Bereitstellung.
  • Fokus auf Entwicklungsgeschwindigkeit und Produktivität: Entwickler können sich darauf konzentrieren, wie Code aus geschäftlicher Perspektive am besten entwickelt wird. Zudem können sie selbst entscheiden, in welcher Sprache oder welchem Framework sie entwickeln wollen. Dies gibt Entwicklern mehr Zeit, um Funktionalität und Optimierung zu durchdenken und letztlich bessere Software zu erstellen. Der DevOps-Zyklus kann verkürzt werden, da Entwickler nicht die Infrastruktur beschreiben müssen, die für die Bereitstellung von Code in der Produktion erforderlich ist. Der gesamte Prozess des Testens und Bereitstellens sowie des reibungslosen Betriebs der App liegt nun in der Verantwortung des Cloud-Service-Anbieters. Dies kann dazu beitragen, dass Software schneller bereitgestellt wird, da die Abhängigkeiten in Bezug auf Softwareversionen reduziert werden. Außerdem können Entwickler je nach Belieben schnell Funktionen, Funktionsketten oder ganze monolithische Applikationen als Fixes, neue Features oder neue Releases hochladen. Auch die Aktualisierung einer Funktion zur Zeit ist möglich.
  • Daten zur Nutzertransparenz: Serverlose Plattformen bieten ein hohes Maß an Transparenz über die System- und Benutzerzeiten. Diese Informationen können leicht für Analysen gesammelt werden.

Nachteile:

  • Performance: Applikationen, die mit einem Kaltstart gestartet werden, haben eine Verzögerung beim Hochfahren, was die Leistung der Applikation beeinträchtigen kann.
  • Das Kostenmodell passt nicht zu langlaufenden Prozessen: Serverless-Architekturen eignen sich besser für schnelles Computing als für langlaufenden Code. Da Cloud-Anbieter die Dauer der Laufzeit von Applikationen in Rechnung stellen, ist Serverless Computing bei langlaufenden Applikationen wirtschaftlich nicht unbedingt sinnvoll.
  • Debugging: Das Testen und Debuggen von Applikationen ist komplizierter als bei traditionellen Ansätzen. Denn Entwickler können die Serverless-Architektur nicht replizieren, um zu sehen, wie sich der Code nach seiner Bereitstellung verhält.
  • Ressourcenbeschränkungen und Kostenüberlegungen: Einige Anbieter von Cloud-Services setzen Ressourcenbeschränkungen fest, die Hochleistungsrechner von der Nutzung serverloser Rechenplattformen ausschließen. Aus Kostensicht eignet sich Serverless Computing am besten für Workloads, die häufig Spitzenwerte erreichen und oft skalieren. Für Workloads, die vorhersehbar und lang andauernd sind, ist eine traditionelle Serverumgebung besser geeignet und kosteneffizienter.
  • Anlaufzeiten: Da Apps nicht kontinuierlich ausgeführt werden, brauchen Prozesse eine kurze Zeit, um zu starten und hochzuskalieren. Während diese Latenz für Muss-Funktionen akzeptabel sein kann, trifft dies z. B. bei einer Trading-App nicht zu, da diese ein sofortiges Hochfahren ohne Verzögerung erfordert.
  • Sicherheit und Datenschutz: Die Sicherheit eines Cloud-Anbieters vollständig einzuschätzen, kann schwierig sein. Während der Cloud-Anbieter für den Schutz der Cloud-Umgebung verantwortlich ist, können Kunden keine eigene Intrusion-Detection/Protection-Software auf der Endpunkt- und Netzwerkebene installieren. Aus Sicht des Datenschutzes besteht bei Applikationen, die vertrauliche Daten verarbeiten, die Gefahr, dass diese Daten von externen Mitarbeitern oder durch Multi-Tenancy-Situationen, bei denen Cloud-Anbieter mehrere Kunden auf denselben physischen Servern haben, offengelegt werden. Wenn die Server richtig konfiguriert sind, ist das Risiko einer Datenexposition jedoch gering.
  • Vendor Lock-in: Cloud-Anbieter bieten unterschiedliche Servicelevel, Funktionen und Features an, die einen späteren Anbieterwechsel erschweren können. Generell gilt: Je intensiver ein Kunde die Angebote des Cloud-Anbieters nutzt, desto schwieriger dürfte sich ein Wechsel gestalten.

Anwendungsfälle für Serverless Computing

Mit der Eigenschaft, unregelmäßige und unvorhersehbare Nachfragespitzen zu bewältigen und asynchrone, zustandslose Applikationen bereitzustellen, die einen sofortigen Start verlangen, gibt es eine Reihe von Anwendungsfällen, für die Serverless Computing gut geeignet ist.

Dazu gehören Microservices, mobile Backends, Stream-Verarbeitung im großen Maßstab, Multimedia-Verarbeitung, geplante Batch-Aufgaben, Geschäftslogik, Datenströme und Chatbots.

Anbieter von Serverless Computing

Serverless Computing wurde 2014 von Amazon Web Services erfolgreich kommerzialisiert. Seither bieten alle großen Cloud-Service-Provider und eine Reihe kleinerer Anbieter Serverless-Computing-Plattformen an.

Dazu gehören AWS Lambda, CloudFlare Workers, Google Cloud Functions, IBM Cloud Functions und Microsoft Azure Functions.

Möchten Sie mehr über Serveless und die Welt von Cloud Native erfahren?

In unserem Report Cloudnative Entwicklung: Bereit oder nicht? haben wir mehr als 500 IT-Professionals und Entwickler weltweit befragt, um die Ansichten, Bedenken und Pläne von Unternehmen bezüglich cloudnativer Technologien besser zu verstehen.

Laden Sie den Report herunter, um einen tieferen Einblick in die Art und Weise zu erhalten, wie Unternehmen cloudnative Applikationen einsetzen und inwiefern Low-Code-Plattformen wie OutSystems die entsprechenden Strategien erfolgreich ergänzen.