Serverless-Architektur

Serverless-Architekturen können die ideale Bereitstellungsplattform für ressourcenbeschränkte Entwickler sein

Was ist eine serverlose Architektur?

Serverless-Architektur ist ein Cloud-Computing-Modell, bei dem Entwickler Anwendungen erstellen und ausführen, ohne traditionelle Server verwalten zu müssen. Die Server existieren nach wie vor, befinden sich jedoch in der Cloud, wo Cloud-Anbieter die Infrastruktur, die Skalierung und die Ressourcenzuweisung automatisch übernehmen.

Für serverlose Anwendungen schreiben Entwickler Code typischerweise als isolierte Funktionen, die als Reaktion auf Ereignisse oder Auslöser ausgeführt werden, und die Cloud-Anbieter berechnen nur die tatsächlich genutzten Rechenressourcen. Dieser Ansatz vereinfacht die Anwendungsentwicklung, reduziert den operativen Aufwand und ermöglicht eine schnelle Skalierbarkeit, wodurch er sich ideal für Mikroservices und ereignisgesteuerte Anwendungen eignet.

Diese Seite umfasst:

Wie eine serverlose Architektur funktioniert

Die Serverless-Architektur entlastet Entwickler von der Serververwaltung und überlässt die zugrundeliegende Infrastruktur den Cloud-Anbietern. So funktioniert es in der Regel:

1. Funktionserstellung Entwickler schreiben Code als einzelne Funktionen, wobei jede Funktion so konzipiert ist, dass sie eine bestimmte Aufgabe oder einen bestimmten Dienst ausführt. Die Serverless-Architektur wird manchmal auch als Function-as-a-Service oder FaaS.


2. Funktionsbereitstellung Die Funktionen werden verpackt und auf einer Serverless-Plattform bereitgestellt, die von einem Cloud-Diensteanbieter bereitgestellt wird. Die gängigsten Serverless-Plattformen sind AWS Lambda, Azure Functions und Google Cloud Functions.

3. Ereignisauslöser: Funktionen sind so konfiguriert, dass sie als Reaktion auf spezifische Ereignisse oder Auslöser ausgeführt werden. Ereignisse können HTTP-Anfragen (z. B. API Gateway), Datenänderungen (z. B. Datenbankupdates), Timer, Datei-Uploads oder etwas anderes sein. Der Cloud-Anbieter verwaltet die Ereignisquellen und ruft automatisch die zugehörigen Funktionen auf.

4. Automatische Skalierung: Wenn Ereignisse eintreten, skaliert die Serverless-Plattform die zugrunde liegenden Ressourcen automatisch, um die Arbeitslast zu bewältigen. Wenn Ihre Funktion einen plötzlichen Anstieg von Anfragen verzeichnet, stellt der Cloud-Anbieter mehr Ressourcen bereit.

5. Ausführung Wenn ein Ereignis eine Funktion auslöst, initialisiert die Serverless-Plattform einen Container oder eine Laufzeitumgebung für diese Funktion. Der Code innerhalb der Funktion wird ausgeführt und kann auf alle erforderlichen Ressourcen oder Daten zugreifen. Nachdem die Funktion ihre Aufgabe beendet hat, kann der Container für kurze Zeit betriebsbereit (warm) bleiben, wodurch nachfolgende Anfragen schneller ausgeführt werden können.

6. Rechnungswesen Die Abrechnung basiert auf der tatsächlichen Ausführungszeit und den von den Funktionen genutzten Ressourcen. Ihnen werden die Anzahl der Ausführungen sowie die Rechenressourcen wie CPU und Arbeitsspeicher in Rechnung gestellt, die während der Ausführung zugewiesen werden.

7. Staatenlosigkeit Serverless-Funktionen sind typischerweise zustandslos, was bedeutet, dass sie keine Informationen zwischen Aufrufen behalten. Jeder benötigte Zustand und jede benötigte Daten müssen extern gespeichert werden, oft in einer Datenbank oder einem Speicherdienst.

8. Protokollierung und Überwachung: Serverless-Plattformen stellen in der Regel integrierte Protokollierungs- und Überwachungstools bereit, mit denen Entwickler die Leistung verfolgen und Probleme in ihren Funktionen beheben können.

Schlüsselkonzepte der Serverless-Architektur

Da die Serverless-Entwicklung eine Alternative zur herkömmlichen Entwicklung darstellt, sollten Sie sich mit den folgenden Begriffen und Konzepten vertraut machen, um zu verstehen, wie man Serverless-Anwendungen entwirft, bereitstellt und verwaltet:

Aufruf Ein Ereignis, das die Ausführung einer serverlosen Funktion auslöst. Beispiele hierfür sind eine HTTP-Anfrage, eine Datenbankaktualisierung oder ein geplanter Timer.

Dauer: Die Dauer, die eine serverlose Funktion für die Ausführung benötigt, was ein Faktor bei der Berechnung der Ausführungskosten ist.

Kaltstart: Der erste Aufruf einer Serverless-Funktion, bei dem der Cloud-Anbieter Ressourcen bereitstellt und die Laufzeitumgebung einrichtet. Kaltstarts verursachen im Vergleich zu Warmstarts eine zusätzliche Latenz.

Warmlauf Nachfolgende Ausführungen einer Serverless-Funktion, wenn die Laufzeitumgebung bereits vorbereitet ist, was im Vergleich zu Kaltstarts zu schnelleren Antwortzeiten führt.

Gleichzeitigkeitslimit: Die maximale Anzahl gleichzeitiger Funktionsausführungen, die von der Serverless-Plattform zugelassen wird. Dieses Limit kann sich auf die Fähigkeit auswirken, gleichzeitige Anfragen oder Ereignisse zu verarbeiten.

Zeitüberschreitung: Die maximal zulässige Ausführungsdauer für eine Serverless-Funktion. Wenn eine Funktion dieses Limit überschreitet, wird sie gewaltsam beendet und ihr Ergebnis wird möglicherweise nicht zurückgegeben.

Ereignisquelle: Der Ursprung eines Ereignisses, das eine serverlose Funktion auslöst. Beispiele für Ereignisquellen sind Amazon S3-Buckets, API-Gateways, Nachrichtenwarteschlangen und Datenbankaktualisierungen.

Staatenlosigkeit Serverless-Funktionen sind typischerweise zustandslos, was bedeutet, dass sie keine Daten zwischen Aufrufen speichern. Jeglicher erforderliche Zustand sollte extern in Datenbanken oder Speicherdiensten gespeichert werden.

Ressourcenverteilung Die Spezifikation von Rechenressourcen wie CPU oder Arbeitsspeicher für eine Serverless-Funktion. Diese Ressourcen werden von Entwicklern häufig bei der Definition der Funktion ausgewählt.

Automatische Skalierung: Die automatische Anpassung serverloser Ressourcen durch den Cloud-Anbieter zur Bewältigung schwankender Arbeitslasten und zur Sicherung einer optimalen Leistung.

Serverless-Datenbank: Serverless-Datenbanken sind elastisch skalierbare Datenbanken, bei denen die zugrunde liegende Infrastruktur nicht offengelegt wird. Couchbase Capella™ DBaaS ist ein Beispiel für eine vollständig verwaltete serverlose Datenbank.

Wann man eine serverlose Architektur verwendet

Obwohl die Serverless-Architektur vielseitig ist, ist sie nicht für jeden Anwendungsfall die beste Wahl – Anwendungen mit lang laufenden Aufgaben, hohem Rechenbedarf oder konstanten Workloads profitieren oft mehr von traditionellen, serverbasierten Architekturen. Achten Sie darauf, die spezifischen Anforderungen und die einzigartigen Stärken von Serverless zu berücksichtigen, wenn Sie entscheiden, ob es die richtige Wahl für Ihre Anwendung ist.

Anwendungsfälle für serverlose Architekturen

Einige der häufigsten und am besten geeigneten Anwendungsfälle für serverlose Architektur umfassen:

Web- und Mobil-Apps: Verwalte Backends für Web- und Mobil-Apps, liefere Inhalte, verarbeite Benutzeranfragen und verwalte die Benutzerauthentifizierung.

APIs: Skalieren Sie Ihre RESTful- und GraphQL-APIs automatisch und integrieren Sie sie mühelos in andere Dienste.

IoT: Effiziente Verwaltung der Datenverarbeitung und -analyse von IoT-Geräten, die Ereignisse mit Sensordaten auslösen.

Echtzeit-Datenverarbeitung: Verarbeiten Sie Echtzeit-Datenströme wie Clickstream-Analyse, Protokollverarbeitung und ereignisgesteuerte Analysen.

Stapelverarbeitung: Führen Sie periodische oder bedarfsgesteuerte Batch-Jobs wie ETL-Prozesse (Extrahieren, Transformieren, Laden), die Erstellung von Berichten und die Datenbereinigung aus.

Datei- und Datenspeicheraufgaben: Nutzung von Cloud-Speicherdiensten zur Verwaltung von Datei-Uploads, -Downloads und Datenbearbeitung.

Benutzerauthentifizierung und -autorisierung: Identity- und Access-Management-Dienste (IAM) für die Authentifizierung und Autorisierung von Benutzern eignen sich gut für serverlose Funktionen.

Benachrichtigungsdienste: Versenden Sie Benachrichtigungen und Warnmeldungen wie E-Mails, SMS oder Push-Benachrichtigungen als Reaktion auf bestimmte Ereignisse oder Auslöser.

Chatbots und virtuelle Assistenten: Entwickeln Sie dialogorientierte Schnittstellen, bei denen Funktionen Anfragen in natürlicher Sprache verarbeiten und Antworten generieren.

Daten- und Bildverarbeitung Führen Sie Aufgaben wie Bildgrößenänderung, Formatkonvertierung und Datentranstransformation aus, die nur minimale Benutzerinteraktion erfordern.

Geplante Aufgaben: Automatisieren Sie wiederkehrende Aufgaben wie Datensicherungen, die Erstellung von Berichten und die Datenbankpflege.

Mikrodienste: Erstellen und verwalten Sie einzelne Microservices innerhalb einer größeren Anwendung, was eine einfache Skalierung und unabhängige Bereitstellung ermöglicht.

Sicherheits- und Compliance-Dienstleistungen: Implementieren Sie sicherheitsrelevante Funktionen wie Einbruchserkennung, Überwachung und Compliance-Prüfung.

Serverless vs. Container

Auf den ersten Blick wird die serverlose Architektur manchmal mit der Containerarchitektur oder der Microservices-Architektur verwechselt, da sie mit beiden gewisse Gemeinsamkeiten aufweist. Tatsächlich unterscheidet sich die serverlose Architektur jedoch deutlich von beiden, und wir werden erläutern, worin genau der Unterschied besteht.

Was Behälter Serverless und Container haben gemeinsam, dass beide es Entwicklern ermöglichen, Anwendungscode bereitzustellen, indem sie die Host-Umgebung abstrahieren. Einer der wesentlichen Unterschiede besteht jedoch darin, dass Serverless die Serververwaltung vollständig abstrahiert, während Container es Entwicklern ermöglichen, ihre eigenen Serverumgebungen zu verwalten und dabei mehr Kontrolle über die Infrastruktur zu haben.

Als eine leichtgewichtige Form der Virtualisierung bündeln Container Anwendungen und deren Abhängigkeiten in isolierten, konsistenten Umgebungen, die als unabhängige Instanzen auf einem gemeinsam genutzten Betriebssystem laufen. Container bieten eine Möglichkeit, sicherzustellen, dass Anwendungen in verschiedenen Umgebungen – von der Entwicklung bis zur Produktion – konsistent funktionieren, und sie bieten eine standardisierte Methode zum Bündeln und Verteilen von Software. Container sind in der Regel langlebig und können mehrere Prozesse innerhalb eines einzelnen Containers umfassen.

Kurz gesagt: Serverless Computing abstrahiert die Serververwaltung und eignet sich ideal für ereignisgesteuerte, kurzzeitige Aufgaben, während Container mehr Kontrolle über die Serverumgebung bieten und besser für lang laufende Prozesse und konsistente Workloads geeignet sind. Die Wahl zwischen beiden hängt von den spezifischen Anforderungen Ihrer Anwendung und Ihrem Grad an Kontrolle über die zugrunde liegende Infrastruktur ab. In manchen Fällen wird eine Kombination beider Technologien innerhalb einer einzigen Anwendung für verschiedene Komponenten eingesetzt.

Serverless vs. Microservices

Mikrodienste sind ein Softwarearchitekturmuster, bei dem eine Anwendung als eine Sammlung kleiner, unabhängig voneinander bereitstellbarer Dienste strukturiert wird, die über APIs kommunizieren und zusammenarbeiten, um komplexe, modulare Funktionen bereitzustellen. Die Verwechslung zwischen Microservices und serverloser Architektur entsteht häufig aufgrund ihrer gemeinsamen Ausrichtung auf Modularität und Skalierbarkeit. Die Grenze wird zusätzlich dadurch verwischt, dass sie häufig gemeinsam eingesetzt werden, wobei serverlose Funktionen als Microservices innerhalb einer größeren, auf Microservices basierenden Anwendung fungieren.

Trotz ihrer Ähnlichkeiten weisen Serverless und Microservices in den folgenden Bereichen einzigartige Merkmale auf, die sie voneinander unterscheiden:

Infrastrukturmanagement

  • Mikroservices – Entwickler behalten die Kontrolle über Server- und Container-Orchestrierung.
  • Serverlos – Die Serververwaltung wird vollständig abstrahiert, und Entwickler haben keinen Kontakt zur zugrundeliegenden Infrastruktur.

Ausführungsmodell

  • Mikroservices – auf dedizierten Serverinstanzen kontinuierlich laufen.
  • Serverlos – Funktionen werden als Reaktion auf Ereignisse oder Auslöser ausgeführt. Diese Unterscheidung kann zu unterschiedlichen Reaktionszeiten führen, da es bei serverlosen Anwendungen zu Kaltstarts kommen kann.

Kostenmodell

  • Mikroservices – erfordern die Bereitstellung und Wartung von Serverressourcen. Dies kann selbst in Zeiten geringer Auslastung zu laufenden Kosten führen.
  • Serverlos – basiert auf einem Pay-as-you-go-Modell, das sich nach der tatsächlichen Ausführung der Funktionen richtet. Dies kann bei sporadischen Arbeitslasten kostengünstiger sein.

Modularität

  • Mikroservices – Eine Anwendung ist in kleine, unabhängige Dienste unterteilt.
  • Serverlos – Entwickler schreiben Code als einzelne Funktionalitätseinheiten.

Skalierbarkeit

  • Mikroservices – Die unabhängige Skalierung jedes Dienstes ermöglichen.
  • Serverlos – skaliert einzelne Funktionen automatisch.

Vorteile der Serverless-Architektur

Serverless-Architektur bietet eine Vielzahl von Vorteilen, die sie zu einer attraktiven Wahl für viele Anwendungen und Anwendungsfälle machen. Die überzeugendsten Vorteile sind:

Automatische Skalierung: Serverless-Architekturplattformen skalieren Ressourcen basierend auf der eingehenden Arbeitslast automatisch nach oben oder unten. Dies stellt sicher, dass Ihre Anwendung unterschiedliche Verkehrsaufkommen bewältigen kann, und bietet hohe Verfügbarkeit und Leistung ohne manuelles Eingreifen.

Kosteneffizienz: Mit Serverless bezahlen Sie nur für die tatsächlichen Rechenressourcen, die während der Funktionsausführung genutzt werden. Es fallen keine Kosten für Leerlaufzeiten an, was es besonders für Workloads mit unvorhersehbarem oder sporadischem Datenverkehr kosteneffizient macht.

Reduzierter administrativer Aufwand: Serverless abstrahiert die Verwaltung von Servern und ermöglicht es Entwicklern, sich auf den Code statt auf die Wartung der Infrastruktur zu konzentrieren. Dies reduziert den Bedarf an DevOps-Aufwand und vereinfacht die Bereitstellung und Skalierung.

Schnellere Entwicklung: Serverless beschleunigt den Entwicklungsprozess, da die Verwaltung von Servern und Infrastruktur entfällt. Entwickler können Code schnell iterieren und bereitstellen, was zu einer schnelleren Markteinführungszeit für Anwendungen führt.

Resilienz Serverless-Funktionen sind typischerweise zustandslos, was ein Design fördert, das sich für die Datenpersistenz auf externe Speicherdienste oder Datenbanken stützt. Dies kann zu widerstandsfähigeren und fehlererträgteren Anwendungen führen.

Integrierte Protokollierung und Überwachung: Serverless-Plattformen bieten oft integrierte Tools zur Überwachung und Protokollierung, die es Entwicklern ermöglichen, die Leistung zu verfolgen, Fehler zu beheben und Einblicke in das Anwendungsverhalten zu gewinnen.

Geringere Anbieterabhängigkeit: Viele Funktionen lassen sich so konzipieren, dass sie weitgehend unabhängig vom Anbieter sind, was die Migration oder die Integration von Diensten verschiedener Cloud-Anbieter erleichtert. Dies ist jedoch nicht immer der Fall, wie Sie im nächsten Abschnitt über die Einschränkungen von Serverless sehen werden.

Hohe Verfügbarkeit: Serverless-Plattformen sind so konzipiert, dass sie hochverfügbar sind, mit integrierten Redundanz- und Failover-Mechanismen. Dies trägt dazu bei, dass Ihre Anwendung selbst bei Ausfällen zugänglich und reaktionsfähig bleibt.

Energie- und Ressourceneffizienz: Die automatische Skalierung und Ressourcenverwaltung von Serverless-Plattformen kann zu einer verbesserten Energieeffizienz und Ressourcennutzung führen und so die Umweltbelastung verringern.

Einschränkungen der Serverless-Architektur

Obwohl die Serverless-Architektur viele Vorteile bietet, hat sie auch ihre Grenzen. Bestimmte Eigenschaften von Serverless können sich als Vor- oder Nachteile erweisen. Berücksichtigen Sie bei der Evaluierung von Serverless für eine bestimmte Anwendung Ihre Anforderungen oder Einschränkungen in Bezug auf Folgendes:

Kaltstarts: Serverless-Funktionen können beim ersten Aufruf eine Verzögerung aufweisen, da der Cloud-Anbieter eine neue Ausführungsumgebung initialisieren muss. Diese Latenzzeit kann für Anwendungen problematisch sein, die konstant schnelle Antwortzeiten erfordern.

Ressourcenbeschränkungen: Serverless-Plattformen erlegen Ressourcenbeschränkungen auf, wie etwa Speicher- und Ausführungszeitlimits. Diese Einschränkungen können für rechenintensive Aufgaben oder Anwendungen, die langlebige Prozesse erfordern, einschränkend sein.

Staatenlosigkeit Serverless-Funktionen sind typischerweise zustandslos, was bedeutet, dass sie keine Daten zwischen Aufrufen speichern. Dies kann zwar zur Verbesserung der Ausfallsicherheit beitragen (wie oben erläutert), aber die Nutzung externer Datenbanken oder Speicherdienste zur Datenpersistenz kann die Komplexität einiger Anwendungen erhöhen.

Bindung an den Anbieter: Obwohl viele Funktionen so konzipiert werden können, dass sie weitgehend unabhängig vom Anbieter sind, verfügt Ihre Anwendung möglicherweise über einige plattformspezifische Konfigurationen und Integrationen, die den Wechsel zu einem anderen Cloud-Anbieter erschweren.

Komplexes Debugging: Das Debugging und die Fehlerbehebung bei Serverless-Anwendungen können in einer Serverless-Architektur anspruchsvoller sein, da die verteilte Natur von Funktionen und das Fehlen eines direkten Serverzugriffs es schwierig machen können, Probleme zu identifizieren und zu beheben.

Eingeschränkte lokale Tests: Die lokale Entwicklung und das Testen von Serverless-Funktionen können anspruchsvoll sein, da lokale Tests die Ausführungsumgebung in der Cloud möglicherweise nicht vollständig replizieren. Entwickler müssen Funktionen oft auf der Serverless-Plattform bereitstellen, um gründliche Tests durchzuführen.

Serverless-Computing-Tools

Es gibt zahlreiche Serverless-Computing-Plattformen und -Tools, die es Entwicklern ermöglichen, serverlose Anwendungen mit ihren bevorzugten Programmiersprachen und Cloud-Diensteanbietern zu erstellen, bereitzustellen und zu verwalten. Hier sind einige der beliebtesten:

Plattformen

Amazon AWS Lambda unterstützt verschiedene Programmiersprachen und lässt sich nahtlos in andere AWS-Dienste integrieren. AWS bietet zudem ein API-Gateway zum Erstellen von RESTful-APIs und zum Ausführen von Lambda-Funktionen.

Microsoft Azure Functions ist ein serverloses Angebot innerhalb des Azure-Cloud-Ökosystems. Es unterstützt mehrere Sprachen und bietet eine Integration mit Azure-Diensten, was es zu einer starken Wahl für Windows-basierte Anwendungen macht.

Google Cloud Functions unterstützt mehrere Programmiersprachen und lässt sich gut in andere Google Cloud-Dienste integrieren, wodurch es sich für die Entwicklung von Anwendungen innerhalb des Google Cloud-Ökosystems eignet.

IBM Cloud Functions basiert auf dem Apache OpenWhisk-Framework und ermöglicht die Integration mit IBM Cloud-Diensten in verschiedenen Sprachen.

Alibaba Cloud Function Compute ermöglicht es Entwicklern, Anwendungen im Alibaba Cloud-Ökosystem zu erstellen und sich mit mehreren Programmiersprachen in andere Alibaba Cloud-Dienste zu integrieren.

Werkzeuge

Netlify ist eine Plattform, die vor allem für das Hosting statischer Websites bekannt ist, aber auch Serverless-Funktionen zum Erstellen von Backend-Diensten, APIs und Workflows bietet.

OpenFaaS ist ein Open-Source-Serverless-Framework für containerbasierte Funktionen. Es ermöglicht Ihnen, Serverless-Funktionen mit Docker-Containern zu erstellen und auszuführen.

Kernspaltung ist ein weiteres Open-Source-Kubernetes-natives Serverless-Framework, das mehrere Sprachen unterstützt und für die einfache Bereitstellung auf Kubernetes-Clustern konzipiert ist.

Schlussfolgerung

Serverless-Architekturen sind für Web- und mobile Anwendungen, IoT, Echtzeit-Datenverarbeitung und andere gängige Anwendungsfälle beliebt, da sie Entwicklern ermöglichen, sich auf das Schreiben von Code zu konzentrieren, statt Server zu verwalten. Die Verwaltungsaufgabe wird an Cloud-Anbieter wie AWS Lambda, Azure Functions oder Google Cloud Functions ausgelagert, damit diese die zugrundeliegende Infrastruktur verwalten und Ressourcen automatisch skalieren können, um Änderungen der Arbeitslast auszugleichen. Serverless ist jedoch nicht für alle Anwendungsfälle ideal, und bestimmte Workloads oder lang laufende Aufgaben sind möglicherweise besser für traditionelle, serverbasierte Ansätze geeignet.

Um mehr über Serverless-Architektur und verwandte Technologien zu erfahren, schauen Sie sich diese Ressourcen an:

Serverless-Architektur mit Cloud Computing
Couchbase 2023 Prognosen – Edge Computing, Serverless und mehr
Capella App-Dienste (BaaS)
Besuchen Sie unser Konzepte Hub mehr über andere Themen im Zusammenhang mit Datenbanken zu erfahren.

Mit dem Bau beginnen

Besuchen Sie unser Entwicklerportal, um NoSQL zu erkunden, Ressourcen zu durchsuchen und mit Tutorials zu beginnen.

Capella kostenlos nutzen

Mit nur wenigen Klicks können Sie Couchbase in die Praxis umsetzen. Capella DBaaS ist der einfachste und schnellste Weg, um loszulegen.

Kontakt aufnehmen

Möchten Sie mehr über das Angebot von Couchbase erfahren? Wir helfen Ihnen gerne.