
Before you begin
- Labs create a Google Cloud project and resources for a fixed time
- Labs have a time limit and no pause feature. If you end the lab, you'll have to restart from the beginning.
- On the top left of your screen, click Start lab to begin
Create a Pub/Sub topic
/ 10
Deploy the Lab Report Service: Build
/ 15
Create a Revision for Cloud Run
/ 15
Deploy the Email Service: Build
/ 15
Create a new Revision
/ 15
Create a service account
/ 10
Create a Pub/Sub subscription
/ 10
Deploy the SMS Service
/ 10
Den Labs des Kurses Serverless Cloud Run Development liegt das Szenario eines fiktiven Unternehmens zugrunde, in dem Sie den handelnden Personen bei der Umsetzung ihres Plans für eine serverlose Migration helfen.
Vor zwölf Jahren gründete Lily die Tierklinikkette „Pet Theory“. Im Laufe der Jahre sind immer mehr Kliniken dazu gekommen, sodass nun Bedarf an einer Automatisierung besteht. Die Art und Weise, wie Pet Theory die Ergebnisse der medizinischen Tests aus den Laboren verarbeitet, ist mittlerweile zu langsam und fehleranfällig. Lily will deshalb diesen Vorgang optimieren.
Derzeit verarbeitet Patrick, der IT-Administrator von Pet Theory, die Testergebnisse manuell. Wenn die Testergebnisse aus den Laboren zurückkommen, stellt er sie zusammen und schickt eine E-Mail an den Kunden, dessen Tier untersucht wurde. Anschließend schreibt er eine SMS auf seinem Smartphone und sendet die Ergebnisse in Textform an den Kunden.
Patrick arbeitet mit der Softwareberaterin Ruby am Entwurf eines Systems, das sich besser skalieren lässt. Ihr Ziel ist es, eine Lösung mit geringem fortlaufendem Wartungsbedarf zu entwickeln. Patrick und Ruby möchten dafür eine serverlose Technologie nutzen.
Aufgaben in diesem Lab:
Für dieses Lab wird davon ausgegangen, dass Sie mit der Cloud Console und mit Shell-Umgebungen vertraut sind. Dieses Lab ist Teil einer Reihe. Es kann hilfreich sein, die vorherigen Labs zu absolvieren, ist aber nicht unbedingt erforderlich:
Lesen Sie diese Anleitung. Labs sind zeitlich begrenzt und können nicht pausiert werden. Der Timer beginnt zu laufen, wenn Sie auf Lab starten klicken, und zeigt Ihnen, wie lange die Ressourcen für das Lab verfügbar sind.
In diesem praxisorientierten Lab können Sie die Lab-Aktivitäten in einer echten Cloud-Umgebung selbst durchführen – nicht in einer Simulations- oder Demo-Umgebung. Dazu erhalten Sie neue, temporäre Anmeldedaten, mit denen Sie für die Dauer des Labs auf Google Cloud zugreifen können.
Für dieses Lab benötigen Sie Folgendes:
Klicken Sie auf Lab starten. Wenn Sie für das Lab bezahlen müssen, wird ein Pop-up-Fenster geöffnet, in dem Sie Ihre Zahlungsmethode auswählen können. Auf der linken Seite befindet sich der Bereich Details zum Lab mit diesen Informationen:
Klicken Sie auf Google Cloud Console öffnen (oder klicken Sie mit der rechten Maustaste und wählen Sie Link in Inkognitofenster öffnen aus, wenn Sie Chrome verwenden).
Im Lab werden Ressourcen aktiviert. Anschließend wird ein weiterer Tab mit der Seite Anmelden geöffnet.
Tipp: Ordnen Sie die Tabs nebeneinander in separaten Fenstern an.
Kopieren Sie bei Bedarf den folgenden Nutzernamen und fügen Sie ihn in das Dialogfeld Anmelden ein.
Sie finden den Nutzernamen auch im Bereich Details zum Lab.
Klicken Sie auf Weiter.
Kopieren Sie das folgende Passwort und fügen Sie es in das Dialogfeld Willkommen ein.
Sie finden das Passwort auch im Bereich Details zum Lab.
Klicken Sie auf Weiter.
Klicken Sie sich durch die nachfolgenden Seiten:
Nach wenigen Augenblicken wird die Google Cloud Console in diesem Tab geöffnet.
Cloud Shell ist eine virtuelle Maschine, auf der Entwicklertools installiert sind. Sie bietet ein Basisverzeichnis mit 5 GB nichtflüchtigem Speicher und läuft auf Google Cloud. Mit Cloud Shell erhalten Sie Befehlszeilenzugriff auf Ihre Google Cloud-Ressourcen.
Wenn Sie verbunden sind, sind Sie bereits authentifiziert und das Projekt ist auf Ihre Project_ID,
gcloud
ist das Befehlszeilentool für Google Cloud. Das Tool ist in Cloud Shell vorinstalliert und unterstützt die Tab-Vervollständigung.
Ausgabe:
Ausgabe:
gcloud
finden Sie in Google Cloud in der Übersicht zur gcloud CLI.
Bestimmte Compute Engine-Ressourcen befinden sich in Regionen und Zonen. Eine Region ist ein spezifischer Ort, an dem Sie Ihre Ressourcen ausführen können. Jede Region hat eine oder mehrere Zonen.
Führen Sie die folgenden gcloud-Befehle in der Cloud Console aus, um die Standardregion und ‑zone für Ihr Lab festzulegen:
Pet Theory möchte den Vorgang der Weitergabe von Testergebnissen an die Kunden automatisieren. Zuletzt hatte die Klinik Mühe, die steigende Anzahl an Terminen zu bewältigen. Lily bittet deshalb Ruby um Unterstützung:
Lily, Gründerin von Pet Theory |
Hallo Ruby, vielen Dank, dass du die Sache mit dem Versicherungsportal geklärt hast. Ich denke im Moment darüber nach, wie wir die Handhabung der medizinischen Testergebnisse verbessern können. Wir benötigen eine effizientere Möglichkeit, um Ergebnisse an die Kunden zu senden. Lily |
Ruby, Softwareberaterin |
Hallo Lily, kein Problem, ich werde sehen, was sich machen lässt. Ich habe schon ein paar Ideen, wie die Situation verbessert werden könnte. Ruby |
Pet Theory lässt medizinische Tests von einem externen Unternehmen ausführen. Wenn das Laborunternehmen einen medizinischen Test abgeschlossen hat, sendet es die Ergebnisse zurück an Pet Theory.
Das Laborunternehmen verwendet dazu eine HTTP(S) POST-Anfrage, mit der die medizinischen Laborergebnisse an den Web-Endpunkt von Pet Theory übertragen werden. Die folgende Abbildung stellt die grundlegende Architektur dafür dar.
Nachdem sich Ruby einen Eindruck von dem grundlegenden Vorgang verschafft hat, geht sie davon aus, dass sich für Pet Theory ein System mit folgenden Möglichkeiten entwickeln lässt:
Im Entwurf von Ruby sind die genannten Aktivitäten voneinander getrennt. Für ein solches System ist Folgendes erforderlich:
Mithilfe einmalig genutzter Funktionen will Ruby einen Code entwickeln, der sich einfacher schreiben lässt und weniger fehleranfällig ist.
Ruby, Softwareberaterin |
Hallo Patrick, Lily möchte gerne, dass ich einen Prototyp erstelle, mit dem sich die medizinischen Datensätze verarbeiten lassen. Dafür müsstest du ein Pub/Sub-Thema mit dem Namen Ruby |
Patrick, IT-Administrator |
Hallo Ruby, das hört sich nach einem coolen Projekt an. Ich kann das gleich heute Vormittag für dich machen. Beides lässt sich ganz schnell in Google Cloud erledigen. Patrick |
Unterstützen Sie Patrick dabei, ein Pub/Sub-Thema namens new-lab-report
zu erstellen.
Wenn ein Dienst eine Pub/Sub-Nachricht veröffentlicht, muss sie mit einem Thema gekennzeichnet sein. Der Laborbericht wird dann über den zu erstellenden Dienst verarbeitet. Für jeden vorhandenen Bericht soll eine Nachricht angelegt und veröffentlicht werden.
Als Erstes müssen Sie ein Thema erstellen, das für diese Aufgabe verwendet werden kann.
Jeder Dienst, der das Thema „new-lab-report“ abonniert hat, kann die vom Laborberichtsdienst veröffentlichten Nachrichten nutzen. Im obigen Diagramm sind zwei solche Nutzer, ein E-Mail-Dienst und ein SMS-Dienst, dargestellt.
Klicken Sie auf Fortschritt prüfen.
Denken Sie daran, Ruby darüber zu informieren, dass das Pub/Sub-Thema für sie erstellt wurde.
Patrick, IT-Administrator |
Hallo Ruby, es ist alles fertig. Könntest du mir zeigen, wie dieser Prototyp zusammengestellt wird, wenn du Zeit hast? Können wir das gemeinsam machen? Patrick |
Ruby, Softwareberaterin |
Hallo Patrick, wunderbar. Danke auch für die schnelle Erledigung. Ich werde einen Termin vorschlagen, an dem wir mit dem Prototyp starten können. Ruby |
Unterstützen Sie Ruby beim Einrichten des neuen Laborberichtsdienstes.
Da dieser Dienst für einen Prototyp vorgesehen ist, müssen mit ihm nur zwei Aufgaben ausgeführt werden:
lab-service
:Durch diese Befehle wird die Datei package.json
aktualisiert und enthält jetzt die Abhängigkeiten für den Dienst.
Sie bearbeiten nun die Datei package.json
und legen für Cloud Run fest, wie der Code gestartet werden soll.
Öffnen Sie die Datei package.json
.
Fügen Sie im Abschnitt „scripts“ der Datei package.json
die Codezeile "start": "node index.js",
in Zeile 7 ein (wie unten gezeigt) und speichern Sie die Datei:
"start": "node index.js",
Wenn Sie dies nicht tun, treten während der Bereitstellung Fehler auf.
index.js
und fügen Sie folgenden Code hinzu:const labReport = req.body;
await publishPubSubMessage(labReport);
Die Hauptaufgaben sind:
Dockerfile
und fügen Sie folgenden Code hinzu:Diese Datei legt fest, wie der Cloud Run-Dienst als Paket in einem Container erstellt wird.
deploy.sh
und fügen Sie folgende Befehle hinzu:Aufgrund des Timings wird beim ersten Ausführen des Befehls möglicherweise eine Fehlermeldung ausgegeben. In diesem Fall führen Sie deploy.sh
einfach noch einmal aus.
Wenn die Bereitstellung abgeschlossen wurde, sehen Sie eine Nachricht wie diese:
Der Laborberichtsdienst wurde bereitgestellt und verarbeitet nun die medizinischen Laborergebnisse über HTTP. Sie können nun testen, ob der neue Dienst eingerichtet ist und funktioniert.
Klicken Sie auf Fortschritt prüfen.
Klicken Sie auf Fortschritt prüfen.
Zur Prüfung des Laborberichtsdienstes simulieren Sie nun drei HTTPS POST-Anfragen durch das Laborunternehmen, die jeweils einen Laborbericht enthalten. Für den Test ist in den erstellten Laborberichten nur eine ID enthalten.
post-reports.sh
und fügen Sie folgenden Code hinzu:Dieses Skript verwendet den Befehl curl
zur Übergabe dreier unterschiedlicher IDs an die Labordienst-URL. Jeder Befehl wird einzeln im Hintergrund ausgeführt.
post-reports.sh
ausführbar:Dieses Skript übergibt drei Laborberichte an Ihren Laborberichtsdienst. Prüfen Sie in den Logs die Ergebnisse.
Klicken Sie in der Cloud Console auf Navigationsmenü () > Cloud Run.
Der neu bereitgestellte Dienst lab-report-service sollte jetzt in der Liste Dienste angezeigt werden. Klicken Sie darauf.
Auf der nächsten Seite finden Sie ausführliche Informationen zu Ihrem Laborberichtsdienst. Klicken Sie auf den Tab Logs.
Auf der Logseite werden die Ergebnisse der drei Testberichte dargestellt, die Sie gerade an das Skript übergeben haben. Wenn alles funktioniert hat, sollten die zurückgegebenen HTTP-Codes 204 lauten. Das weist auf eine erfolgreiche Ausführung hin, wie unten dargestellt. Wenn keine Einträge zu sehen sind, scrollen Sie mit der Scrollleiste rechts nach oben und unten. Damit wird das Log neu geladen.
In der nächsten Aufgabe erstellen Sie die SMS- und E-Mail-Dienste. Diese Dienste werden ausgelöst, wenn der Laborberichtsdienst eine Pub/Sub-Nachricht zum Thema „new-lab-report“ veröffentlicht.
Unterstützen Sie Ruby beim Einrichten des neuen E-Mail-Dienstes.
Mit den obigen Befehlen wird die Datei package.json
aktualisiert, die die Anwendung und ihre Abhängigkeiten beschreibt. Für Cloud Run muss festgelegt werden, wie der Code ausgeführt werden soll. Fügen Sie deshalb die Anweisung start
hinzu.
Öffnen Sie die Datei package.json
.
Fügen Sie im Abschnitt „scripts“ die Zeile "start": "node index.js",
hinzu (wie unten gezeigt) und speichern Sie die Datei:
"start": "node index.js",
Wenn Sie dies nicht tun, treten während der Bereitstellung Fehler auf.
index.js
und fügen Sie Folgendes hinzu:Dieser Code wird ausgeführt, wenn Pub/Sub eine Nachricht an den Dienst übergibt. Dabei geschieht Folgendes:
sendEmail()
aufzurufen.Wenn die Kommunikation zwischen den Diensten eingerichtet ist und funktioniert, fügt Ruby den Code der Funktion sendEmail()
hinzu, damit die E-Mail letztendlich gesendet wird.
Dockerfile
und fügen Sie folgenden Code hinzu:Diese Datei legt fest, wie der Cloud Run-Dienst als Paket in einem Container erstellt wird.
deploy.sh
und fügen Sie Folgendes hinzu:deploy.sh
ausführbar:Wenn die Bereitstellung abgeschlossen ist, wird eine Meldung etwa in folgender Form ausgegeben:
Diese Meldung zeigt an, dass der Dienst erfolgreich bereitgestellt wurde. Sie müssen nun dafür sorgen, dass der E-Mail-Dienst ausgelöst wird, wenn eine Pub/Sub-Nachricht verfügbar ist.
Klicken Sie auf Fortschritt prüfen.
Klicken Sie auf Fortschritt prüfen.
Der E-Mail-Dienst soll immer dann ausgelöst werden, wenn eine neue Pub/Sub-Nachricht mithilfe des Themas „new-lab-report“ veröffentlicht wurde. Dazu müssen Sie ein Dienstkonto so konfigurieren, dass es die zugehörigen Anfragen für diesen Dienst automatisch verarbeitet.
Klicken Sie auf Fortschritt prüfen.
Weisen Sie als Nächstes Pub/Sub an, den SMS-Dienst aufzurufen, wenn eine „new-lab-report“-Nachricht veröffentlicht wurde.
Als Nächstes gewähren Sie dem Projekt die Berechtigung, Authentifizierungstokens für Pub/Sub zu erstellen.
Gut gemacht! Der Dienst ist jetzt dafür eingerichtet, auf Cloud Pub/Sub-Nachrichten zu reagieren. Im nächsten Schritt müssen Sie prüfen, ob der Code die Anforderungen erfüllt.
Klicken Sie auf Fortschritt prüfen.
Öffnen Sie anschließend das Log (Navigationsmenü > Cloud Run). Ihnen werden in Ihrem Konto die beiden Cloud Run-Dienste email-service und lab-report-service angezeigt.
Klicken Sie auf email-service und dann auf Logs.
Das Ergebnis dieses von Pub/Sub ausgelösten Dienstes wird angezeigt. Wenn die erwarteten Nachrichten nicht enthalten sind, müssen Sie eventuell nach oben oder unten scrollen, um das Log zu aktualisieren.
Gut gemacht! Der E-Mail-Dienst ist nun in der Lage, Informationen in das Log zu schreiben, wenn eine Nachricht aus der Cloud Pub/Sub-Themenwarteschlange verarbeitet wurde. Als Letztes muss noch der SMS-Dienst geschrieben werden.
Unterstützen Sie Ruby bei der Einrichtung des neuen SMS-Dienstes.
Öffnen Sie die Datei package.json
.
Fügen Sie im Abschnitt „scripts“ die Zeile "start": "node index.js",
hinzu (wie unten gezeigt) und speichern Sie die Datei:
"start": "node index.js",
Wenn Sie dies nicht tun, treten während der Bereitstellung Fehler auf.
index.js
und fügen Sie Folgendes hinzu:Dockerfile
und fügen Sie folgenden Code hinzu:Diese Datei legt fest, wie der Cloud Run-Dienst als Paket in einem Container erstellt wird. Nachdem der Code erstellt wurde, muss als Nächstes der Dienst bereitgestellt werden.
deploy.sh
und fügen Sie folgenden Code hinzu:deploy.sh
ausführbar:Wenn die Bereitstellung abgeschlossen ist, sehen Sie eine Meldung wie diese:
Der SMS-Dienst ist nun bereitgestellt, aber nicht mit dem Cloud Pub/Sub-Dienst verknüpft. Das soll im nächsten Abschnitt geschehen.
Klicken Sie auf Fortschritt prüfen.
Wie beim E-Mail-Dienst muss die Verknüpfung zwischen Cloud Pub/Sub und dem SMS-Dienst so konfiguriert werden, dass die Nachrichten verarbeitet werden können.
Weisen Sie als Nächstes Pub/Sub an, den SMS-Dienst aufzurufen, wenn eine „new-lab-report“-Nachricht veröffentlicht wurde.
Prüfen Sie, ob SMS_SERVICE_URL erfasst wurde:
Erstellen Sie anschließend das Pub/Sub-Abo:
Öffnen Sie anschließend das Log (Navigationsmenü > Cloud Run). Ihnen werden in Ihrem Konto die drei Cloud Run-Dienste „email-service“, „lab-report-service“ und „sms-service“ angezeigt.
Klicken Sie auf sms-service und dann auf Logs. Das Ergebnis dieses von Pub/Sub ausgelösten Dienstes wird angezeigt.
Das Prototypsystem wurde nun erstellt und erfolgreich getestet. Allerdings möchte Patrick jetzt noch im Rahmen der ersten Validierung die Ausfallsicherheit testen.
Was passiert, wenn einer der Dienste ausfällt? Patrick hat dies bereits erlebt, da es durchaus öfter vorkommt.
Unterstützen Sie Ruby dabei, herauszufinden, wie das System ein solches Szenario bewältigen kann. Ruby möchte prüfen, was geschieht, wenn ein Dienst fehlschlägt. Dazu stellt sie eine fehlerhafte Version des E-Mail-Dienstes bereit.
email-service
:Fügen Sie der E-Mail-Dienst-Anwendung ungültigen Text hinzu, um einen Fehler auszulösen.
index.js
und fügen Sie der Funktion sendEmail()
die Zeile throw
hinzu, wie im Folgenden dargestellt. Damit wird eine Ausnahme ausgelöst, die sich so auswirkt, als wäre der E-Mail-Server ausgefallen:Durch das Hinzufügen dieser Codezeilen stützt der Dienst beim Aufruf ab.
Öffnen Sie die Logs des E-Mail-Dienstes, um sich die Logs des fehlerhaften E-Mail-Dienstes anzusehen. Klicken Sie dazu auf Navigationsmenü > Cloud Run.
Wenn Ihnen die drei Cloud Run-Dienste in Ihrem Konto angezeigt werden, klicken Sie auf email-service.
Der E-Mail-Dienst wird aufgerufen, stürzt aber weiterhin ab. Wenn Sie in den Logs ein Stück zurückscrollen, finden Sie die Angabe der Ursache: „Email server is down“. Außerdem sehen Sie, dass der Dienst den Statuscode 500 zurückgibt und dass Pub/Sub weiter versucht, den Dienst aufzurufen.
Wenn Sie die Logs des SMS-Dienstes prüfen, werden Sie feststellen, dass er ordnungsgemäß funktioniert.
Beheben Sie nun den Fehler im E-Mail-Dienst, um die Anwendung wiederherzustellen.
index.js
und entfernen Sie die zuvor eingegebene throw-Zeile. Speichern Sie anschließend die Datei.Ihre Funktion index.js
sendEmail
sollte nun in etwa so aussehen:
Sie sehen dann, wie die E-Mails für die Berichte 12, 34 und 56 letztlich gesendet wurden, der E-Mail-Dienst den Statuscode 204 zurückgegeben und Pub/Sub den Dienst nicht mehr aufgerufen hat. Es gingen keine Daten verloren. Pub/Sub hat kontinuierlich versucht, den Dienst aufzurufen, bis der Aufruf schließlich erfolgreich war. Dies ist die Basis für ein ausfallsicheres System.
Ruby hat mit Ihrer Hilfe erfolgreich ein ausfallsicheres Prototypsystem erstellt. Der Dienst kann nun jedem Kunden automatisch eine E-Mail- und SMS-Nachricht zustellen. Fallen einzelne Dienste zeitweilig aus, führt das System kontinuierlich den Wiederholungsmechanismus aus, sodass keine Daten verloren gehen. Und Ruby erhält die verdiente Anerkennung:
Lily, Gründerin von Pet Theory |
Hallo Ruby, ich kann dir gar nicht sagen, wie dankbar ich dir für deine intensiven Bemühungen bin. Einfach toll, wie du die Dinge in die Hand genommen hast. In kürzester Zeit sind unsere zentralen Systeme komplett modernisiert worden. Wir haben am Freitag ein kleines Treffen, um das zu feiern, und wir würden uns sehr freuen, wenn du unser Ehrengast sein könntest. Lily |
|
Ruby, Pet Theory hat mir großes Lob für deine Arbeit zukommen lassen. Du bist für das Team wirklich eine Bereicherung. Nachdem dieser Auftrag nun beendet ist, möchte ich gerne mit dir über eine höhergestellte Führungsrolle in einem neuen Projekt sprechen. Melody Managing Director Computer Consulting Inc. |
In unseren Schulungen erfahren Sie alles zum optimalen Einsatz unserer Google Cloud-Technologien und können sich entsprechend zertifizieren lassen. Unsere Kurse vermitteln technische Fähigkeiten und Best Practices, damit Sie möglichst schnell mit Google Cloud loslegen und Ihr Wissen fortlaufend erweitern können. Wir bieten On-Demand-, Präsenz- und virtuelle Schulungen für Anfänger wie Fortgeschrittene an, die Sie individuell in Ihrem eigenen Zeitplan absolvieren können. Mit unseren Zertifizierungen weisen Sie nach, dass Sie Experte im Bereich Google Cloud-Technologien sind.
Handbuch zuletzt aktualisiert am 1. Februar 2024
Lab zuletzt am 20. September 2023 getestet
© 2025 Google LLC. Alle Rechte vorbehalten. Google und das Google-Logo sind Marken von Google LLC. Alle anderen Unternehmens- und Produktnamen können Marken der jeweils mit ihnen verbundenen Unternehmen sein.