Im S-1-Dokument von Cloudflare gibt es einen Abschnitt, der so beginnt: „Das Internet wurde nicht für das entwickelt, was aus ihm geworden ist.“ Dieser Satz bringt die Idee zum Ausdruck, dass das Internet, das als Experiment begann, sich zu etwas entwickelt hat, auf das wir uns alle im täglichen Leben und bei der Arbeit verlassen müssen. Und dass mehr nötig ist als nur das Internet in seiner ursprünglichen Form; es braucht Sicherheit und Performance und Datenschutz.
Ähnliches lässt sich über die Cloud sagen: Sie wurde nicht für das konzipiert, was sie werden muss.
Die Einführung von Diensten wie Amazon EC2 war zweifellos eine enorme Verbesserung gegenüber der alten Methode, Server und Speichersysteme zu kaufen und zu installieren und sie dann zu warten.
Aber die Cloud war von ihrem Wesen her eine Virtualisierung der älteren Infrastruktur der realen Welt. Sie brachte kein radikales Umdenken hinsichtlich der Art und Weise, wie die Datenverarbeitung aussehen sollte, um den Anforderungen von Unternehmen in der Dimension des Internets gerecht zu werden. Das ist so, als ob Dampflokomotiven durch effiziente Elektromotoren ersetzt würden, aber immer noch einen Schornstein auf dem Dach bräuchten und alle 300 km anhalten müssten, um Wasser zu tanken.
Die Cloud ersetzte die Rituale des Kaufs von Servern und der Installation von Betriebssystemen durch neue und inzwischen vertraute Rituale der Auswahl von Regionen, der Bereitstellung virtueller Maschinen und der künstlichen Aufrechterhaltung von Code.
Aber auf dem Weg dorthin sieht man Lichtblicke in Form von Lambdas, Edge, Funktionen oder Serverless. Alle versuchen, einem Modell des Cloud Computing einen Namen zu geben, der Entwicklern eine hohe Produktivität bei der Skalierung in die Dimension des Internets verspricht. Es ist ein Modell, bei dem es nicht darum geht, Rechner oder Festplatten zu virtualisieren oder Dinge in Containern zu verpacken, sondern zu sagen: „Schreib den Code, wir führen ihn aus, du musst dich nicht um Details wie Skalierung oder Standort kümmern“.
Wir nennen das die Supercloud.
Die Grundlage der Supercloud sind Computing- und Datendienste, die den Betrieb von Anwendungen jeder Größe effizient und unbegrenzt skalierbar machen, ohne die Nachteile der heutigen Cloud.
Die Grundlagen der Supercloud
Vor einigen Jahren entwickelte eine Bewegung namens NoSQL neue Methoden der Datenspeicherung und -verarbeitung, die nicht auf Datenbanken beruhen. Schlüssel-Wert-Speicher und Dokumentenspeicher florierten, weil sie eine direkte Verbindung zwischen Code und Daten auf einer einfachen Ebene herstellten, anstatt über Daten in der Granularität von Datenbanken, Tabellen oder sogar Zeilen nachzudenken.
Man kann sich NoSQL als ein Streben nach Granularität vorstellen. Und es hat funktioniert. NoSQL-Speicher, KVs, Objektspeicher (wie R2) gibt es zuhauf. Beim Erfolgszug von MapReduce zur Datenverarbeitung ging es ebenfalls um höchste Granularität. Durch die Aufteilung der Datenverarbeitung in leicht skalierbare Teile (Map und Reduce) war es möglich, große Datenmengen effizient zu verarbeiten und je nach Bedarf zu nach oben oder unten zu skalieren.
Das Gleiche gilt für Code in der Cloud. Genauso wie Programmierer nicht ständig in datenbankgroßen Brocken denken wollten, sollten sie auch nicht über VM- oder containergroße Brocken nachdenken müssen. Das ist ineffizient und hat nichts mit der eigentlichen Aufgabe zu tun, Code zu schreiben, um einen Dienst zu erstellen. Das ist unnötige Arbeit, die von dem eigentlichen Wert des Programmierens ablenkt.
In der Theorie der verteilten Programmierung gibt es diese hohe Granularität schon seit langem. Das CSP-Modell besteht aus winzigen Prozessen, die Aufgaben ausführen und Daten weitergeben (es hat die Sprache Go inspiriert); im Aktorenmodell werden Nachrichten zwischen einer Vielzahl von Aktoren weitergegeben, die den internen Zustand verändern; sogar im Lambda-Kalkül geht es um diskrete Funktionen, die auf Daten wirken.
Bei der objektorientierten Programmierung denken die Entwickler über Objekte nach (nicht über virtuelle Maschinen oder Festplatten). Und in CORBA und ähnlichen Systemen gibt es das Konzept eines Objektanfrage-Brokers (Object Request Broker, ORB), der es ermöglicht, Objekte in einem verteilten System auszuführen und auf sie aus der Ferne zuzugreifen, ohne genau zu wissen, wo oder wie das Objekt ausgeführt wird.
Die Theorie der Datenverarbeitung geht weg von dedizierten Maschinen (virtuell oder real) und hin zu Code und Daten, die in der Supercloud ausgeführt werden und die Details der Codeausführung und Datenlokalisierung automatisch und effizient abwickeln.
Ganz gleich, ob Sie Ihren Code durch Aufteilung in Funktionen schreiben oder große Teile der Funktionalität oder ganze Programme bereitstellen, die Grundlagen der Supercloud sorgen dafür, dass Ihr Code von ihrer Effizienz profitiert. Und mehr.
Der Vorteil der Supercloud
Die Supercloud macht die Skalierung einfach, weil man nicht darüber nachdenken muss, wie viele VMs man bereitstellen muss, und weil man keine VMs in Bereitschaft halten muss für den Fall, dass es eine Flut von Besuchern gibt. So wie MapReduce (das auf das Lambda-Kalkül zurückgeht) nach oben und unten skaliert, sollte dies auch für die allgemeine Datenverarbeitung gelten.
Und es geht nicht nur um Skalierung. In der Supercloud sind sowohl Code als auch Daten mobil und bewegen sich im Netzwerk. Wenn Sie den Code mit Daten verknüpfen (z. B. mit Durable Objects; das Aktorenmodell lässt grüßen), haben Sie eine Grundlage für Anwendungen, die beliebig skalierbar sind und je nach Bedarf in die Nähe der Nutzer gebracht werden können, um die beste Performance zu erzielen.
Wenn Ihre Daten jedoch unbeweglich sind, bringen wir Ihren Code näher an sie heran, egal wie oft Sie darauf zugreifen müssen.
Darüber hinaus bedeutet die Arbeit mit diesem Maß an Flexibilität, dass ein Code zur Durchsetzung eines Datenschutzgesetzes oder eines Gesetzes über den Verbleib von Daten auf der Ebene einzelner Nutzer oder Objekte arbeiten kann. Derselbe Code kann sich unterschiedlich verhalten und sogar in einem völlig anderen Land ausgeführt werden, je nachdem, wo die zugehörigen Daten gespeichert sind.
Eine Supercloud hat zwei interessante Auswirkungen auf die Kosten für die Ausführung eines Programms. Erstens ist es wirtschaftlicher, weil man nur das ausführt, was man braucht. Man benötigt keine fest zugeordneten VMs, die auf Arbeit warten, oder ungenutzte Maschinen, für die Sie nur bezahlen, um diese im Bedarfsfall nutzen zu können. Entweder wird der Code ausgeführt, oder er wird nicht ausgeführt. Er lässt sich je nach Bedarf nach oben oder unten skalieren. Sie zahlen nur für genau das, was Sie brauchen.
Zweitens wird dadurch eine effizientere Computing-Plattform geschaffen, die für alle Beteiligten besser ist. Dies zwingt die Computing-Plattform (z. B. uns), so effizient wie möglich zu arbeiten. Aus Gründen der Performance und der Skalierbarkeit müssen wir in der Lage sein, den Code schnell auszuführen. Wir müssen die CPUs effizient nutzen, denn kein Kunde bezahlt uns dafür, dass wir ungenutzte CPUs verfügbar halten. Und es ist besser für die Umwelt, weil die Cloud-Maschinen sehr stark ausgelastet sind. Dank dieser Effizienz kann unsere Plattform auf die 10 Millionen Anfragen skalieren, die Cloudflare Workers in der Zeit bearbeitet hat, die Sie brauchten, um das letzte Wort dieses Satzes zu lesen.
Und diese Computing-Plattform lässt sich weit über einen Rechner, ein Rechenzentrum oder ein Land hinaus skalieren. Mit der richtigen Software (die wir entwickelt haben) lässt sie sich auf die Dimension des Internets skalieren. Die Software ordnet die Ressourcen automatisch weltweit zu und verschiebt Verbindungen, Daten und Verarbeitungsprozesse, um eine hohe Effizienz und eine optimale Nutzung durch den Nutzer zu gewährleisten.
Effizientes Computing und Speichern, ein globales Netzwerk, das überall ist, wo sich Nutzer befinden, verbunden durch Software, die den Globus in eine einzige Cloud verwandelt. Die Supercloud.
Willkommen in der Supercloud
Die Supercloud ist performant, skalierbar, verfügbar, privat und kosteneffizient. Die Auswahl einer Region für Ihre Anwendung, die Bereitstellung virtueller Maschinen, die automatische Skalierung von Containern oder die Sorge um Kaltstarts erscheinen lächerlich, schwierig, anachronistisch, zeitraubend, starr und teuer.
Glücklicherweise integriert Cloudflare seit Jahren die Alternative zu dieser traditionellen Cloud in unser Netzwerk und unsere Entwicklerplattform. Die Supercloud. Der Begriff mag neu sein, aber das heißt nicht, dass er nicht real ist. Heute haben wir bereits über eine Million Entwickler, die in der Supercloud entwickeln.
Jeder dieser Entwickler möchte den Code auf einem Rechner ausführen und ihn perfektionieren. Es ist so viel einfacher, so zu arbeiten. Wir haben zufällig einen Rechner, der der Dimension des Internets gerecht wird: einen globalen, verteilten Supercomputer. Das ist die Supercloud, und wir bauen unsere eigenen Produkte darauf auf. Auch Sie können sich dieser einen Million Entwickler anschließen und ebenfalls darauf aufbauen.
Wir entwickeln die Supercloud seit 12 Jahren und haben sie vor fünf Jahren über Cloudflare Workers für Entwickler zugänglich gemacht. Cloudflare Workers wurde vom ersten Tag an auf Skalierbarkeit und Performance ausgelegt, indem es in unserem globalen Netzwerk läuft.
Und damit willkommen in der Supercloud und willkommen zur Cloudflare Developer Week 2022.
Wie bei allen unseren Innovation Weeks freuen wir uns darauf, eine weitere Woche mit Ankündigungen zu beginnen, die es ermöglichen, mehr und mehr Anwendungsfälle auf der Supercloud zu entwickeln. Die Workers-Entwicklerplattform gibt uns die Möglichkeit, unseren Nutzern immer wieder neue Bausteine zur Verfügung zu stellen. In dieser Woche werden wir Ihnen nicht nur von all den neuen Tools erzählen, mit denen Sie sich spielen können, sondern auch davon, wie wir viele von ihnen entwickelt haben, wie Sie sie nutzen können und was unsere Kunden heute mit ihnen in der Produktion entwickeln.
Auf Cloudflare TV ansehen
Den kompletten Beitrag unserer wöchentlichen Sendung This Week in Net können Sie hier ansehen — oder im Audio-/Podcast-Format hören.