Azure Cosmos DB wird ohne Server

Die Cosmos-Datenbank von Azure ist eine der Grundlagen der Plattform und unterstützt viele ihrer Schlüsseldienste. Es wurde von Grund auf als verteilte Datenbank entwickelt und implementiert eine Reihe verschiedener Konsistenzmodelle, mit denen Sie zwischen Leistung und Latenz für Ihre Anwendungen abwägen können. Darüber hinaus gibt es verschiedene Modelle für die Arbeit mit Daten, von bekannten NoSQL- und SQL-APIs über die Unterstützung der Mongo DB-API bis hin zur Gremlin-Grafikdatenbank-Abfrage-Engine.

Cosmos DB bietet genug Unterstützung für die meisten gängigen Cloud-Entwicklungsszenarien und bietet Ihnen eine konsistente Datenplattform, auf der Daten auf globaler Ebene gemeinsam genutzt werden können. Microsoft beschreibt es häufig als "Planetary-Scale-Datenbank", eine passende Beschreibung.

Die serverlose Alternative zum bereitgestellten Durchsatz

Bei allen Vorteilen hat Cosmos DB einige Nachteile. nicht zuletzt seine Kosten. Obwohl es eine relativ begrenzte kostenlose Option gibt, kann es teuer sein, sie in großem Maßstab auszuführen, und Sie müssen dies berücksichtigen, wenn Sie Anwendungen um sie herum erstellen. Die Budgetierung für Cosmos DB-Anforderungseinheiten ist ein komplexer Prozess, der beim ersten Mal nur schwer richtig ausgeführt werden kann, insbesondere wenn Sie die Skalierung entweder manuell oder automatisch berücksichtigen.

Microsoft führt seit einiger Zeit eine Vorschau einer serverlosen Option für Cosmos DB aus, die auf der SQL-Kern-API basiert. Es ist eine interessante Alternative zur traditionell bereitgestellten Option. Sie werden nur dann belastet, wenn eine Anforderung ausgeführt wird, und Ihre Instanz wird angehalten, wenn nichts passiert. Bei Datenbankoperationen tritt eine zusätzliche Latenz auf, da Ihre Instanz hochgefahren werden muss, wenn sie angehalten wurde. Natürlich wird für den Speicher eine Gebühr erhoben, aber das gilt auch für jede Azure-Datenbank. Die erste Testversion wurde jetzt auf alle Cosmos DB-APIs erweitert, wobei die allgemeine Verfügbarkeit in Zukunft nicht allzu weit entfernt ist.

Das Hinzufügen einer serverlosen Option zu Cosmos DB ist für viele Arten von Workloads sehr sinnvoll, bei denen Sie Anforderungen in geringer Anzahl und in Stapeln erhalten. Für eine kleine Arbeitsbelastung mit einem unregelmäßigen Betriebsmuster ist ein verbrauchsabhängiges Preismodell sehr sinnvoll - und kann langfristig eine erhebliche Menge Geld sparen, da keine Verpflichtung zum bereitgestellten Durchsatz besteht.

Die Kosten sind niedrig: Sie zahlen 0,282 USD pro Serverless Request Unit für bis zu eine Million RUs in einem Abrechnungszyklus. Wenn Sie einen zuverlässigeren Server benötigen, können Sie eine Verfügbarkeitszone einrichten. Dies erhöht jedoch die Kosten um das 1,25-fache. Das ist immer noch ein vernünftiger Deal, und was Sie an Vorhersehbarkeit verlieren, gewinnen Sie an niedrigeren Kosten. Die Speicherkosten bleiben sowohl für den manuellen als auch für den automatisch bereitgestellten Durchsatz gleich.

Erste Schritte mit serverlosem Cosmos DB

Das Einspringen ist einfach genug. Wie bei einem Standard-Cosmos DB-Konto müssen Sie es für ein Abonnement bereitstellen und Ihre serverlose Instanz einer Ressourcengruppe hinzufügen. Wählen Sie als Nächstes die API aus, die Sie für Abfragen verwenden möchten, und wählen Sie bei Auswahl eines Kapazitätsmodus eher den serverlosen als den bereitgestellten Durchsatz aus. Verknüpfen Sie es schließlich mit einer Region, und denken Sie daran, dass Sie serverlos nur in einer einzelnen Azure-Region verwenden können. Es gibt keine Option für Geo-Redundanz. Sie können es auch nicht mit der kostenlosen Stufe verwenden.

Sobald Ihre serverlose Instanz ausgeführt wird, können Sie ihre APIs verwenden, um Daten zu laden und Abfragen durchzuführen. Wie bei einer Standardinstanz von Cosmos DB können Sie JavaScript-Funktionen und -Trigger erstellen, die in der Datenbank ausgeführt werden, und die vielen verschiedenen APIs zum Verwalten von Abfragen verwenden.

Serverless Cosmos DB sollte bald nicht mehr in der Vorschau angezeigt werden und bietet Unterstützung für alle APIs, auch für die aktuelle Cassandra-API. Da es sich um eine öffentliche Vorschau handelt, können Sie sie direkt über das Azure-Portal einrichten und ihre Funktionsweise untersuchen. Während in der Vorschau ARM oder andere Infrastrukturen nicht als Tools für die Codebereitstellung unterstützt werden, sollte dies jedoch der Fall sein, sobald der Dienst allgemein verfügbar ist. Sie können Konfiguration und Bereitstellung nicht automatisieren, sodass Sie sie derzeit nicht als Teil einer CI / CD-Pipeline (Continuous Integration / Continuous Delivery) verwenden können, da die Bereitstellung manuell erfolgen muss.

Code mit serverloser Cosmos DB erstellen

Ein Ort, an dem Sie viel Wert aus der serverlosen Cosmos DB ziehen sollten, ist die Parallelisierung zu Azure-Funktionen. Die beiden Umgebungen ohne Server arbeiten gut zusammen und sind ideal für ereignisgesteuerte Bursty-Anwendungen mit geringem Volumen. Serverless Cosmos DB kann schnell von null auf 5.000 Anforderungseinheiten pro Sekunde hochgefahren werden. Wenn Sie also Code schreiben, der Funktionen zum Verfolgen von Fehlerzuständen oder anderen Warnungen verwendet, ist dies eine Option zum schnellen Sammeln und Speichern von Daten.

Microsoft empfiehlt, es als Teil einer Entwicklungsumgebung zu verwenden, in der Sie Daten zu den Anforderungen erfassen, die Ihre vollständige Anwendung benötigt. Da das Bereitstellen von Anforderungseinheiten eine schwarze Kunst ist, ist eine serverlose Implementierung, die mit Ihrem gesamten datenbankinternen Code ausgeführt wird, ein nützliches Entwicklungstool. Sie können eine Betriebsumgebung einrichten, Ihre Tests ausführen, die Anzahl der verwendeten Anforderungen erfassen und diese Daten dann verwenden, um den Durchsatz für eine Produktionsbereitstellung bereitzustellen.

Grundlegendes zu den Einschränkungen ohne Server

Die Verwendung eines serverlosen Cosmos DB-Kontos unterliegt Einschränkungen. Das vielleicht wichtigste ist, dass Sie keinen Zugriff auf Bereitstellungen mit mehreren Regionen erhalten, da serverlose Konten nur in einer einzelnen Region ausgeführt werden. Diese Einschränkung ist sinnvoll: Für Multiregion Cosmos DB-Implementierungen müssen mehrere Instanzen gleichzeitig ausgeführt werden, um die Replikation und Konsistenz zwischen den Regionen zu gewährleisten. Wenn serverlose Instanzen nur ausgeführt werden, wenn Anforderungen verarbeitet werden, kann nicht garantiert werden, dass eine andere Region online ist, um die Replikation durchzuführen. Infolgedessen gibt es Änderungen am Cosmos DB-Service-Level-Ziel für serverlose Instanzen, wobei Schreibvorgänge voraussichtlich 30 ms oder weniger und Lesevorgänge 10 ms oder weniger betragen.

Die andere Schlüsselbeschränkung beträgt maximal 5.000 Anforderungseinheiten pro Sekunde. Auch dies sollte für die meisten einfachen Implementierungen oder Entwicklungsimplementierungen ausreichen. Sie müssen jedoch Ihre Anwendungen im Auge behalten und bereit sein, zu einer bereitgestellten Cosmos DB-Instanz zu wechseln, wenn Sie regelmäßig Ihre Grenzen überschreiten. Gleichzeitig kann jeder serverlose Container nur 50 GB Daten und Indizes speichern. Microsoft stellt im Azure-Portal Tools zur Überwachung von Vorgängen sowie in Azure Monitor zur Verfügung.

Durch Hinzufügen einer serverlosen Option zu Cosmos DB werden viele Fragen zu den Kosten beantwortet. Für Szenarien mit geringer Auslastung, in denen Sie keine globale Abdeckung benötigen, sollte dies Ihre erste Wahl sein. Wechseln Sie nur dann zur Verwendung einer bereitgestellten Durchsatzinstanz, wenn Sie das Anforderungsmuster Ihrer Anwendung verstehen und entsprechend budgetieren können.