Was ist eine serverlose Architektur?
Die serverlose Architektur ist ein Cloud-Computing-Modell, bei dem Entwickler Anwendungen erstellen und ausführen, ohne herkömmliche Server zu verwalten. Die Server sind immer noch vorhanden, aber sie befinden sich in der Cloud, wo Cloud-Anbieter automatisch die Infrastruktur, Skalierung und Ressourcenzuweisung übernehmen.
Bei serverlosen Anwendungen schreiben Entwickler ihren Code in der Regel 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 betrieblichen Aufwand und ermöglicht eine schnelle Skalierbarkeit, was ihn ideal für Microservices und ereignisgesteuerte Anwendungen macht.
Diese Seite umfasst:
- Wie die serverlose Architektur funktioniert
- Schlüsselkonzepte der serverlosen Architektur
- Wann wird eine serverlose Architektur eingesetzt?
- Vorteile der serverlosen Architektur
- Beschränkungen der serverlosen Architektur
- Werkzeuge für serverloses Computing
- Schlussfolgerung
Wie die serverlose Architektur funktioniert
Bei der serverlosen Architektur wird die Serververwaltung von den Entwicklern abstrahiert und die zugrunde liegende Infrastruktur von Cloud-Anbietern übernommen. So funktioniert es normalerweise:
1. Erstellung von Funktionen: Entwickler schreiben Code als einzelne Funktionen, wobei jede Funktion eine bestimmte Aufgabe oder einen bestimmten Dienst ausführen soll. Die serverlose Architektur wird manchmal auch als Function-as-a-Service oder FaaS.
2. Funktionseinsatz: Die Funktionen werden verpackt und auf einer serverlosen Plattform bereitgestellt, die von einem Cloud-Service-Anbieter bereitgestellt wird. Die gängigsten serverlosen Plattformen sind AWS Lambda, Azure Functions und Google Cloud Functions.
3. Ereignisauslöser: Funktionen sind so konfiguriert, dass sie in Reaktion auf bestimmte Ereignisse oder Auslöser ausgeführt werden. Ereignisse können HTTP-Anfragen (z. B. API-Gateway), Datenänderungen (z. B. Datenbankaktualisierungen), Zeitgeber, 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 serverlose Plattform automatisch die zugrunde liegenden Ressourcen, um die Arbeitslast zu bewältigen. Wenn Ihre Funktion eine plötzliche Anfragespitze erlebt, stellt der Cloud-Anbieter mehr Ressourcen bereit.
5. Ausführung: Wenn ein Ereignis eine Funktion auslöst, initialisiert die serverlose 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 erfüllt hat, kann der Container für einen kurzen Zeitraum warm bleiben, sodass nachfolgende Anfragen schneller ausgeführt werden können.
6. Abrechnung: Die Abrechnung erfolgt auf der Grundlage der tatsächlichen Ausführungszeit und der von den Funktionen genutzten Ressourcen. Sie werden pro Ausführung und für die während der Ausführung zugewiesenen Rechenressourcen, wie CPU und Speicher, berechnet.
7. Staatenlosigkeit: Serverlose Funktionen sind in der Regel zustandslos, d. h. sie speichern keine Informationen zwischen Aufrufen. Alle erforderlichen Zustände oder Daten müssen extern gespeichert werden, häufig in einer Datenbank oder einem Speicherdienst.
8. Protokolle und Überwachung: Serverlose Plattformen bieten in der Regel integrierte Protokollierungs- und Überwachungstools, mit denen Entwickler die Leistung verfolgen und Probleme in ihren Funktionen beheben können.
Schlüsselkonzepte der serverlosen Architektur
Da es sich bei der serverlosen Entwicklung um eine Alternative zur herkömmlichen Entwicklung handelt, sollten Sie sich mit den folgenden Begriffen und Konzepten vertraut machen, um zu verstehen, wie serverlose Anwendungen entworfen, bereitgestellt und verwaltet werden:
Anrufung: Ein Ereignis, das die Ausführung einer serverlosen Funktion auslöst. Beispiele sind eine HTTP-Anfrage, eine Datenbankaktualisierung oder ein geplanter Timer.
Dauer: Die Zeit, die eine serverlose Funktion zur Ausführung benötigt, was ein Faktor für die Berechnung der Ausführungskosten ist.
Kaltstart: Die erste Ausführung einer serverlosen Funktion, bei der der Cloud-Anbieter Ressourcen bereitstellt und die Laufzeitumgebung einrichtet. Kaltstarts verursachen im Vergleich zu Warmstarts zusätzliche Latenzzeiten.
Warmstart: Nachfolgende Ausführungen einer serverlosen Funktion, wenn die Laufzeitumgebung bereits vorbereitet ist, was im Vergleich zu Kaltstarts zu schnelleren Reaktionszeiten führt.
Gleichzeitigkeitsgrenze: Die maximale Anzahl der gleichzeitigen Funktionsausführungen, die von der serverlosen Plattform zugelassen werden. Diese Grenze kann sich auf die Fähigkeit auswirken, gleichzeitige Anfragen oder Ereignisse zu verarbeiten.
Zeitüberschreitung: Die maximal zulässige Dauer für die Ausführung einer serverlosen Funktion. Wenn eine Funktion dieses Limit überschreitet, wird sie zwangsweise beendet und ihr Ergebnis wird möglicherweise nicht zurückgegeben.
Quelle der Veranstaltung: Der Ursprung eines Ereignisses, das eine serverlose Funktion auslöst. Beispiele für Ereignisquellen sind Amazon S3-Buckets, API-Gateways, Nachrichtenwarteschlangen und Datenbankaktualisierungen.
Staatenlosigkeit: Serverlose Funktionen sind in der Regel zustandslos, d. h. sie speichern keine Daten zwischen Aufrufen. Jeder notwendige Zustand sollte extern in Datenbanken oder Speicherdiensten gespeichert werden.
Zuweisung von Ressourcen: Die Angabe von Rechenressourcen wie CPU oder Speicher für eine serverlose Funktion. Diese Ressourcen werden häufig von den Entwicklern bei der Definition der Funktion ausgewählt.
Automatische Skalierung: Die automatische Anpassung der serverlosen Ressourcen durch den Cloud-Anbieter, um unterschiedliche Arbeitslasten zu bewältigen und eine optimale Leistung zu gewährleisten.
Serverlose Datenbank: Serverlose Datenbanken sind elastisch skalierende Datenbanken, die die Infrastruktur, auf der sie arbeiten, nicht offenlegen Couchbase Capella™ DBaaS ist ein Beispiel für eine vollständig verwaltete serverlose Datenbank.
Wann wird eine serverlose Architektur eingesetzt?
Obwohl die serverlose Architektur vielseitig ist, ist sie nicht für jeden Anwendungsfall die beste Wahl. Anwendungen mit lang laufenden Aufgaben, hohen Berechnungsanforderungen oder gleichbleibenden Arbeitslasten profitieren oft mehr von traditionellen serverbasierten Architekturen. Berücksichtigen Sie unbedingt die spezifischen Anforderungen und die einzigartigen Stärken von Serverless, wenn Sie entscheiden, ob es die richtige Wahl für Ihre Anwendung ist.
Anwendungsfälle für serverlose Architektur
Einige der häufigsten und am besten geeigneten Anwendungsfälle für eine serverlose Architektur sind:
Web und mobile Anwendungen: Verwalten Sie Web- und Mobile-App-Backends, stellen Sie Inhalte bereit, verarbeiten Sie Benutzeranfragen und verwalten Sie die Benutzerauthentifizierung.
APIs: Skalieren Sie Ihre RESTful- und GraphQL-APIs automatisch und integrieren Sie sie problemlos in andere Dienste.
IoT: Effiziente Verwaltung der Datenverarbeitung und -analyse von IoT-Geräten, die Ereignisse mit Sensordaten auslösen.
Datenverarbeitung in Echtzeit: Verarbeiten Sie Echtzeit-Datenströme wie Clickstream-Analyse, Protokollverarbeitung und ereignisgesteuerte Analysen.
Stapelverarbeitung: Regelmäßige oder bedarfsgesteuerte Batch-Aufträge wie Daten-ETL (Extrahieren, Transformieren, Laden), Berichterstellung und Datenbereinigung ausführen.
Aufgaben der Datei- und Datenspeicherung: Interaktion mit Cloud-Speicherdiensten zur Verwaltung von Datei-Uploads, Downloads und Datenmanipulation.
Benutzerauthentifizierung und -autorisierung: Identitäts- und Zugriffsverwaltungsdienste (IAM) zur Benutzerauthentifizierung und -autorisierung eignen sich gut für serverlose Funktionen.
Benachrichtigungsdienste: Senden Sie Benachrichtigungen und Alarme wie E-Mail, SMS oder Push-Benachrichtigungen als Reaktion auf bestimmte Ereignisse oder Auslöser.
Chatbots und virtuelle Assistenten: Erstellen Sie konversationelle Schnittstellen, bei denen Funktionen natürlichsprachliche Anfragen verarbeiten und Antworten erzeugen.
Daten- und Bildverarbeitung: Führen Sie Aufgaben wie die Größenänderung von Bildern, die Formatkonvertierung und die Datentransformation durch, die nur minimale Benutzerinteraktion erfordern.
Geplante Aufgaben: Automatisieren Sie regelmäßig anfallende Aufgaben wie Datensicherungen, Berichterstellung und Datenbankpflege.
Microservices: 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: Implementierung sicherheitsrelevanter Funktionen wie Intrusion Detection, Überwachung und Compliance Auditing.
Serverlos vs. Container
Auf den ersten Blick wird die serverlose Architektur manchmal mit der Container-Architektur oder der Microservices-Architektur verwechselt, weil sie mit beiden gewisse Ähnlichkeiten aufweist. Tatsächlich unterscheidet sich Serverless aber deutlich von beiden und wir erklären, was sie voneinander unterscheidet.
Was Container und Serverless haben gemeinsam, dass beide es Entwicklern ermöglichen, Anwendungscode zu implementieren, indem sie die Hostumgebung abstrahieren. Einer der Hauptunterschiede besteht jedoch darin, dass Serverless die Serververwaltung vollständig abstrahiert, während Entwickler mit Containern ihre eigene Serverumgebung mit mehr Kontrolle über die Infrastruktur verwalten können.
Als eine leichtgewichtige Form der Virtualisierung verpacken Container Anwendungen und ihre Abhängigkeiten in isolierten, konsistenten Umgebungen, die als unabhängige Instanzen auf einem gemeinsamen Betriebssystem laufen. Mit Containern kann sichergestellt werden, dass Anwendungen in verschiedenen Umgebungen, von der Entwicklung bis zur Produktion, konsistent funktionieren, und sie bieten eine standardisierte Methode zur Paketierung und Verteilung von Software. Container haben in der Regel eine lange Laufzeit und können mehrere Prozesse innerhalb eines einzigen Containers umfassen.
Kurz gesagt: Serverloses Computing abstrahiert die Serververwaltung und ist ideal für ereignisgesteuerte Aufgaben von kurzer Dauer, während Container mehr Kontrolle über die Serverumgebung bieten und besser für lang laufende Prozesse und gleichbleibende Arbeitslasten geeignet sind. Die Wahl zwischen beiden hängt von den spezifischen Anforderungen Ihrer Anwendung und dem Grad Ihrer Kontrolle über die zugrunde liegende Infrastruktur ab. In einigen Fällen wird eine Kombination beider Technologien innerhalb einer einzigen Anwendung für verschiedene Komponenten verwendet.
Serverlose vs. Microservices
Microservices sind ein Softwarearchitekturmuster, das eine Anwendung als eine Sammlung kleiner, unabhängig einsetzbarer Dienste strukturiert, die über APIs kommunizieren und zusammenarbeiten, um komplexe, modulare Funktionen bereitzustellen. Die Verwirrung zwischen Microservices und serverlosen Architekturen entsteht oft durch ihre gemeinsame Betonung von Modularität und Skalierbarkeit. Die Grenze wird noch dadurch verwischt, dass sie oft zusammen verwendet werden, wobei serverlose Funktionen als Microservices innerhalb einer größeren Microservices-basierten Anwendung fungieren.
Trotz ihrer Ähnlichkeiten weisen serverlose und Microservices in den folgenden Bereichen einzigartige Merkmale auf, die sie voneinander unterscheiden:
Verwaltung der Infrastruktur
- Microservices - Entwickler behalten die Kontrolle über die Server- und Container-Orchestrierung.
- Serverlos - Die Serververwaltung ist vollständig abstrahiert, und die Entwickler müssen sich nicht mit der zugrunde liegenden Infrastruktur befassen.
Ausführungsmodell
- Microservices - laufen kontinuierlich auf dedizierten Serverinstanzen.
- Serverlos - Funktionen werden in 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
- Microservices - erfordern die Bereitstellung und Wartung von Server-Ressourcen. Dies kann auch in Zeiten geringer Nutzung zu laufenden Kosten führen.
- Serverlos - folgt einem Pay-as-you-go-Modell auf der Grundlage der tatsächlichen Funktionsausführung. Dies kann bei sporadischen Arbeitsbelastungen kosteneffizienter sein.
Modularität
- Microservices - eine Anwendung ist in kleine unabhängige Dienste unterteilt.
- Serverlos - Entwickler schreiben Code als einzelne Funktionseinheiten.
Skalierbarkeit
- Microservices - ermöglichen eine unabhängige Skalierung der einzelnen Dienste.
- Serverlos - skaliert automatisch einzelne Funktionen.
Vorteile der serverlosen Architektur
Die serverlose Architektur bietet eine Vielzahl von Vorteilen, die sie für viele Anwendungen und Anwendungsfälle attraktiv machen. Die überzeugendsten Vorteile sind:
Automatische Skalierung: Serverlose Architekturplattformen skalieren Ressourcen automatisch nach oben oder unten, je nach der eingehenden Arbeitslast. Dadurch wird sichergestellt, dass Ihre Anwendung mit unterschiedlichem Datenverkehr zurechtkommt und hohe Verfügbarkeit und Leistung ohne manuelle Eingriffe bietet.
Kosteneffizienz: Bei Serverless zahlen Sie nur für die tatsächlich genutzten Rechenressourcen während der Funktionsausführung. Es fallen keine Kosten für Leerlaufzeiten an, was es kosteneffizient macht, insbesondere für Arbeitslasten mit unvorhersehbarem oder sporadischem Datenverkehr.
Geringerer operativer Aufwand: Serverless abstrahiert die Aufgaben der Serververwaltung, so dass sich die Entwickler auf den Code und nicht auf die Wartung der Infrastruktur konzentrieren können. Dies reduziert den Bedarf an DevOps-Aufwand und vereinfacht die Bereitstellung und Skalierung.
Schnellere Entwicklung: Serverless beschleunigt den Entwicklungsprozess, da Server und Infrastruktur nicht mehr verwaltet werden müssen. Entwickler können Code schnell iterieren und bereitstellen, was zu einer kürzeren Markteinführungszeit für Anwendungen führt.
Resilienz: Serverlose Funktionen sind in der Regel zustandslos und fördern ein Design, das für die Datenpersistenz auf externe Speicherdienste oder Datenbanken zurückgreift. Dies kann zu widerstandsfähigeren und fehlertoleranteren Anwendungen führen.
Integrierte Protokollierung und Überwachung: Serverlose Plattformen bieten häufig integrierte Tools für die Überwachung und Protokollierung, mit denen Entwickler die Leistung verfolgen, Probleme beheben und Einblicke in das Anwendungsverhalten gewinnen können.
Geringere Bindung an den Anbieter: Viele Funktionen können so konzipiert werden, dass sie relativ anbieterunabhängig sind, was ihre Migration oder die Integration von Diensten verschiedener Cloud-Anbieter erleichtert. Dies ist nicht immer der Fall, wie Sie im nächsten Abschnitt über die Grenzen von Serverless sehen werden.
Hohe Verfügbarkeit: Serverlose Plattformen sind so konzipiert, dass sie hochverfügbar sind und über eingebaute Redundanz- und Ausfallsicherungsmechanismen verfügen. Dadurch wird sichergestellt, dass Ihre Anwendung auch bei Ausfällen zugänglich und reaktionsfähig bleibt.
Energie- und Ressourceneffizienz: Die automatische Skalierung und Ressourcenverwaltung von serverlosen Plattformen kann zu einer verbesserten Energieeffizienz und Ressourcennutzung führen und die Umweltbelastung verringern.
Beschränkungen der serverlosen Architektur
Die serverlose Architektur bietet zwar viele Vorteile, hat aber auch ihre Grenzen. Bestimmte Merkmale von Serverless können sich als Vorteile oder Herausforderungen erweisen. Wenn Sie Serverless für eine bestimmte Anwendung evaluieren, sollten Sie Ihre Anforderungen oder Einschränkungen in Bezug auf die folgenden Punkte berücksichtigen:
Kaltstart: Bei serverlosen Funktionen kann es zu einer Verzögerung kommen, wenn die Funktion zum ersten Mal aufgerufen wird, da der Cloud-Anbieter eine neue Ausführungsumgebung initialisieren muss. Diese Latenz kann für Anwendungen, die gleichbleibend schnelle Reaktionszeiten erfordern, problematisch sein.
Ressourcenbeschränkungen: Serverlose Plattformen erlegen Ressourcenbeschränkungen auf, z. B. Speicher- und Ausführungszeitbeschränkungen. Diese Beschränkungen können für rechenintensive Aufgaben oder Anwendungen, die lang laufende Prozesse erfordern, einschränkend sein.
Staatenlosigkeit: Serverlose Funktionen sind in der Regel zustandslos, d. h. sie speichern keine Daten zwischen Aufrufen. Dies kann zwar zur Verbesserung der Ausfallsicherheit beitragen (wie oben erläutert), aber die Verwendung externer Datenbanken oder Speicherdienste für die Datenpersistenz kann die Komplexität einiger Anwendungen erhöhen.
Bindung an den Anbieter: Während viele Funktionen relativ anbieterunabhängig gestaltet werden können, verfügt Ihre Anwendung möglicherweise über einige plattformspezifische Konfigurationen und Integrationen, die den Wechsel zu einem anderen Cloud-Anbieter erschweren.
Komplexe Fehlersuche: Das Debuggen und die Fehlerbehebung von serverlosen Anwendungen kann in einer serverlosen Architektur schwieriger sein, da die verteilte Natur der Funktionen und der fehlende direkte Serverzugriff die Identifizierung und Behebung von Problemen erschweren können.
Begrenzte lokale Tests: Das lokale Entwickeln und Testen von serverlosen Funktionen kann eine Herausforderung sein, da lokale Tests die Ausführungsumgebung in der Cloud nicht vollständig replizieren können. Entwickler müssen Funktionen oft auf der serverlosen Plattform bereitstellen, um sie gründlich zu testen.
Werkzeuge für serverloses Computing
Es gibt zahlreiche Serverless-Computing-Plattformen und -Tools, die es Entwicklern ermöglichen, mit ihren bevorzugten Programmiersprachen und Cloud-Service-Anbietern serverlose Anwendungen zu erstellen, bereitzustellen und zu verwalten. Hier sind einige der beliebtesten:
Plattformen
AWS Lambda von Amazon unterstützt verschiedene Programmiersprachen und lässt sich nahtlos mit anderen AWS-Services integrieren. AWS bietet auch ein API-Gateway zum Erstellen von RESTful-APIs und zum Auslösen von Lambda-Funktionen.
Azure-Funktionen von Microsoft ist ein serverloses Angebot innerhalb des Azure-Cloud-Ökosystems. Es unterstützt mehrere Sprachen und bietet Integration mit Azure-Diensten, was es zu einer guten Wahl für Windows-basierte Anwendungen macht.
Googles Cloud-Funktionen unterstützt mehrere Programmiersprachen und lässt sich gut in andere Google Cloud-Dienste integrieren, so dass es sich für die Erstellung von Anwendungen innerhalb des Google Cloud-Ökosystems eignet.
IBM Cloud-Funktionen basiert auf dem Apache OpenWhisk-Framework und ermöglicht Ihnen die Integration mit IBM Cloud-Services in verschiedenen Sprachen.
Alibaba Cloud Function Compute ermöglicht Entwicklern die Erstellung von Anwendungen im Alibaba Cloud-Ökosystem und die Integration mit anderen Alibaba Cloud-Diensten in mehreren Sprachen.
Werkzeuge
Netlify ist eine Plattform, die vor allem für das Hosting statischer Websites bekannt ist. Sie bietet jedoch auch serverlose Funktionen für die Erstellung von Backend-Diensten, APIs und Workflows.
OpenFaaS ist ein quelloffenes Serverless-Framework für Container-basierte Funktionen. Es ermöglicht die Erstellung und Ausführung von serverlosen Funktionen mithilfe von Docker-Containern.
Spaltung 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
Die serverlose Architektur ist für Web- und Mobilanwendungen, IoT, Echtzeit-Datenverarbeitung und andere gängige Anwendungsfälle beliebt, da sich die Entwickler auf das Schreiben von Code und nicht auf die Verwaltung der Server konzentrieren können. Die Verantwortung für die Verwaltung wird an Cloud-Anbieter wie AWS Lambda, Azure Functions oder Google Cloud Functions übertragen, damit diese die zugrunde liegende Infrastruktur verwalten und die Ressourcen automatisch skalieren können, um Änderungen der Arbeitslast zu berücksichtigen. Serverless ist jedoch nicht für alle Anwendungsfälle ideal. Bestimmte Arbeitslasten oder langwierige Aufgaben eignen sich möglicherweise besser für herkömmliche serverbasierte Ansätze.
Wenn Sie mehr über serverlose Architektur und verwandte Technologien erfahren möchten, lesen Sie diese Ressourcen:
Serverlose Architektur mit Cloud Computing
Couchbase 2023 Prognosen - Edge Computing, Serverless und mehr
Capella App-Dienste (BaaS)
Besuchen Sie unser Konzepte Hub um mehr über andere Themen im Zusammenhang mit Datenbanken zu erfahren.