Was bedeutet serverunabhängig?
„Serverunabhängig“ (Serverless) bezeichnet ein Modell für die Entwicklung und Ausführung von Cloudanwendungen, mit dem Entwickler Code erstellen und ausführen können, ohne Server zu verwalten und für nicht genutzte Funktionen der Cloudinfrastruktur bezahlen zu müssen
Abstraktes Bild in Blau und Schwarz
Was bedeutet serverunabhängig?

„Serverunabhängig“ (Serverless) bezeichnet ein Modell für die Entwicklung und Ausführung von Cloudanwendungen, mit dem Entwickler Anwendungscode erstellen und ausführen können, ohne Server oder Back-End-Infrastruktur bereitstellen oder verwalten zu müssen.

Mit Serverless können sich Entwickler voll auf das Schreiben des besten Front-End-Anwendungscodes und der bestmöglichen Geschäftslogik konzentrieren. Entwickler müssen lediglich ihren Anwendungscode schreiben und ihn in Containern bereitstellen, die von einem Cloud-Service-Provider verwaltet werden. Der Cloud-Provider kümmert sich um den Rest, stellt also die zur Ausführung des Codes benötigte Cloudinfrastruktur bereit und skaliert bedarfsorientiert die Infrastruktur. Der Cloud-Provider ist auch für die gesamte routinemäßige Verwaltung und Wartung der Infrastruktur wie Betriebssystem-Updates und -Patches, Sicherheitsmanagement, Kapazitätsplanung, Systemüberwachung und mehr verantwortlich.

Auch wichtig: Bei Serverless bezahlen Entwickler nie für nicht genutzte Kapazität. Der Cloud-Provider stellt die erforderlichen IT-Ressourcen bedarfsgerecht bereit und nimmt diese in Betrieb, wenn der Code ausgeführt wird, und nimmt sie wieder außer Betrieb („Skalierung auf null“), wenn die Ausführung endet. Die Abrechnung beginnt, wenn die Ausführung beginnt, und endet, wenn die Ausführung endet; typischerweise basiert der Preis auf Ausführungszeit und benötigten Ressourcen.

Serverless bedeutet nicht „ohne Server“

Ungeachtet des Namens gibt es beim Serverless Computing definitiv Server. „Serverless“ beschreibt die Erfahrung des Entwicklers mit diesen Servern – sie sind für den Entwickler unsichtbar, der sie nicht sieht, betreibt oder in irgendeiner Weise mit ihnen interagiert.

Heute bietet jeder führende Cloud-Service-Provider eine serverunabhängige Plattform, darunter Amazon Web Services (AWS Lambda), Microsoft Azure (Azure Functions), Google Cloud (Google Cloud Functions) und IBM Cloud (IBM Cloud Code Engine). Zusammen bilden Serverless Computing, Microservices und Container ein Triumvirat von Technologien, die als Herzstück cloudnativer Anwendungsentwicklung gelten.

Serverless ist mehr als nur FaaS

Function-as-a-Service oder FaaS ist ein Cloud-Computing-Service, mit dem Entwickler Code oder Container als Reaktion auf bestimmte Ereignisse oder Anforderungen ausführen können, ohne die für die Ausführung des Codes erforderliche Infrastruktur angeben oder verwalten zu müssen.

FaaS ist das zentrale Rechenmodell von Serverless, und die beiden Begriffe werden oft synonym verwendet. Aber Serverless ist viel mehr als FaaS. Serverless ist ein ganzer Service-Stack, der auf bestimmte Ereignisse oder Anforderungen reagieren und auf null skalieren kann, wenn er nicht mehr genutzt wird – und für den Bereitstellung, Verwaltung und Abrechnung vom Cloud-Provider übernommen werden und für Entwickler unsichtbar sind. Zusätzlich zu FaaS umfassen diese Services unter anderem Folgendes:

  • Serverunabhängige Datenbanken und Speicher: Datenbanken (SQL und NoSQL) und Speicher (insbesondere Objektspeicher) sind die Basis der Datenebene. Ein serverunabhängiger Ansatz für diese Technologien umfasst den Übergang von der Bereitstellung von „Instanzen“ mit definierten Kapazitäts-, Verbindungs- und Abfragebeschränkungen hin zu Modellen, die entsprechend der Nachfrage in Infrastruktur und Preis skalieren.

  • Event-Streaming und Messaging: Serverunabhängige Architekturen eignen sich gut für ereignisgesteuerte und Stream-verarbeitende Workloads, insbesondere die quelloffene Event-Streaming-Plattform Apache Kafka

  • API-Gateways: API-Gateways fungieren als Proxys für Webaktionen und bieten Routing von HTTP-Methoden, Client-ID und geheime Schlüssel, Durchsatzbegrenzung, CORS, Anzeige der API-Nutzung, Anzeige von Antwortprotokollen und Richtlinien für die gemeinsame API-Nutzung.

Ashher Syed von IBM bietet eine ausführliche Erklärung von Serverless und dem Serverless-Stack (6:37):

Serverless im Vergleich zu PaaS, Containern und VMs

Da Serverless, Platform-as-a-Service (PaaS), Container und virtuelle Maschinen (VMs) alle eine wichtige Rolle in der Cloud-Anwendungsentwicklung und im IT-Umfeld spielen, ist es sinnvoll zu vergleichen, wie Serverless bei einigen wichtigen Attributen im Vergleich zu den anderen Modellen abschneidet.

  • Bereitstellungszeit: Bei Serverless sind es Millisekunden, bei den anderen Modellen Minuten oder Stunden.

     

  • Verwaltungsaufwand: Bei Serverless entsteht keiner, bei PaaS, Containern bzw. VMs gibt es eine Entwicklung von geringem über mittleren bis zu hohem Aufwand.

     

  • Wartung: Serverunabhängige Architekturen werden zu 100 % vom Provider verwaltet. Dies gilt auch für PaaS, jedoch erfordern Container und VMs erheblichen Wartungsaufwand, einschließlich Aktualisierung/Verwaltung von Betriebssystemen, Container-Images, Verbindungen etc.

     

  • Skalierung: Auto-Scaling – einschließlich automatischer Skalierung auf null – gehört unmittelbar zu Serverless. Die anderen Modelle bieten automatisches, aber langsames Skalieren, das eine sorgfältige Optimierung der Auto-Scaling-Regeln erfordert, und kein Skalieren auf null.

     

  • Kapazitätsplanung: Für Serverless nicht erforderlich. Die anderen Modelle erfordern eine Mischung aus automatischer Skalierbarkeit und Kapazitätsplanung.

     

  • Statusunabhängigkeit: Gehört unmittelbar zu Serverless, was bedeutet, dass Skalierbarkeit nie ein Problem darstellt; der Status wird in einem externen Service oder einer externen Ressource aufrechterhalten. PaaS, Container und VMs können HTTP nutzen, über lange Zeiträume einen offenen Socket oder eine offene Verbindung beibehalten und den Status zwischen Aufrufen speichern.

     

  • Hohe Verfügbarkeit (HA) und Disaster Recovery (DR): Beides gehört unmittelbar zu Serverless, ohne zusätzlichen Aufwand und ohne gesonderte Berechnung. Die anderen Modelle erfordern Zusatzkosten und Managementaufwand. Im Fall von VMs und Containern kann die Infrastruktur automatisch neu gestartet werden.

  • Ressourcenauslastung: Serverless ist zu 100 % effizient, da es so etwas wie ungenutzte Kapazität nicht gibt – sie wird nur auf Anforderung aufgerufen. Bei allen anderen Modellen gibt es zumindest einen bestimmten Grad von ungenutzter Kapazität.

     

  • Abrechnungsgenauigkeit und Einsparungen: Serverless wird in Einheiten von 100 Millisekunden gemessen. PaaS, Container und VMs werden normalerweise per Stunde oder Minute gemessen.

Serverless, Kubernetes und Knative

Kubernetes ist eine Open-Source-Plattform für die Containerorchestrierung, die die Bereitstellung, Verwaltung und Skalierung von Anwendungen automatisiert. Die Automatisierung von Kubernetes vereinfacht die Entwicklung containerbasierter Anwendungen erheblich.

Serverunabhängige Anwendungen werden häufig in Containern bereitgestellt. Kubernetes allein kann keine serverunabhängigen Anwendungen ohne spezielle Software ausführen, die Kubernetes in die serverunabhängige Plattform eines bestimmten Cloud-Providers integriert.

Knative stellt ein serverunabhängiges Framework für Kubernetes bereit. Es handelt sich um eine Open-Source-Erweiterung für Kubernetes, mit der jeder Container als serverunabhängige Workload auf jeder beliebigen Cloudplattform mit Kubernetes ausgeführt werden kann, unabhängig davon, ob der Container um eine serverunabhängige Funktion oder anderen Anwendungscode (z. B. Microservices) herum aufgebaut ist. Knative abstrahiert den Code und wickelt Netzrouting, Ereignisauslöser und automatische Skalierung für die serverunabhängige Ausführung ab.

Knative ist für Entwickler transparent – sie erstellen einfach wie gewohnt einen Container mit Kubernetes und Knative erledigt den Rest und führt den Container als serverunabhängige Workload aus.

Weitere Informationen zu Knative

Vor- und Nachteile von Serverless

Vorteile

Angesichts dessen sollte es keine Überraschung sein, dass Serverless Computing einzelnen Entwicklern und Entwicklerteams in Unternehmen zahlreiche technische und geschäftliche Vorteile bietet.

Verbesserte Entwicklerproduktivität: Wie oben erwähnt, können sich Entwicklerteams dank Serverless auf das Schreiben von Code konzentrieren, statt auf das Infrastrukturmanagement. So haben Entwickler viel mehr Zeit, ihre Front-End-Anwendungsfunktionalität und Geschäftslogik zu erneuern und zu optimieren.

Bezahlung nur für Ausführung: Die Messung beginnt, wenn die Anforderung erfolgt, und endet, wenn die Ausführung beendet ist. Vergleichen Sie dies mit dem IT-Modell Infrastructure-as-a-Service (IaaS), bei dem Kunden nur für die physischen Server, virtuellen Maschinen (VMs) und sonstigen Ressourcen bezahlen, die für die Ausführung von Anwendungen erforderlich sind – ab dem Zeitpunkt, an dem diese Ressourcen bereitgestellt werden, bis zu dem Zeitpunkt, an dem sie explizit stillgelegt werden.

Entwicklung in beliebiger Sprache: Serverless ist eine mehrsprachige Umgebung, in der Entwickler in beliebigen Sprachen oder Frameworks (Java, Python, JavaScript, Node.js), mit denen sie vertraut sind, codieren können.

Optimierte Entwicklungss-/DevOps-Zyklen: Serverless vereinfacht die Bereitstellung und, in einem größeren Zusammenhang, DevOps, weil Entwickler keine Zeit aufwenden müssen, die Infrastruktur zu definieren, die für Integration, Test, Bereitstellung und Implementierung von Code-Builds in der Produktion erforderlich ist.

Kosteneffiziente Leistung: Für bestimmte Workloads – exklusive Parallelverarbeitung, Datenstreamverarbeitung, bestimmte Arten der Datenverarbeitung – kann Serverless Computing sowohl schneller als auch kosteneffizienter als andere Formen der Datenverarbeitung sein.

Transparente Nutzung: Serverunabhängige Plattformen bieten nahezu vollständigen Einblick in System- und Benutzerzeiten und können Nutzungsinformationen systematisch zusammenfassen.

Entwickler und IT-Spezialisten kennen weitere bestimmte Vorteile von Serverless Computing. Sie können diese mit dem interaktiven Tool (PDF, 1,8 MB) unten erkunden:

 

Anwendungsfälle für Serverless

Aufgrund ihrer speziellen Kombination von Eigenschaften und Vorteilen eignet sich die serverunabhängige Architektur gut für Anwendungsfälle rund um Microservices, mobile Back-Ends sowie Daten- und Ereignisstreamverarbeitung.

Serverless und Microservices

Der heute gängigste Anwendungsfall von Serverless ist die Unterstützung von Microservices-Architekturen. Das Microservices-Modell konzentriert sich auf die Erstellung kompakter Services, die einen einzigen Job ausführen und über APIs miteinander kommunizieren. Während Microservices auch mit PaaS oder Containern erstellt und ausgeführt werden können, hat Serverless mit seinen Eigenschaften rund um kompakten Code, inhärente und automatische Skalierung, schnelle Bereitstellung und ein Preismodell ohne Gebühren für inaktive Kapazität, erheblich an Dynamik gewonnen.

API-Back-Ends

Jede Aktion (oder Funktion) in einer serverunabhängigen Plattform kann in einen HTTP-Endpunkt verwandelt werden, der von Web-Clients verwendet werden kann. Wenn sie für das Web aktiviert sind, werden diese Aktionen als Webaktionen bezeichnet. Sobald Sie Webaktionen haben, können Sie diese zu einer vollausgestatteten API mit einem API-Gateway zusammenstellen, das zusätzliche Sicherheit, OAuth-Unterstützung, Durchsatzbegrenzung und angepasste Domänenunterstützung bietet.

Praktische Erfahrung mit API-Back-Ends können Sie mit dem Lernprogramm „Serverunabhängige Webanwendung und API“ sammeln.

Datenverarbeitung

Serverless eignet sich gut zum Arbeiten mit strukturierten Text-, Audio-, Bild- und Videodaten im Zusammenhang mit Aufgaben wie Datenaufbereitung, -transformation, -prüfung, -bereinigung, PDF-Verarbeitung, Audionormalisierung, Bildverarbeitung (Rotation, Schärfung, Reduzierung von Störgrößen, Piktogrammgenerierung), optische Zeichenerkennung und Videotranscodierung. Einen ausführlicheren Anwendungsfall zur Bildverarbeitung finden Sie unter „Wie SiteSpirit mit 10 % der Kosten 10x schneller wurde.

Exklusive Parallelverarbeitungs-/„Map“-Operationen

Jede Art von exklusiver Parallelverarbeitung ist ein guter Anwendungsfall für eine serverunabhängige Laufzeit, wobei jede parallel ausführbare Task zu einem Aktionsaufruf führt. Beispielaufgaben schließen alles von Datensuche und -verarbeitung (insbesondere Cloud Object Storage), Map(-Reduce)-Operationen und Web-Scraping bis hin zu Geschäftsprozessautomation, Hyperparameteroptimierung, Monte-Carlo-Simulationen und Genomverarbeitung ein.

Ein detailliertes Beispiel finden Sie unter „So konnte eine Monte-Carlo-Simulation in einer serverunabhängigen Architektur über 160x schneller ausgeführt werden als auf einer lokalen Maschine.“

Workloads zur Stream-Verarbeitung

Die Kombination von Managed Apache Kafka mit FaaS und Datenbank/Speicher bietet eine leistungsfähige Basis für den Echtzeit-Ausbau von Datenpipelines und Streaming-Apps. Diese Architekturen eignen sich ideal für die Arbeit mit allen Arten von Datenstreamaufnahmen (für Prüfung, Bereinigung, Aufbereitung, Transformation), einschließlich IoT-Sensordaten-, Anwendungsprotokolldaten-, Finanzmarktdaten- und Geschäftsdatenstreams (aus anderen Datenquellen).

Gängige Anwendungsbereiche für Serverless

In einer aktuellen IBM Umfrage berichteten IT-Spezialisten, dass sie Serverless in den verschiedensten Anwendungsbereichen einsetzen, darunter Customer Relationship Management (CRM), Analyse und Business Intelligence, Finanzen und mehr:

 

Lernprogramme: Erste Schritte mit Serverless Computing

Mit diesen Lernprogrammen können Sie Ihr Know-how im Bereich Serverless Computing erweitern:

Lösungen
IBM Cloud Code Engine

Führen Sie Ihren Container, Anwendungscode oder Stapeljob in einer vollständig verwalteten Container-Laufzeitumgebung aus

IBM Cloud Code Engine erkunden
IBM Cloud Satellite

Stellen Sie Apps konsistent über lokale, Edge-Computing- und Public-Cloud-Umgebungen von jedem Cloud-Anbieter bereit und führen Sie sie aus

IBM Cloud Satellite erkunden
IBM Cloudant

Die Datenebene für hyperskalierte, belastbare, global verfügbare Anwendungen, basierend auf dem quelloffenen Apache CouchDB

IBM Cloudant erkunden
Ressourcen Serverless im Unternehmen, 2021

Neue Forschungen bieten Einblick in die realen Chancen und Herausforderungen von Serverless Computing.

Einführung in IBM Cloud Code Engine

Erhalten Sie mehr als Funktionen zur Ausführung Ihrer containerisierten Workloads – einschließlich Web-Apps, Microservices und Stapeljobs – auf dieser vollständig verwalteten serverunabhängigen Plattform.

Genießen Sie Ihre Cloud wieder

Werfen Sie einen genaueren Blick auf IBM Cloud Code Engine und die Vorteile.

Machen Sie den nächsten Schritt

Serverless Computing bietet eine einfachere, kosteneffizientere Möglichkeit, Anwendungen in der Cloud zu erstellen und auszuführen. Erfahren Sie mehr über IBM Cloud Code Engine, eine serverunabhängige Plattform mit nutzungsabhängiger Abrechnung, mit der Entwickler serverunabhängige Anwendungen und Workflows ohne Kubernetes-Kenntnisse bereitstellen können.

IBM Cloud Code Engine erkunden