Bereitstellung einer serverlosen Datenbank mit diesen Tools

Was ist Serverless Deployment?

Es handelt sich um eine Cloud-Technologie, die Sie bei der Bereitstellung einer serverlosen Datenbank unterstützt. Die serverlose Bereitstellung ermöglicht es Ihnen, Anwendungen zu erstellen und zu betreiben, ohne Server verwalten zu müssen. Diese werden von einem Cloud-Anbieter bereitgestellt, gewartet und skaliert. Die Entwickler müssen lediglich den Code schreiben und bereitstellen.

Entgegen der Bezeichnung bedeutet „Serverless Computing“ nicht, dass keine Server erforderlich sind. Sie müssen die Server lediglich nicht selbst verwalten oder direkt für sie bezahlen.

Geht eine Anfrage für einen serverlosen Dienst ein, wählt der Cloud-Anbieter einen Pod aus seinem Pool aus, um die Anfrage zu bearbeiten. Sobald die Ausführung des serverlosen Codes abgeschlossen ist, werden die bereitgestellten Ressourcen in den Pool zurückgeführt. Die Kosten für die Ressourcen richten sich nach der CPU-Kapazität; auch die zugewiesene Arbeitsspeichermenge und die Laufzeit beeinflussen den Preis.

Serverless-Funktionen und -Dienste können miteinander kommunizieren. Zudem können sie in gemeinsam genutzte Dateisysteme und Datenbanken schreiben. Serverless-Funktionen bieten zudem einen enormen technologischen Vorteil hinsichtlich der Skalierbarkeit; herkömmliche, fest bereitgestellte Server sind bei plötzlichen Lastspitzen oft überfordert.

Gleichzeitig werden für jedes Ereignis, das sie erfordert, neue Instanzen der Serverless-Funktion gestartet. Sobald sie nicht mehr benötigt werden, kehren alle Instanzen in den Pool zurück.

Bereitstellung einer serverlosen Datenbank: Wie funktioniert das?

Function as a Service (FaaS) und Backend as a Service (BaaS) sind die beiden Hauptkomponenten des serverlosen Deployments.

FaaS: Hierbei handelt es sich um einen Cloud-Computing-Dienst. Er ermöglicht die Ausführung eigenständiger Code-Abschnitte, sogenannter Funktionen. Diese sind klein und haben eine kurze Lebensdauer. Sie führen jeweils nur eine einzige Aufgabe aus und bleiben inaktiv, bis sie ausgelöst werden. Der Code der Funktion ist in der Cloud gespeichert; die Instanz, die ihn ausführt, verschwindet jedoch, sobald die Funktion ihre Arbeit beendet hat.

BaaS: Auch dies ist ein Cloud-Computing-Dienst. Er ermöglicht es Softwareentwicklern, sich auf das Frontend zu konzentrieren, während das Backend von anderen auf entfernten Servern verwaltet wird. Beispiele für BaaS sind Dienste für Authentifizierung, Datenspeicherung und Geolokalisierung.

Die serverlose Architektur macht es überflüssig, sich Gedanken über die Art der Code-Ausführung zu machen. Der Anbieter übernimmt sämtliche Aufgaben, einschließlich der Verwaltung der Rechenressourcen, um einen reibungslosen Ablauf der Code-Ausführung zu gewährleisten.

Wichtige Faktoren für serverlose Datenbanken

Anforderungen an das Datenmodell

Als Erstes sollten Sie die Anforderungen Ihrer Anwendung an das Datenmodell prüfen sowie untersuchen, wie gut eine bestimmte Datenbank diese Anforderungen erfüllt. Amazon hat das Konzept der zweckspezifischen Datenbanken („purpose-built databases“) vorangetrieben. Hintergrund ist, dass Anwendungen früher meist auf relationale Datenbanken angewiesen waren, es heute jedoch eine Vielzahl unterschiedlicher Datenbanktypen gibt. Sie sollten diejenige wählen, die am besten zu Ihrer Anwendung passt.

Relational / SQL / normalisiert:

Herkömmliche RDBMS-Systeme bieten eine große Flexibilität bei Abfragen. Dies beeinträchtigt jedoch die Spitzenleistung. Beispiele hierfür sind MySQL und PostgreSQL.

NoSQL / denormalisiert:

Diese Datenbankalternativen konzentrieren sich auf Abfragen zur Lesezeit auf Basis denormalisierter Datensätze. Zu den zahlreichen Optionen gehören MongoDB, Cassandra und DynamoDB.

Hochspezifische Anwendungsfälle:

Spezialisierte Datenbanken für einen bestimmten Zweck. Beispiele hierfür sind Elasticsearch für die Volltextsuche, Neo4j für die Graphmodellierung und Redis für In-Memory-Operationen.

Für bestimmte Anwendungsszenarien ist die Entscheidung praktisch schon gefallen. Dies gilt insbesondere für Fälle wie Graph-Traversal-Abfragen oder die Volltextsuche; hier empfiehlt sich der Einsatz einer Datenbank, die speziell für derartige Zugriffsmuster konzipiert ist.

Anwendungen können ihre Daten nach einem der beiden erstgenannten Ansätze modellieren. Dabei ist eine Abwägung zwischen Flexibilität und Leistung erforderlich. Eine relationale Datenbank ist die richtige Wahl, wenn sich die Datenzugriffsmuster voraussichtlich ändern werden und Flexibilität gefragt ist. Entscheiden Sie sich für eine NoSQL-Datenbank, wenn Sie extreme Skalierbarkeit und hervorragende Leistung benötigen.

Verbindungsmodell

Das Verbindungsmodell der Datenbank ist der zweite zu berücksichtigende Aspekt.

Hierin unterscheiden sich serverlose Anwendungen von herkömmlichen Anwendungen. Die meisten Datenbanken waren ursprünglich für eine Welt vor dem Aufkommen von Serverless Computing konzipiert. In diesem Umfeld handelte es sich bei Datenbank-Clients um langlebige Serverprogramme. Zudem erfordern die meisten Datenbanken den Aufbau einer dauerhaften TCP-Verbindung zum Datenbankserver, die für eine Vielzahl von Anfragen genutzt werden kann.

Diese ständige Kommunikation bringt jedoch auch Nachteile mit sich. Der Auf- und Abbau der Verbindung kostet Zeit. Bei langlebigen Anwendungen fällt dies weniger ins Gewicht: Man nimmt den einmaligen Aufwand in Kauf und profitiert anschließend bei allen Abfragen von den Vorteilen einer dauerhaften Verbindung.

Ein weiteres Problem bei dauerhaften Verbindungen besteht darin, dass jede einzelne davon Ressourcen auf der Client-Seite beansprucht. Eine große Anzahl offener Verbindungen kann zudem die Leistung der Datenbank beeinträchtigen. Auch dies war in der früheren Welt akzeptabel, da die Anzahl der Anwendungsinstanzen, die eine Verbindung zur Datenbank herstellten, gering und statisch war.

In der Serverless-Welt wurde dieses Prinzip auf den Kopf gestellt. Wir leben in einer Zeit, in der sich Recheninstanzen innerhalb von Sekunden mühelos erstellen, nutzen und wieder löschen lassen. Zudem ist es ineffizient, für jede Anfrage eine dauerhafte Datenbankverbindung aufzubauen; man zahlt schließlich für eine Verbindung, die womöglich gar nicht mehr genutzt wird.

Darüber hinaus ermöglichen die Autoscaling-Funktionen von Serverless Computing, dass eine Anwendung innerhalb von Sekunden auf Tausende von Recheninstanzen skaliert. Für manche Datenbanken kann dies jedoch problematisch sein, da man schnell an die Grenzen der zulässigen Datenbankverbindungen stößt.

Es gibt zwar Möglichkeiten, diese Probleme zu umgehen, doch sind sie mit erheblichen Nachteilen verbunden. Wann immer verfügbar, ist daher ein Verbindungsmodell, das besser auf Serverless-Architekturen abgestimmt ist, die bessere Wahl.

Infrastructure-as-Code (IaC)

Die Möglichkeit, Ihre Datenbank mittels IaaC zu verwalten, ist ein weiterer Aspekt, den es zu berücksichtigen gilt.

IaaC erfreut sich bei Anwendungsentwicklern zunehmender Beliebtheit. Mit IaaC können Sie Ihre Infrastruktur definieren und konsistent anpassen.

Diese Verfahren sind bei serverlosen Anwendungen von Vorteil. Sie sind zudem hilfreich, wenn Anwendung und Infrastruktur eng miteinander verknüpft sind. Eine serverlose Anwendung umfasst Komponenten wie Warteschlangen, Streams und Ereignisauslöser, die die einzelnen Teile miteinander verbinden. Verzichtet man bei einer serverlosen Anwendung auf IaaC, entsteht ein unübersichtliches und kaum beherrschbares Chaos.

Vollständig verwaltet

Der vierte zu betrachtende Aspekt ist die Möglichkeit, eine serverlose Datenbank als vollständig verwalteten Dienst zu nutzen.

Beim Serverless-Ansatz geht es vor allem darum, aufwendige Aufgaben auszulagern, die für die Endnutzer keine Rolle spielen. Dies gilt insbesondere für die Verwaltung der zugrundeliegenden Infrastruktur.

Sie sollten auf vollständig verwaltete Datenbanken setzen. Dadurch entfällt der Wartungsaufwand für das Einspielen von Patches, Upgrades und die Skalierung der Datenbank. Dies ist vergleichbar damit, wie Serverless Computing Entwickler davon befreit hat, sich um die Serverwartung kümmern zu müssen, sodass sie sich auf ihre eigentliche Arbeit konzentrieren können.

Preismodell

Das Preismodell ist ein entscheidender Faktor bei der Auswahl einer Serverless-Datenbank. Bei vielen Serverless-Anwendungen kommen verbrauchsbasierte Abrechnungsmodelle (Pay-per-Use) zum Einsatz. Anstatt stündlich für einen Server zu zahlen, ermöglicht AWS Lambda die Abrechnung rein nach der tatsächlich genutzten Rechenleistung. Auch Dienste wie Amazon SQS, SNS und API Gateway nutzen dieses verbrauchsbasierte Preismodell.

Im Datenbankbereich gestaltet sich das Pay-per-Use-Prinzip etwas anders. Hier fallen Kosten sowohl für den Speicherplatz als auch für die Rechenleistung an, die für den Zugriff auf die gespeicherten Daten erforderlich ist. Die Kosten für den Speicherplatz richten sich jedoch nach dem tatsächlichen Verbrauch. Somit ist die Abrechnung nach verbrauchtem Speicherplatz (pro GB) kostengünstiger als die Bezahlung eines gesamten EBS-Volumes, das fest an Ihre Instanz gebunden ist.

Bereitstellung einer serverlosen Datenbank mit diesen Tools

CockroachDB Serverless

CockroachDB ist die fortschrittlichste cloudbasierte SQL-Datenbank. Sie basiert auf einer global verteilten Datenarchitektur. CockroachDB Serverless ermöglicht es Entwicklern, Anwendungen schnell und zu minimalen Kosten zu erstellen. In vielerlei Hinsicht verhält sie sich wie eine einzelne Postgres-Instanz. Sogenannte Request Units (RUs), die den Rechenaufwand einer Abfrage widerspiegeln, dienen der Messung aller genutzten Ressourcen.

Merkmale:

  • Legen Sie direkt nach der Erstellung Ihres Cloud-Kontos los. Zudem dauert das Erstellen eines kostenlosen Clusters nur etwa 20 bis 30 Sekunden.
  • Kompatibel mit dem PostgreSQL-Ökosystem
  • Bezahlen Sie nur für die tatsächliche Nutzung und vermeiden Sie Budgetüberschreitungen
  • Vermeiden Sie Ausfallzeiten – wie etwa lästige Wartungsfenster bei Störungen
PlanetScale DB Serverless

Die geschäftsfähige PlanetScaleDB ist eine von Vitess betriebene serverlose Datenbankplattform, die MySQL unterstützt. Es handelt sich um eine entwicklerorientierte Datenbank. Außerdem ist keine erweiterte Abfragevorbereitung, Clustergröße oder Skalierbarkeit erforderlich. Darüber hinaus sind nicht einmal weitere datenbankbezogene Informationen erforderlich.

Merkmale:

  • Es funktioniert mit allen gängigen Frameworks und Programmiersprachen.
  • Skalierbarkeit auf Unternehmensniveau
  • Dank der Unterstützung für Entwicklungs- und Produktions-Branches lassen sich Schemaänderungen mit PlanetScale im laufenden Betrieb bereitstellen.
  • Bereitstellung der Datenbanken in den Regionen US-Ost, US-West, EU-West und Asien-Pazifik.
  • Es ist SOC-2-Typ-II-konform. Dies gewährleistet die Verschlüsselung aller ruhenden Daten. Zudem bietet es flexible Authentifizierung und eine sichere Benutzerzugriffssteuerung.
  • Es gibt drei Möglichkeiten zur Authentifizierung bei PlanetScale: E-Mail-Adresse und Passwort, OAuth über GitHub sowie Single Sign-On.
Amazon Aurora Serverless

Amazon Aurora ist eine cloudbasierte relationale Datenbank, die auf PostgreSQL und MySQL basiert. AWS Aurora Serverless bietet Sicherheit, Leistung, sofortige Verfügbarkeit und Zuverlässigkeit. Zudem ermöglicht es Ihnen, einen Datenbank-Endpunkt innerhalb eines festgelegten Kapazitätsbereichs zu erstellen und Ihre Anwendungen unmittelbar damit zu verbinden.

Merkmale:

  • Skaliert eine beliebige Anzahl von Transaktionen sofort und in Sekundenbruchteilen
  • Berechnet nur die tatsächlich genutzte Kapazität
  • Eliminiert die Komplexität der Datenbankverwaltung
  • Unterstützt globale Datenbanken; Aurora Serverless ermöglicht zudem Read-Replikate im selben Cluster und bietet Multi-AZ-Bereitstellungen.
  • Automatisierte Vorgänge im selben Cluster ohne Unterbrechung von Anfragen
  • Zuverlässige Migration mit minimalen Ausfallzeiten
Amazon DynamoDB

Amazon DynamoDB ist eine serverlose NoSQL-Datenbank. Es handelt sich um einen Datenbankdienst von AWS. Sie kann selbst enorme Arbeitslasten bei minimalem Einrichtungs- und Wartungsaufwand bewältigen. Bei AWS DynamoDB handelt es sich um eine proprietäre Datenbank, während Amazons Dynamo eine Speicherlösung ist.

Merkmale:

  • Es ermöglicht Anwendungen mit hoher Leistung, unbegrenztem Speicherplatz und unbegrenzter regionsübergreifender Replikation.
  • Sichern Sie Daten durch Verschlüsselung ruhender Daten (Encryption at Rest).
  • Zudem können Sie die Ressourcen an die Arbeitslast Ihrer Anwendung anpassen.
  • Es bietet zudem Kapazitätsmodi für jede Tabelle: On-Demand und bereitgestellte Kapazität.
  • Reduzieren Sie den Aufwand für Entwicklung und Betrieb.
  • Steigern Sie die Anwendungsleistung.
  • Nutzen Sie weitere AWS-Dienste und exportieren Sie Daten von DynamoDB nach Amazon S3.
Google Firestore

Google Firestore ist eine vollständig steuerbare, skalierbare, sichere und serverlose Dokumentendatenbank. Für den heutigen Bereich des Serverless Computing bietet sie weit mehr als nur grundlegende Datenbankfunktionen. Zudem ermöglicht sie einen direkten Datenbankzugriff, was die Entwicklung von Web-, IoT- und Mobilanwendungen beschleunigt.

Merkmale:

  • Bietet Offline-Zugriff für Web- und Mobile-SDKs
  • Ermöglicht mehr Flexibilität bei der Datenstrukturierung durch ACID-konforme Transaktionen
  • Unterstützt zahlreiche serverseitige Entwicklungsbibliotheken und gängige Programmiersprachen
  • Ermöglicht Datenvalidierung sowie identitätsbasierte Sicherheitszugriffskontrollen
  • Echtzeit-Datensynchronisierung mit Offline-Datenzugriff
Fauna DB

FaunaDB ist eine weltweit verteilte Serverless-Datenbank. Sie ist entwicklerfreundlich, unterstützt Transaktionen und ist die erste ihrer Art. FaunaDB ist bei Bedarf verfügbar, und Entwickler können sich innerhalb von Sekunden anmelden. Zudem werden verschiedene Sprachen und Technologien unterstützt, darunter Python, Java, Scala und GraphQL.

Mit FaunaDB müssen sich Entwickler nicht um die Bereitstellung, das Sharding, die Skalierung, die Replikation oder die Wartung der Datenbank kümmern. FaunaDB ist zudem eine der besten Optionen für die Entwicklung neuer Microservices sowie für die Erweiterung oder Modernisierung bestehender Systeme, da sie den Code vereinfacht und den Bereitstellungsprozess beschleunigt.

Merkmale:

  • Ermöglicht die Entwicklung benutzerdefinierter Funktionen mit zugänglicher Geschäftslogik.
  • Es gibt keine Skalierungsbeschränkungen und keine Kaltstart-Problematik.
  • Webbasierte Sicherheit unter Verwendung von Drittanbieterdiensten wie Auth0.
  • Eine konsistente Datenverteilung an festgelegten Standorten ist als Option verfügbar.
  • Transaktionen sind zu 100 % ACID-konform; zudem handelt es sich um ein System, das keinen operativen Wartungsaufwand erfordert.

Abschluss

Heutige geschäftskritische Anwendungen erfordern eine umfassende Datenarchitektur. Zudem benötigen sie eine serverlose Datenbankarchitektur, die automatisierte Skalierbarkeit bei hoher Leistungsfähigkeit gewährleistet. Auch Aspekte wie Ausfallsicherheit (Zero Downtime), Unterstützung verschiedener Datenmodelle und Sicherheit sind entscheidend – Anforderungen, die serverlose Datenbanken erfüllen.

Darüber hinaus sind die Vorteile von Serverless Computing unbestreitbar. Unternehmen können sich proaktiv mit den Komplexitäten und Herausforderungen des Datenbankbetriebs auseinandersetzen. Die gewonnene Flexibilität ermöglicht Optimierungen und reduziert den Aufwand für die Datenbankadministration. Im Ergebnis sorgt eine serverlose Strategie dafür, dass Ihre Datenbanken bedarfsgerecht (on-demand) arbeiten. Sie ermöglicht zudem eine gezielte Ressourcennutzung und schont vorhandene Kapazitäten, was wiederum zur Optimierung des Budgets für das Projektmanagement beiträgt.

Unternehmen können nun durch den Einsatz des Serverless-Ansatzes auf eine serverlose Datenbankarchitektur umsteigen und diese implementieren. Dies ermöglicht es Entwicklern, sich auf die Erstellung hochwertiger Anwendungen zu konzentrieren, ohne sich um die Datenverwaltung und -wartung kümmern zu müssen.