Was ist Serverless?
Serverless ist ein Softwarearchitektur-Designmuster, das die ereignisgestützte Codeausführung durch Cloud-verwaltete Dienste nutzt, um massiv skalierbare und kosteneffiziente Anwendungen zu erstellen, die aus kleinen Einzelfunktionen bestehen, ohne dass sich die Entwickler(innen) beim Programmieren auf die zugrunde liegende Architektur konzentrieren müssen, auf der der Code ausgeführt wird.
Was ist also eine solche Serverless-Geschäftslogik? Jede Anwendung verwendet irgendwann Server. Der Begriff „Serverless“ bezieht sich auf ein Architektur- und Servicemodell, bei dem sich die Entwickler(innen) nicht um die Infrastruktur kümmern müssen und sich stattdessen auf die Geschäftslogik ihrer Anwendung konzentrieren können. Serverless ist die nächste Entwicklung des Architekturdesigns von Monolith über Microservices zu Funktionen, wie Adrian Cockcroft in diesem Video erklärt.
Oft werden Serverless und FaaS als austauschbare Begriffe behandelt, aber das ist nicht wirklich korrekt. Serverless ist ein übergreifendes Architekturmuster, das ein FaaS zusammen mit anderen Cloud-verwalteten Diensten nutzt. Bei FaaS handelt es sich um eine bestimmte Art von Dienst wie AWS Lambda, Google Cloud Functions und Azure Functions, der es Entwickler(inne)n ermöglicht, Funktionen bereitzustellen.
-
Kleine, einzelne Codeeinheiten. Häufig bestehen Dienste, die mit einer Serverless-Architektur geschrieben wurden, aus einer einzigen Funktion.
-
Ereignisbasierte Ausführung. Die Infrastruktur, die zum Ausführen einer Funktion benötigt wird, existiert erst, wenn eine Funktion ausgelöst wird. Sobald ein Ereignis empfangen wurde, wird eine kurzlebige Rechenumgebung erstellt, um diese Anforderung auszuführen. Die Umgebung kann sofort zerstört werden oder – was häufiger der Fall ist – bleibt für einen kurzen Zeitraum, in der Regel 5 Minuten, aktiv.
-
Skalierung auf Null. Sobald eine Funktion keine Anfragen mehr erhält, wird die Infrastruktur heruntergefahren und nicht länger ausgeführt. Dies spart Kosten, da die Infrastruktur nur bei Nutzung läuft. Wenn es keine Nutzung gibt, skaliert die Umgebung auf Null.
-
Skalierung auf unendlich. FaaS kümmert sich um die Lastüberwachung und die Erstellung zusätzlicher Instanzen, wenn sie benötigt werden – theoretisch bis ins Unendliche. Dies macht es für Entwickler(innen) praktisch überflüssig, beim Entwerfen von Anwendungen über die Skalierung nachzudenken. Eine einzelne bereitgestellte Funktion kann eine oder eine Milliarde Anfragen ohne Änderung des Codes verarbeiten.
-
Nutzung von Managed Services. Oft nutzen Serverless-Architekturen Cloud-Dienste für Elemente ihrer Anwendung, die einen nicht differenzierten Schwerpunkt bieten, wie z. B. Dateispeicherung, Datenbanken, Warteschlangen usw. Zum Beispiel ist Googles Firebase in der Serverless-Community als Datenbank- und Zustandsverwaltungsdienst beliebt, der sich mit anderen Google-Diensten wie Cloud Functions verbindet.
Hier ist ein Diagramm mit Beispielen für verwaltete Dienste von AWS, Google Cloud und Azure sowie ihren Open-Source-Pendants.
Dienst | Open-Source-Lösung | AWS | Google Cloud | Azure |
---|---|---|---|---|
FaaS | Knative | Lambda | Cloud Functions | Azure Functions |
Speicher | Minio | S3 | Cloud Storage | Azure Storage |
SQL-DB | MySQL | RDS | Cloud SQL | Azure SQL Database |
NoSQL-DB | MongoDB, Cassandra, CouchDB | DynamoDB | Cloud Datastore | Cosmos DB |
Nachrichtenwarteschlange | Kafka, Redis, RabbitMQ | SQS, Kinesis | Google Pub/Sub | Azure Queue Storage |
Service-Mesh | Istio | App Mesh | Istio on GKE | Azure Service Fabric Mesh |
GitLab Serverless ermöglicht es Unternehmen, ihre eigene FaaS auf Kubernetes bereitzustellen.
Schnelligkeit
Höheres Innovationstempo. Die Produktivität von Entwickler(inne)n steigt, wenn sie sich ausschließlich auf die Geschäftslogik konzentrieren können.
Stabilität
Höhere Stabilität/Resilienz (weniger Umsatzverluste aufgrund von Ausfallzeiten).
Skalierung
Größerer Umfang, d. h. die Software kann mit der Geschäftsnachfrage Schritt halten.
Kosten
Niedrigere Kosten. Da das Computing nur in Rechnung gestellt wird, wenn ein Dienst aktiv ist, bietet Servless enorme Kosteneinsparungen im Vergleich zur Always-On-Infrastruktur.
Kein Anbieterzwang
Kein Anbieterzwang. Unternehmen können auswählen, bei wem sie ihr Computing ausführen möchten. Das ist in jeder Cloud möglich, die Kubernetes unterstützt, oder sogar auf lokalen Servern.
Workflow
Dein FaaS ist Teil des gleichen Workflows wie der Rest deines Software-Lebenszyklus, wobei es eine einzige Anwendung für die Planung und das Testen bis hin zur Bereitstellung und Überwachung gibt.
Bereitstellung
Die Bereitstellung von Funktionen ist im Vergleich zur direkten Verwendung von Knative stark optimiert und vereinfacht.
Vorgeschlagener Inhalt
Mehr als 50 % der Fortune-100-Unternehmen vertrauen GitLab
Stelle jetzt bessere Software schneller bereit
Erlebe, was dein Team mit der intelligenten
DevSecOps-Plattform erreichen kann.