Prüfpunkte
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
Ein ausfallsicheres asynchrones System mit Cloud Run und Pub/Sub erstellen
GSP650
Übersicht
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.
Lernziele
Aufgaben in diesem Lab:
- Pub/Sub-Thema und -Abo erstellen
- Cloud Run-Dienst erstellen, der HTTP-Anfragen empfängt und Nachrichten in Cloud Pub/Sub veröffentlicht
- Cloud Run-Dienst erstellen, der Nachrichten von Cloud Pub/Sub empfängt
- Pub/Sub-Abo erstellen, das einen Cloud Run-Dienst auslöst
- Ausfallsicherheit des Systems testen
Voraussetzungen
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:
- Daten in eine Firestore-Datenbank importieren
- Serverlose Webanwendung mit Firebase erstellen
- Serverlose Anwendung für das Erstellen von PDF-Dateien in Cloud Run entwickeln
Einrichtung und Anforderungen
Vor dem Klick auf „Start Lab“ (Lab starten)
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:
- Einen Standardbrowser (empfohlen wird Chrome)
- Zeit für die Durchführung des Labs – denken Sie daran, dass Sie ein begonnenes Lab nicht unterbrechen können.
Lab starten und bei der Google Cloud Console anmelden
-
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:
- Schaltfläche Google Cloud Console öffnen
- Restzeit
- Temporäre Anmeldedaten für das Lab
- Ggf. weitere Informationen für dieses Lab
-
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.
Hinweis: Wird das Dialogfeld Konto auswählen angezeigt, klicken Sie auf Anderes Konto verwenden. -
Kopieren Sie bei Bedarf den folgenden Nutzernamen und fügen Sie ihn in das Dialogfeld Anmelden ein.
{{{user_0.username | "Username"}}} 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.
{{{user_0.password | "Password"}}} Sie finden das Passwort auch im Bereich Details zum Lab.
-
Klicken Sie auf Weiter.
Wichtig: Sie müssen die für das Lab bereitgestellten Anmeldedaten verwenden. Nutzen Sie nicht die Anmeldedaten Ihres Google Cloud-Kontos. Hinweis: Wenn Sie Ihr eigenes Google Cloud-Konto für dieses Lab nutzen, können zusätzliche Kosten anfallen. -
Klicken Sie sich durch die nachfolgenden Seiten:
- Akzeptieren Sie die Nutzungsbedingungen.
- Fügen Sie keine Wiederherstellungsoptionen oder Zwei-Faktor-Authentifizierung hinzu (da dies nur ein temporäres Konto ist).
- Melden Sie sich nicht für kostenlose Testversionen an.
Nach wenigen Augenblicken wird die Google Cloud Console in diesem Tab geöffnet.
Cloud Shell aktivieren
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.
- Klicken Sie oben in der Google Cloud Console auf Cloud Shell aktivieren .
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.
- (Optional) Sie können den aktiven Kontonamen mit diesem Befehl auflisten:
- Klicken Sie auf Autorisieren.
Ausgabe:
- (Optional) Sie können die Projekt-ID mit diesem Befehl auflisten:
Ausgabe:
gcloud
finden Sie in Google Cloud in der Übersicht zur gcloud CLI.
Region und Zone einrichten
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:
Szenario
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 |
Aufgabe 1: Architektur
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:
- Die HTTP POST-Anfrage empfangen und den Eingang gegenüber dem medizinischen Labor bestätigen
- Eine E-Mail mit den Testergebnissen an den Kunden senden
- Eine SMS und eine E-Mail mit den Testergebnissen an den Kunden senden
Im Entwurf von Ruby sind die genannten Aktivitäten voneinander getrennt. Für ein solches System ist Folgendes erforderlich:
- Ein Dienst zum Ausführen der Anfrage und Übergeben der Antwort für die medizinischen Ergebnisse
- Ein Dienst zum Senden einer E-Mail mit den Testergebnissen an den Kunden
- Ein Dienst zum Senden einer SMS an den Kunden
- Pub/Sub für die Kommunikation zwischen den Diensten
- Eine serverlose Infrastruktur für die Anwendungsarchitektur
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 |
Pub/Sub-Thema erstellen
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.
- Führen Sie zum Erstellen eines Pub/Sub-Themas folgenden Befehl aus:
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.
- Aktivieren Sie anschließend Cloud Run, mit dem der Code in der Cloud ausgeführt wird:
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 |
Aufgabe 2: Laborberichtsdienst erstellen
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:
- Empfangen der HTTPS POST-Anfrage für den Laborbericht mit den Berichtsdaten
- Veröffentlichen einer Nachricht in Pub/Sub
Code für den Laborberichtsdienst hinzufügen
- Zurück in Cloud Shell klonen Sie das Repository für dieses Lab:
- Wechseln Sie zum Verzeichnis
lab-service
:
- Installieren Sie die folgenden Pakete, die für das Empfangen eingehender HTTPS-Anfragen und für das Veröffentlichen in Pub/Sub benötigt werden:
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.
- Erstellen Sie eine neue Datei mit dem Namen
index.js
und fügen Sie folgenden Code hinzu:
const labReport = req.body;
await publishPubSubMessage(labReport);
Die Hauptaufgaben sind:
- Extrahieren des Laborberichts aus der POST-Anfrage
- Veröffentlichen einer PubSub-Nachricht mit dem aktuell übergebenen Laborbericht
- Erstellen Sie jetzt eine Datei mit dem Namen
Dockerfile
und fügen Sie folgenden Code hinzu:
Diese Datei legt fest, wie der Cloud Run-Dienst als Paket in einem Container erstellt wird.
Laborberichtsdienst bereitstellen
- Erstellen Sie eine Datei mit dem Namen
deploy.sh
und fügen Sie folgende Befehle hinzu:
- Führen Sie in Cloud Shell den folgenden Befehl aus, um die Datei ausführbar zu machen:
- Nun kann der Laborberichtsdienst bereitgestellt werden. Führen Sie dazu das Bereitstellungsskript aus:
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.
Laborberichtsdienst testen
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.
- Geben Sie als Erstes die URL zum Bericht in einer Umgebungsvariablen ein, um die Arbeit damit zu vereinfachen.
- Prüfen Sie, ob LAB_REPORT_SERVICE_URL erfasst wurde:
- Erstellen Sie eine neue Datei mit dem Namen
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.
- Machen Sie das Skript
post-reports.sh
ausführbar:
- Testen Sie nun den Endpunkt des Laborberichtsdienstes durch Übergabe von drei Laborberichten an den Dienst mit dem oben dargestellten Skript:
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.
Aufgabe 3: Der E-Mail-Dienst
Unterstützen Sie Ruby beim Einrichten des neuen E-Mail-Dienstes.
Code für den E-Mail-Dienst hinzufügen
- Wechseln Sie zum Verzeichnis des E-Mail-Dienstes:
- Installieren Sie die folgenden Pakete, damit der Code eingehende HTTPS-Anfragen verarbeiten kann:
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.
- Erstellen Sie eine neue Datei
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:
- Die Pub/Sub-Nachricht wird decodiert und anschließend wird versucht, die Funktion
sendEmail()
aufzurufen. - Wenn dieser Vorgang erfolgreich ausgeführt wird und keine Ausnahme auftritt, wird der Statuscode 204 zurückgegeben und so Pub/Sub mitgeteilt, dass die Nachricht verarbeitet wurde.
- Kommt es zu einer Ausnahme, gibt der Dienst den Statuscode 500 zurück. Dies zeigt Pub/Sub an, dass die Nachricht nicht verarbeitet wurde und deshalb später noch einmal an den Dienst übergeben werden muss.
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.
- Erstellen Sie jetzt eine Datei mit dem Namen
Dockerfile
und fügen Sie folgenden Code hinzu:
Diese Datei legt fest, wie der Cloud Run-Dienst als Paket in einem Container erstellt wird.
E-Mail-Dienst bereitstellen
- Erstellen Sie eine neue Datei mit dem Namen
deploy.sh
und fügen Sie Folgendes hinzu:
- Machen Sie
deploy.sh
ausführbar:
- Stellen Sie den E-Mail-Dienst bereit:
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.
Pub/Sub zum Auslösen des E-Mail-Dienstes konfigurieren
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.
- Erstellen Sie ein neues Dienstkonto für das Auslösen der Dienste, wenn Pub/Sub-Nachrichten veröffentlicht werden:
Klicken Sie auf Fortschritt prüfen.
- Gewähren Sie dem neuen Dienstkonto die Berechtigung zum Aufrufen des E-Mail-Dienstes:
Weisen Sie als Nächstes Pub/Sub an, den SMS-Dienst aufzurufen, wenn eine „new-lab-report“-Nachricht veröffentlicht wurde.
- Um den Zugriff zu vereinfachen, geben Sie die Projektnummer in eine Umgebungsvariable ein:
Als Nächstes gewähren Sie dem Projekt die Berechtigung, Authentifizierungstokens für Pub/Sub zu erstellen.
- Führen Sie dazu folgenden Code aus:
- Geben Sie die URL des E-Mail-Dienstes in eine weitere Umgebungsvariable ein:
- Prüfen Sie, ob EMAIL_SERVICE_URL erfasst wurde:
- Erstellen Sie ein Pub/Sub-Abo für den E-Mail-Dienst:
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.
Laborberichtsdienst und E-Mail-Dienst zusammen testen
- Übergeben Sie den Laborbericht mithilfe des zuvor erstellten Scripts ein weiteres Mal:
-
Ö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.
Aufgabe 4: Der SMS-Dienst
Unterstützen Sie Ruby bei der Einrichtung des neuen SMS-Dienstes.
Code für den SMS-Dienst hinzufügen
- Erstellen Sie ein Verzeichnis für den SMS-Dienst:
- Installieren Sie die für das Empfangen eingehender HTTPS-Anfragen erforderlichen Pakete:
-
Ö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.
- Erstellen Sie eine neue Datei
index.js
und fügen Sie Folgendes hinzu:
- Erstellen Sie jetzt eine Datei mit dem Namen
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.
SMS-Dienst bereitstellen
- Erstellen Sie eine Datei mit dem Namen
deploy.sh
und fügen Sie folgenden Code hinzu:
- Machen Sie
deploy.sh
ausführbar:
- Stellen Sie den SMS-Dienst bereit:
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.
Cloud Pub/Sub für das Auslösen des SMS-Dienstes konfigurieren
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.
- Legen Sie für Pub/Sub Berechtigungen zum Auslösen des SMS-Dienstes fest:
Weisen Sie als Nächstes Pub/Sub an, den SMS-Dienst aufzurufen, wenn eine „new-lab-report“-Nachricht veröffentlicht wurde.
- Als Erstes geben Sie dafür die URL-Adresse des SMS-Dienstes in eine Umgebungsvariable ein:
-
Prüfen Sie, ob SMS_SERVICE_URL erfasst wurde:
echo $SMS_SERVICE_URL -
Erstellen Sie anschließend das Pub/Sub-Abo:
- Führen Sie das Testskript noch einmal aus, um drei Laborberichte an den Laborberichtsdienst zu übergeben:
-
Ö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.
Aufgabe 5: Ausfallsicherheit des Systems 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.
- Wechseln Sie wieder zum Verzeichnis
email-service
:
Fügen Sie der E-Mail-Dienst-Anwendung ungültigen Text hinzu, um einen Fehler auszulösen.
- Bearbeiten Sie
index.js
und fügen Sie der FunktionsendEmail()
die Zeilethrow
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.
- Stellen Sie diese fehlerhafte Version des E-Mail-Dienstes bereit:
- Wenn die Bereitstellung des E-Mail-Dienstes erfolgreich abgeschlossen wurde, übergeben Sie wieder Daten an den Laborbericht. Anschließend prüfen Sie aufmerksam den Logstatus von email-service:
-
Ö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.
- Öffnen Sie die Datei
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:
- Stellen Sie die korrigierte Version des E-Mail-Dienstes bereit:
- Wenn die Bereitstellung abgeschlossen ist, klicken Sie auf das Symbol zum Aktualisieren rechts oben.
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.
Kernpunkte
- Wenn Dienste asynchron über Pub/Sub miteinander kommunizieren, anstatt sich gegenseitig direkt aufzurufen, wird das System dadurch ausfallsicherer.
- Der Trigger für den Laborberichtsdienst ist durch die Verwendung von Pub/Sub unabhängig von den anderen Diensten. Wenn Kunden beispielsweise Laborergebnisse über einen anderen Messaging-Dienst erhalten möchten, kann er ohne Änderung des Laborberichtsdienstes hinzugefügt werden.
- Die Wiederholung der Aufrufe wurde von Cloud Pub/Sub ausgeführt und nicht von den Diensten. Die Dienste müssen nur einen Statuscode über die erfolgreiche oder gescheiterte Ausführung zurückgeben.
- Wenn ein Dienst ausfällt, ist das System in der Lage, sich automatisch selbst zu „regenerieren“, sobald der Dienst aufgrund der Wiederholungsversuche von Pub/Sub wieder online verfügbar ist.
Das wars! Sie haben das Lab erfolgreich abgeschlossen.
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 |
Melody, Managing Director |
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. |
Weitere Informationen
- Medium-Artikel: Cloud Run as an internal async worker
Google Cloud-Schulungen und -Zertifizierungen
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
© 2024 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.