Topics Serverless

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.

Erfahre mehr über GitLab

Was ist eine Serverless-Geschäftslogik?

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.

Serverless, FaaS (Functions as a Service) und Managed Services

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.

Attribute von Serverless

  1. Kleine, einzelne Codeeinheiten. Häufig bestehen Dienste, die mit einer Serverless-Architektur geschrieben wurden, aus einer einzigen Funktion.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

Vergleich von Cloud-verwalteten Diensten

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

Geschäftswerte und Vorteile von GitLab Serverless

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.

Bist du bereit?

Sieh dir an, was dein Team mit einer einheitlichen DevSecOps-Plattform erreichen könnte.