Was ist Cloud Run?

Cloud Run ist eine verwaltete Computing-Plattform, mit der Sie Container direkt auf der skalierbaren Infrastruktur von Google ausführen können.

Sie können in Cloud Run geschriebenen Code bereitstellen, wenn Sie ein Container-Image daraus erstellen können. Das Erstellen von Container-Images ist optional. Wenn Sie Go, Node.js, Python, Java, .NET Core oder Ruby verwenden, können Sie die Option Quellbasiertes Deployment verwenden, die den Container für Sie erstellt. Beachten Sie dabei die Best Practices für die von Ihnen verwendete Sprache.

Google Run wurde für die Zusammenarbeit mit anderen Diensten in Google Cloud entwickelt, sodass Sie Anwendungen mit vollem Funktionsumfang erstellen 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: zwei Möglichkeiten zum Ausführen des Codes

Bei Cloud Run kann Ihr Code entweder kontinuierlich als Dienst oder als Job ausgeführt werden. Sowohl Dienste als auch Jobs werden in derselben Umgebung ausgeführt und können dieselben Integrationen in andere Dienste in Google Cloud verwenden.

  • Cloud Run-Dienste Wird verwendet, um Code auszuführen, der auf Webanfragen oder Ereignisse reagiert.
  • Cloud Run-Jobs: Wird verwendet, um Code auszuführen, der eine Arbeit ausführt (einen Job) und nach Abschluss der Arbeit beendet wird.

Cloud Run-Dienste

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

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.

Zu den Standarddienstfunktionen gehören:

Eindeutiger HTTPS-Endpunkt für jeden Dienst
Jeder Cloud Run-Dienst wird mit einem HTTPS-Endpunkt auf einer eindeutigen Subdomain der Domain *.run.app bereitgestellt. 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 ist so konzipiert, dass es schnell skaliert werden kann, um alle eingehenden Anfragen zu bearbeiten oder um eine erhöhte CPU-Auslastung außerhalb von Anfragen zu bewältigen, wenn die CPU-Zuweisung auf always on eingestellt 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.
Integrierte Trafficverwaltung
Jede Bereitstellung erstellt eine neue unveränderliche Überarbeitung. Sie können eingehenden Traffic an die neueste Überarbeitung weiterleiten, ein Rollback zu einer vorherigen Überarbeitung durchführen oder den Traffic gleichzeitig auf mehrere Überarbeitungen aufteilen, um einen graduellen Rollout durchzuführen. Dies ist nützlich, wenn Sie die Gefahr verringern möchten, dass eine neue Überarbeitung bereitgestellt wird. Sie können mit dem Senden von 1% der Anfragen an eine neue Überarbeitung beginnen und diesen Prozentsatz beim Monitoring von Telemetrie erhöhen.
Private und öffentliche Dienste
Ein Cloud Run-Dienst kann über das Internet erreichbar sein. Alternativ haben Sie drei Möglichkeiten, den Zugriff einzuschränken:

Sie können einen Cloud Run-Dienst mit einem Content Delivery Network (CDN) nutzen, um cachefähige Assets von einem Edge-Standort in der Nähe der Clients bereitzustellen. Sowohl Firebase Hosting als auch Cloud CDN bieten diese Möglichkeit.

Auf null und minimale Instanzen skalieren

Cloud Run fügt automatisch Instanzen hinzu und entfernt sie, um alle eingehenden Anfragen zu verarbeiten oder um eine erhöhte CPU-Auslastung außerhalb von Anfragen zu verarbeiten, wenn die CPU-Zuweisung auf always on gesetzt ist. 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 keine aktiven Instanzen vorhanden sind, wird nach Bedarf eine neue Instanz erstellt, sobald eine Anfrage eingeht. 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.

Damit Ihr Dienst nicht auf null Instanzen skaliert wird, können Sie Cloud Run so konfigurieren, dass eine Mindestmenge an Instanzen aktiv bleibt.

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 zwei Preismodelle, die Sie aktivieren können:

Anfragebasiert
Wenn eine Instanz keine Anfragen verarbeitet, wird die CPU nicht zugeordnet und Ihnen werden keine Kosten in Rechnung gestellt. Außerdem zahlen Sie eine Gebühr pro Anfrage.
Instanzbasiert
Die Kosten werden Ihnen für die gesamte Lebensdauer einer Instanz in Rechnung gestellt und die CPU wird immer zugewiesen. Es fallen keine Gebühren pro Anfrage an.

Es gibt eine großzügige kostenlose Stufe. Weitere Informationen finden Sie unter Preise. Unter CPU-Zuweisung finden Sie Informationen zum Aktivieren anfrage- oder instanzbasierter Preise 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 unabhängig, 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 prüfen. 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 oder Ereignisse 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.
Streamingdatenverarbeitung
Cloud Run-Dienste können Nachrichten von Pub/Sub-Push-Abos und Ereignisse von Eventarc empfangen.

Cloud Run-Jobs

Wenn Ihr Code funktioniert und dann beendet wird (ein Skript ist ein gutes Beispiel), können Sie Ihren Cloud Run-Job verwenden, um Ihren Code auszuführen. Sie können einen Job über die Befehlszeile mit der gcloud-Befehlszeile ausführen, einen wiederkehrenden Job planen oder als Teil eines Workflows ausführen.

Array-Jobs lassen sich schneller ausführen

Ein Job kann eine 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 viele identische, unabhängige Instanzen parallel starten, also einen Array-Job.

Array-Jobs können schneller verarbeitet werden, die in mehrere unabhängige Aufgaben aufgeteilt werden können, wie hier gezeigt:

Array-Jobs führen schneller parallele Jobs aus

Wenn Sie beispielsweise die Größe von 1.000 Bildern aus Cloud Storage anpassen und diese zuschneiden, ist deren aufeinanderfolgende Verarbeitung langsamer als die parallele Verarbeitung mit vielen Instanzen, die von Cloud Run mit automatischer Skalierung verwaltet werden.

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.

Cloud Run-Integrationen

Cloud Run lässt sich in das umfassendere System von Google Cloud einbinden, sodass Sie Anwendungen mit komplettem Funktionsumfang erstellen können.

Wichtige Integrationen sind:

Datenspeicher
Cloud Run kann in Cloud SQL (verwaltetes MySQL, PostgreSQL und SQL Server), Memorystore (verwalteter Redis und Memcached), Firestore, Spanner und Cloud Storage eingebunden werden und weitere. Eine vollständige Liste finden Sie unter Datenspeicherung.
Logging und Fehlerberichte
Containerlogs werden von Cloud Logging automatisch aufgenommen. Wenn die Logs Ausnahmen enthalten, werden diese von Error Reporting zusammengefasst und Sie werden benachrichtigt. Die folgenden Sprachen werden unterstützt: Go, Java, Node.js, PHP, Python, Ruby und .NET.
Dienstidentität
Jede Cloud Run-Überarbeitung ist mit einem Dienstkonto verknüpft. Die Google Cloud-Clientbibliotheken verwenden dieses Dienstkonto transparent für die Authentifizierung bei Google Cloud APIs.
Continuous Delivery
Wenn Sie Ihren Quellcode in GitHub, Bitbucket oder Cloud Source Repositories speichern, können Sie Cloud Run so konfigurieren, dass neue Commits automatisch bereitgestellt werden.
Privates Netzwerk
Cloud Run-Instanzen können Ressourcen im Virtual Private Cloud-Netzwerk (VPC) über den Connector für serverlosen VPC-Zugriff erreichen. So kann Ihr Dienst eine Verbindung zu virtuellen Compute Engine-Maschinen oder -Produkten basierend auf Compute Engine wie Google Kubernetes Engine oder Memorystore herstellen.
Google Cloud APIs
Der Code Ihres Dienstes wird transparent mit Google Cloud APIs authentifiziert. Beispiele hierfür sind die KI und Machine Learning APIs wie die Cloud Vision API, Speech-to-Text API, AutoML Natural Language API, Cloud Translation API und mehr.
Hintergrundaufgaben
Wenn Sie Code für die spätere oder sofortige Ausführung nach einer Webanfrage planen möchten, funktioniert Cloud Run gut mit Cloud Tasks zusammen, um eine skalierbare und zuverlässige asynchrone Ausführung zu ermöglichen.

Unter Verbindung zu Google Cloud-Diensten herstellen finden Sie eine Liste aller Google Cloud-Dienste, die gut mit Cloud Run funktionieren.

Dienste oder Jobs müssen in einem Container-Image verpackt werden

Damit Ihr Dienst oder Job in Cloud Run bereitgestellt werden kann, müssen Sie ihn in einem Container-Image verpacken. Hier finden Sie eine kurze konzeptionelle Einführung, wenn Sie nicht mit Containern vertraut sind.

Container-Images erstellen

Ein Container-Image ist ein Paket mit alles, was Ihr Dienst ausführen muss. Dies umfasst Build-Artefakte, Assets, Systempakete und (optional) eine Laufzeit. Dadurch wird eine Containeranwendung von Natur aus portierbar. Sie kann überall ausgeführt werden, wo ein Container ausgeführt werden kann. Beispiele für Build-Artefakte sind kompilierte Binärdateien oder Skriptdateien. Beispiele für Laufzeiten sind die JavaScript-Laufzeit Node.js oder eine virtuelle Java-Maschine (JVM).

Fortgeschrittene Fachleute schätzen die Tatsache, dass Cloud Run keine zusätzlichen Belastung für die Ausführung ihres Codes verursacht. Sie können jede Binärdatei auf Cloud Run ausführen. Für Nutzer, einschließlich Experten, die es einfacher machen oder die Containerisierung ihrer Anwendung an Google delegieren möchten, kann Cloud Run in die Open-Source-Build-Pakete von Google Cloud eingebunden werden, um eine quellenbasierte Bereitstellung bereitzustellen.

Nächste Schritte