Was ist Cloud Run?

Cloud Run ist eine vollständig verwaltete Anwendungsplattform, mit der Sie Ihren Code, Ihre Funktion oder Ihren Container auf der hoch skalierbaren Infrastruktur von Google ausführen können.

Kurz gesagt: Mit Cloud Run können Entwickler ihre Zeit in die Entwicklung von Code investieren und sehr wenig Zeit mit dem Bearbeiten, Konfigurieren und Skalieren ihres Cloud Run-Dienstes verbringen. Sie müssen keinen Cluster erstellen oder die Infrastruktur verwalten, um mit Cloud Run produktiv zu sein.

Dienste und Jobs

Bei Cloud Run kann Ihr Code alsDienst oder Job ausgeführt werden.

Die folgende Tabelle bietet einen allgemeinen Überblick über die Optionen, die von den einzelnen Cloud Run-Ressourcentypen bereitgestellt werden.

Ressource Beschreibung
Dienst Reagiert auf HTTP-Anfragen, die an einen eindeutigen und stabilen Endpunkt gesendet werden, und verwendet zustandslose Instanzen, die auf der Grundlage verschiedener wichtiger Messwerte automatisch skaliert werden. Außerdem reagiert sie auf Ereignisse und Funktionen.
Job Führt parallelisierbare Aufgaben aus, die manuell oder nach einem Zeitplan ausgeführt werden und bis zum Abschluss laufen.

Cloud Run-Dienste

Ein Cloud Run-Dienst bietet Ihnen die Infrastruktur, die zum Ausführen eines zuverlässigen HTTPS-Endpunkts erforderlich ist. Sie müssen dafür sorgen, dass Ihr Code einen TCP-Port überwacht und HTTP-Anfragen verarbeitet.

Das folgende Diagramm zeigt einen Cloud Run-Dienst, der mehrere Containerinstanzen ausführt, um Webanfragen und Ereignisse vom Client über einen HTTPS-Endpunkt zu verarbeiten.

Ein Cloud Run-Dienst führt Container aus, um Webanfragen und -ereignisse zu verarbeiten

Ein Standarddienst umfasst die folgenden Funktionen:

Eindeutiger HTTPS-Endpunkt für jeden Dienst
Jeder Cloud Run-Dienst hat einen HTTPS-Endpunkt in einer eindeutigen Subdomain der Domain *.s3nsrun.fr. Sie können auch benutzerdefinierte Domains konfigurieren. Cloud Run verwaltet TLS für Sie und unterstützt WebSockets, HTTP/2 (End-to-End) und gRPC (End-to-End).
Schnelle anfragebasierte automatische Skalierung
Cloud Run skaliert schnell, um alle eingehenden Anfragen zu bearbeiten oder um eine erhöhte CPU-Auslastung außerhalb von Anfragen zu bewältigen, wenn die Abrechnungseinstellung auf instanzbasierte Abrechnung festgelegt ist. Ein Dienst kann schnell auf bis zu 1.000 Instanzen skaliert werden – oder sogar mehr, wenn Sie eine Kontingenterhöhung anfordern. Wenn die Nachfrage sinkt, entfernt Cloud Run inaktive Container. Wenn Sie Bedenken hinsichtlich der Kosten oder Überlastung nachgelagerter Systeme haben, können Sie die maximale Anzahl von Instanzen begrenzen.
Optionale manuelle Skalierung
Standardmäßig skaliert Cloud Run automatisch auf mehr Instanzen, um mehr Traffic zu verarbeiten. Sie können dieses Verhalten jedoch mit manueller Skalierung überschreiben, um das Skalierungsverhalten zu steuern.
Integrierte Trafficverwaltung

Um das Risiko bei der Bereitstellung einer neuen Überarbeitung zu verringern, unterstützt Cloud Run graduelle Rollouts. Dazu können Sie eingehenden Traffic an die neueste Überarbeitung weiterleiten, ein Rollback zu einer vorherigen Überarbeitung durchführen oder den Traffic gleichzeitig auf mehrere Überarbeitungen aufteilen.

Sie können beispielsweise mit dem Senden von 1% der Anfragen an eine neue Überarbeitung beginnen und diesen Prozentsatz beim Monitoring von Telemetrie erhöhen.

Öffentliche und private Dienste

Ein Cloud Run-Dienst kann über das Internet erreichbar sein. Alternativ haben Sie folgende Möglichkeiten, den Zugriff einzuschränken:

Sie können cachefähige Assets von einem Edge-Standort in der Nähe der Clients bereitstellen, indem Sie einen Cloud Run-Dienst mit einem Content Delivery Network (CDN) wie Firebase Hosting und Cloud CDN nutzen.

Auf null und minimale Instanzen skalieren

Wenn die Abrechnung standardmäßig auf instanzbasierte Abrechnung festgelegt ist, fügt Cloud Run Instanzen automatisch hinzu und entfernt sie, um alle eingehenden Anfragen zu verarbeiten oder um eine erhöhte CPU-Auslastung außerhalb von Anfragen zu bewältigen.

Wenn keine eingehenden Anfragen an Ihren Dienst eingehen, wird auch die letzte verbleibende Instanz entfernt. Dieses Verhalten wird allgemein als Skalierung auf null bezeichnet. Wenn dann bei Eingang einer Anfrage keine aktiven Instanzen vorhanden sind, erstellt Cloud Run eine neue Instanz. Dies wirkt sich negativ auf die Antwortzeit für diese ersten Anfragen aus, je nachdem, wie schnell Ihr Container für die Verarbeitung von Anfragen bereit ist.

Sie haben folgende Möglichkeiten, dieses Verhalten zu ändern:

Nutzungsbasierte Abrechnung für Dienste

Die Skalierung auf null ist aus wirtschaftlichen Gründen attraktiv, da Ihnen die CPU und der Speicher, die einer Instanz zugewiesen werden, mit einer Genauigkeit von 100 ms in Rechnung gestellt werden. Wenn Sie keine Mindestinstanzen konfigurieren, werden Ihnen keine Kosten in Rechnung gestellt, wenn Ihr Dienst nicht verwendet wird. Es gibt eine großzügige kostenlose Stufe. Weitere Informationen finden Sie unter Preise.

Sie können zwei Abrechnungseinstellungen aktivieren:

Anfragebasiert
Wenn eine Instanz keine Anfragen verarbeitet, werden Ihnen keine Kosten in Rechnung gestellt. Sie zahlen eine Gebühr pro Anfrage.
Instanzbasiert
Die Kosten werden Ihnen für die gesamte Lebensdauer einer Instanz in Rechnung gestellt. Es fallen keine Gebühren pro Anfrage an.

Es gibt eine großzügige kostenlose Stufe. Weitere Informationen finden Sie unter Preise. Unter Abrechnungseinstellungen finden Sie Informationen zum Aktivieren anfrage- oder instanzbasierter Abrechnung für Ihren Dienst.

Ein entfernbares Container-Dateisystem

Instanzen in Cloud Run können entfernt werden. Jeder Container hat ein speicherinternes, beschreibbares Dateisystem-Overlay, das nicht beibehalten wird, wenn der Container heruntergefahren wird. Cloud Run entscheidet, wann die Übermittlung von Anfragen an eine Instanz beendet und diese heruntergefahren wird, z. B. beim Herunterskalieren.

Um eine Warnung zu erhalten, wenn Cloud Run eine Instanz herunterfährt, kann Ihre Anwendung das SIGTERM-Signal abfangen. Dadurch kann Ihr Code lokale Puffer leeren und lokale Daten in einem externen Datenspeicher speichern.

Zur dauerhaften Speicherung von Dateien können Sie Cloud Storage einbinden oder ein Netzwerkdateisystem (NFS) bereitstellen.

Wann werden Cloud Run-Dienste verwendet?

Cloud Run-Dienste eignen sich hervorragend für Code, der Anfragen, Ereignisse oder Funktionen verarbeitet. Beispiel-Anwendungsfälle umfassen Folgendes:

Websites und Webanwendungen
Erstellen Sie Ihre Webanwendung mit Ihrem bevorzugten Stack, greifen Sie auf Ihre SQL-Datenbank zu und rendern Sie dynamische HTML-Seiten.
APIs und Mikrodienste
Sie können eine REST API, eine GraphQL API oder private Mikrodienste erstellen, die über HTTP oder gRPC kommunizieren.

Cloud Run-Jobs

Wenn Ihr Code funktioniert und dann beendet wird, z. B. durch ein Skript, können Sie Ihren Cloud Run-Job verwenden, um Ihren Code auszuführen. Sie können einen Job über die Befehlszeile mit der Google Cloud CLI ausführen, einen wiederkehrenden Job planen.

Array-Jobs lassen sich schneller ausführen

Ein Job kann eine einzelne Instanz starten, um Ihren Code auszuführen. Dies ist eine gängige Methode zum Ausführen eines Skripts oder Tools.

Sie können jedoch auch einen Array-Job verwenden, bei dem viele identische, unabhängige Instanzen parallel gestartet werden. Array-Jobs können schneller verarbeitet werden, die in mehrere unabhängige Aufgaben aufgeteilt werden können.

Das folgende Diagramm zeigt, dass ein Job mit sieben Aufgaben, der sequenziell ausgeführt wird, länger dauert als derselbe Job, wenn vier Instanzen unabhängige Aufgaben parallel verarbeiten können:

Array-Jobs führen schneller parallele Jobs aus

Wenn Sie beispielsweise 1.000 Bilder aus Cloud Storage zuschneiden und ihre Größe ändern, ist deren aufeinanderfolgende Verarbeitung langsamer als die gleichzeitige Verarbeitung bei vielen Instanzen, die Cloud Run mithilfe des automatischen Skalierens verwaltet.

Wann werden Cloud Run-Jobs verwendet?

Cloud Run-Jobs eignen sich gut zum Ausführen von Code, der Arbeit (einen Job) ausführt und nach Abschluss der Arbeit beendet wird. Hier einige Beispiele:

Skript oder Tool
Führen Sie ein Skript aus, um Datenbankmigrationen oder andere operative Aufgaben auszuführen.
Array-Job
In einem Cloud Storage-Bucket alle Dateien parallelisieren.
Geplanter job
In regelmäßigen Abständen Rechnungen erstellen und senden oder die Ergebnisse einer Datenbankabfrage als XML speichern und die Datei alle paar Stunden hochladen.

Nächste Schritte