Dans les ateliers du cours Serverless Cloud Run Development, vous allez découvrir un scénario métier fondé sur une entreprise fictive et aider les protagonistes à migrer vers une technologie sans serveur.
Il y a 12 ans, Lily a créé une chaîne de cliniques vétérinaires appelée Pet Theory. Au fil des ans, le nombre de cliniques a augmenté, ainsi que le besoin d'automatisation. Le processus de traitement que Pet Theory a mis en place pour les résultats des tests médicaux en provenance du laboratoire est trop lent et sujet aux erreurs ; Lily souhaite l'améliorer.
Actuellement, Patrick, l'administrateur informatique de Pet Theory, traite manuellement les résultats des tests. Chaque fois qu'il reçoit les résultats d'un test, il envoie un courrier électronique au client dont l'animal a été testé. À l'aide de son téléphone, il lui envoie ensuite les résultats du test par SMS.
Patrick travaille avec Ruby, une consultante en logiciels, pour concevoir un système plus évolutif. Ils souhaitent créer une solution qui nécessite peu de maintenance. Ils ont donc opté pour une technologie sans serveur.
Objectifs
Dans cet atelier, vous allez apprendre à effectuer les tâches suivantes :
Créer un sujet et un abonnement Pub/Sub
Créer un service Cloud Run qui reçoit des requêtes HTTP et publie des messages dans Cloud Pub/Sub
Créer un service Cloud Run qui reçoit des messages de Cloud Pub/Sub
Créer un abonnement Pub/Sub qui déclenche un service Cloud Run
Tester la résilience d'un système
Prérequis
Dans cet atelier, nous considérons que vous connaissez la console Cloud et les environnements de shell. Cet atelier fait partie d'une série. Il est recommandé de suivre les ateliers précédents, mais ce n'est pas obligatoire :
Remarque : Pour cet atelier, connectez-vous à la console Google Cloud en tant que Username 1. Si vous utilisez un identifiant différent, vous rencontrerez des erreurs au cours de l'atelier.
Avant de cliquer sur le bouton "Démarrer l'atelier"
Lisez ces instructions. Les ateliers sont minutés, et vous ne pouvez pas les mettre en pause. Le minuteur, qui démarre lorsque vous cliquez sur Démarrer l'atelier, indique combien de temps les ressources Google Cloud resteront accessibles.
Cet atelier pratique vous permet de suivre les activités dans un véritable environnement cloud, et non dans un environnement de simulation ou de démonstration. Des identifiants temporaires vous sont fournis pour vous permettre de vous connecter à Google Cloud le temps de l'atelier.
Pour réaliser cet atelier :
Vous devez avoir accès à un navigateur Internet standard (nous vous recommandons d'utiliser Chrome).
Remarque : Ouvrez une fenêtre de navigateur en mode incognito (recommandé) ou de navigation privée pour effectuer cet atelier. Vous éviterez ainsi les conflits entre votre compte personnel et le compte temporaire de participant, qui pourraient entraîner des frais supplémentaires facturés sur votre compte personnel.
Vous disposez d'un temps limité. N'oubliez pas qu'une fois l'atelier commencé, vous ne pouvez pas le mettre en pause.
Remarque : Utilisez uniquement le compte de participant pour cet atelier. Si vous utilisez un autre compte Google Cloud, des frais peuvent être facturés à ce compte.
Démarrer l'atelier et se connecter à la console Google Cloud
Cliquez sur le bouton Démarrer l'atelier. Si l'atelier est payant, une boîte de dialogue s'affiche pour vous permettre de sélectionner un mode de paiement.
Sur la gauche, vous trouverez le panneau "Détails concernant l'atelier", qui contient les éléments suivants :
Le bouton "Ouvrir la console Google Cloud"
Le temps restant
Les identifiants temporaires que vous devez utiliser pour cet atelier
Des informations complémentaires vous permettant d'effectuer l'atelier
Cliquez sur Ouvrir la console Google Cloud (ou effectuez un clic droit et sélectionnez Ouvrir le lien dans la fenêtre de navigation privée si vous utilisez le navigateur Chrome).
L'atelier lance les ressources, puis ouvre la page "Se connecter" dans un nouvel onglet.
Conseil : Réorganisez les onglets dans des fenêtres distinctes, placées côte à côte.
Remarque : Si la boîte de dialogue Sélectionner un compte s'affiche, cliquez sur Utiliser un autre compte.
Si nécessaire, copiez le nom d'utilisateur ci-dessous et collez-le dans la boîte de dialogue Se connecter.
{{{user_0.username | "Username"}}}
Vous trouverez également le nom d'utilisateur dans le panneau "Détails concernant l'atelier".
Cliquez sur Suivant.
Copiez le mot de passe ci-dessous et collez-le dans la boîte de dialogue Bienvenue.
{{{user_0.password | "Password"}}}
Vous trouverez également le mot de passe dans le panneau "Détails concernant l'atelier".
Cliquez sur Suivant.
Important : Vous devez utiliser les identifiants fournis pour l'atelier. Ne saisissez pas ceux de votre compte Google Cloud.
Remarque : Si vous utilisez votre propre compte Google Cloud pour cet atelier, des frais supplémentaires peuvent vous être facturés.
Accédez aux pages suivantes :
Acceptez les conditions d'utilisation.
N'ajoutez pas d'options de récupération ni d'authentification à deux facteurs (ce compte est temporaire).
Ne vous inscrivez pas à des essais sans frais.
Après quelques instants, la console Cloud s'ouvre dans cet onglet.
Remarque : Pour accéder aux produits et services Google Cloud, cliquez sur le menu de navigation ou saisissez le nom du service ou du produit dans le champ Recherche.
Activer Cloud Shell
Cloud Shell est une machine virtuelle qui contient de nombreux outils pour les développeurs. Elle comprend un répertoire d'accueil persistant de 5 Go et s'exécute sur Google Cloud. Cloud Shell vous permet d'accéder via une ligne de commande à vos ressources Google Cloud.
Cliquez sur Activer Cloud Shell en haut de la console Google Cloud.
Passez les fenêtres suivantes :
Accédez à la fenêtre d'informations de Cloud Shell.
Autorisez Cloud Shell à utiliser vos identifiants pour effectuer des appels d'API Google Cloud.
Une fois connecté, vous êtes en principe authentifié et le projet est défini sur votre ID_PROJET : . Le résultat contient une ligne qui déclare l'ID_PROJET pour cette session :
Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}
gcloud est l'outil de ligne de commande pour Google Cloud. Il est préinstallé sur Cloud Shell et permet la complétion par tabulation.
(Facultatif) Vous pouvez lister les noms des comptes actifs à l'aide de cette commande :
gcloud auth list
Cliquez sur Autoriser.
Résultat :
ACTIVE: *
ACCOUNT: {{{user_0.username | "ACCOUNT"}}}
To set the active account, run:
$ gcloud config set account `ACCOUNT`
(Facultatif) Vous pouvez lister les ID de projet à l'aide de cette commande :
gcloud config list project
Résultat :
[core]
project = {{{project_0.project_id | "PROJECT_ID"}}}
Remarque : Pour consulter la documentation complète sur gcloud, dans Google Cloud, accédez au guide de présentation de la gcloud CLI.
Définir votre région et votre zone
Certaines ressources Compute Engine sont hébergées dans des régions et des zones. Une région est un emplacement géographique spécifique où vous pouvez exécuter vos ressources. Chaque région se compose d'une ou plusieurs zones.
Exécutez les commandes gcloud suivantes dans la console Cloud pour définir la région et la zone par défaut de votre atelier :
gcloud config set compute/zone "{{{project_0.default_zone|ZONE}}}"
export ZONE=$(gcloud config get compute/zone)
gcloud config set compute/region "{{{project_0.default_region|REGION}}}"
export REGION=$(gcloud config get compute/region)
Scénario
Pet Theory souhaite automatiser son processus de partage des résultats de tests avec les clients. Étant donné que la croissance du volume de rendez-vous devenait difficile à gérer, Lily a décidé de demander de l'aide à Ruby...
Lily, fondatrice de Pet Theory
Bonjour Ruby,
Merci d'avoir résolu le problème du portail d'assurance.
Je me demandais s'il était possible de faire quelque chose concernant les résultats des tests médicaux. Nous devons trouver un moyen plus efficace de les envoyer aux clients.
Lily
Ruby, Consultante en logiciels
Bonjour Lily,
Bien sûr, je vais voir ce que je peux faire. J'ai quelques idées qui pourraient peut-être améliorer les choses.
Ruby
Tâche 1 : Architecture
Pet Theory fait appel à une entreprise externe pour réaliser les tests médicaux. Une fois que le laboratoire médical a effectué les tests,
les résultats sont envoyés via une requête POST HTTP(s) au point de terminaison Web de Pet Theory. L'illustration ci-dessous présente l'architecture générale.
Après avoir examiné le processus général, Ruby pense qu'il est possible de concevoir un système qui permettrait à Pet Theory de traiter les opérations suivantes :
Recevoir la requête POST HTTP et envoyer un accusé de réception au laboratoire médical
Envoyer les résultats du test par e-mail au client
Envoyer au client un SMS et un e-mail contenant les résultats du test
Le système de Ruby permet d'isoler chacune de ces tâches et nécessite :
Un service pour exécuter la requête et envoyer la réponse des résultats médicaux
Un service pour envoyer les résultats des tests au client par e-mail
Un service permettant d'envoyer un SMS au client
Pub/Sub pour la communication interservices
Une infrastructure sans serveur pour l'architecture de l'application
Ruby cherche à développer un code plus facile à écrire et contenant moins de bugs en s'appuyant sur des fonctions à usage unique.
Ruby, Consultante en logiciels
Bonjour Patrick,
Lily souhaite que je crée un prototype visant à faciliter le traitement des dossiers médicaux.
Pour commencer, pourriez-vous configurer un sujet Pub/Sub nommé new-lab-report ?
Ruby
Patrick, Administrateur informatique
Bonjour Ruby,
C'est un projet vraiment intéressant. Je pense pouvoir terminer cela dès ce matin. Avec Google Cloud, les deux configurations sont vraiment rapides à mettre en place.
Patrick
Créer un sujet Pub/Sub
Aidez Patrick à créer un sujet Pub/Sub appelé new-lab-report.
Lorsqu'un service publie un message Pub/Sub, ce message doit être tagué avec un sujet. Le rapport du laboratoire est consommé via le service à créer et publie un message pour chaque rapport trouvé.
Vous devez d'abord créer un sujet qui peut être utilisé pour cette tâche.
Exécutez la commande suivante pour créer un sujet Pub/Sub :
gcloud pubsub topics create new-lab-report
Tout service abonné au sujet "new-lab-report" pourra consommer le message publié par le service de rapport du laboratoire. Dans le diagramme ci-dessus, vous pouvez voir deux de ces services, le service de courrier électronique et le service SMS.
Activez ensuite Cloud Run. Ce service exécutera votre code dans le cloud :
gcloud services enable run.googleapis.com
Cliquez sur Vérifier ma progression pour valider l'objectif.
Créer un sujet Pub/Sub
N'oubliez pas d'informer Ruby que le sujet Pub/Sub est prêt à être utilisé.
Patrick, Administrateur informatique
Bonjour Ruby,
C'est fait.
Si vous avez un peu de temps, j'aimerais voir comment le prototype est mis en place. Peut-on le faire ensemble ?
Patrick
Ruby, Consultante en logiciels
Bonjour Patrick,
Super ! Merci d'avoir fait si vite. Je vais caler une heure pour qu'on travaille dessus.
Ruby
Tâche 2 : Créer le service de rapport du laboratoire
Aidez Ruby à configurer le nouveau service de rapport du laboratoire.
Ce service sera utilisé pour le prototypage. Son rôle se limite à ces deux opérations :
Recevoir le rapport HTTPS POST du laboratoire contenant les données du rapport
Publier un message sur Pub/Sub
Ajouter du code pour le service de rapport du laboratoire
Repassez à Cloud Shell et clonez le dépôt nécessaire pour cet atelier :
Ces commandes mettent à jour le fichier package.json pour indiquer les dépendances nécessaires à ce service.
Vous allez maintenant modifier le fichier package.json pour indiquer à Cloud Run comment lancer votre code.
Ouvrez le fichier package.json.
Dans la section "scripts" du fichier package.json, ajoutez la ligne de code "start": "node index.js", sur la ligne 7 (comme indiqué ci-dessous), puis enregistrez le fichier :
"scripts": {
"start": "node index.js",
"test": "echo \"Error: no test specified\" && exit 1"
},
Remarque : Veillez à ajouter le code exactement tel qu'il a été fourni, en incluant la virgule finale.
"start": "node index.js",
Si vous ne respectez pas cette consigne, vous rencontrerez des erreurs au cours du déploiement.
Créez un fichier nommé index.js et ajoutez-y le code suivant :
const {PubSub} = require('@google-cloud/pubsub');
const pubsub = new PubSub();
const express = require('express');
const app = express();
const bodyParser = require('body-parser');
app.use(bodyParser.json());
const port = process.env.PORT || 8080;
app.listen(port, () => {
console.log('Listening on port', port);
});
app.post('/', async (req, res) => {
try {
const labReport = req.body;
await publishPubSubMessage(labReport);
res.status(204).send();
}
catch (ex) {
console.log(ex);
res.status(500).send(ex);
}
})
async function publishPubSubMessage(labReport) {
const buffer = Buffer.from(JSON.stringify(labReport));
await pubsub.topic('new-lab-report').publish(buffer);
}
Ces deux lignes font l'essentiel du travail du service :
const labReport = req.body;await publishPubSubMessage(labReport);
Plus précisément, elles déclenchent les deux actions suivantes :
Extraction du rapport du laboratoire de la requête POST
Publication d'un message PubSub contenant le rapport récent du laboratoire
Créez maintenant un fichier nommé Dockerfile et ajoutez-y le code ci-dessous :
FROM node:18
WORKDIR /usr/src/app
COPY package.json package*.json ./
RUN npm install --only=production
COPY . .
CMD [ "npm", "start" ]
Ce fichier décrit comment créer un package du service Cloud Run dans un conteneur.
Déployer le service de rapport du laboratoire
Créez un fichier nommé deploy.sh et collez-y les commandes suivantes :
Dans Cloud Shell, exécutez la commande suivante pour rendre ce fichier exécutable :
chmod u+x deploy.sh
Il est temps de déployer le service de rapport du laboratoire. Exécutez le script de déploiement :
./deploy.sh
Un message d'erreur, imputable à un problème de synchronisation, peut vous être renvoyé la première fois que vous exécutez cette commande. Dans ce cas, il suffit d'exécuter à nouveau le script deploy.sh.
Une fois le déploiement terminé, un message semblable à celui-ci s'affiche :
Service [lab-report-service] revision [lab-report-service-00001] has been deployed and is serving traffic at https://lab-report-service-[hash].a.run.app
Bravo ! Le service de rapport du laboratoire a bien été déployé et va consommer les résultats du laboratoire médical via HTTP. Vous pouvez maintenant vérifier si le nouveau service est opérationnel.
Cliquez sur Vérifier ma progression pour valider l'objectif.
Déployer le service de rapport de laboratoire : Compiler
Cliquez sur Vérifier ma progression pour valider l'objectif.
Déployer le service de rapport du laboratoire : Créer une révision
Tester le service de rapport du laboratoire
Pour valider le service de rapport de laboratoire, simulez trois requêtes HTTPS POST effectuées par le laboratoire médical, chacune contenant un rapport de laboratoire. À des fins de tests, les rapports de laboratoire créés ne contiendront qu'un ID.
Tout d'abord, placez l'URL du rapport dans une variable d'environnement pour simplifier son utilisation.
Le script ci-dessus utilise la commande curl pour publier trois identifiants distincts dans l'URL du service du laboratoire. Chaque commande sera exécutée individuellement en arrière-plan.
Rendez le script post-reports.sh exécutable :
chmod u+x post-reports.sh
Testez maintenant le point de terminaison du service de rapport du laboratoire en publiant sur ce service trois rapports de laboratoire à l'aide du script décrit ci-dessus :
./post-reports.sh
Ce script a publié trois rapports de laboratoire sur le service de rapport du laboratoire. Consultez les journaux pour voir les résultats.
Dans la console Cloud, cliquez sur le menu de navigation () puis sur Cloud Run.
Vous devriez maintenant voir le service de rapport du laboratoire nouvellement déployé dans la liste Services. Cliquez dessus.
La page suivante affiche des détails sur le service de rapport du laboratoire. Cliquez sur l'onglet Journaux.
Sur la page "Journaux" se trouvent les résultats concernant les trois rapports de test que vous venez de poster à l'aide du script. Normalement, les codes HTTP renvoyés sont 204, ce qui signifie OK - pas de contenu, comme indiqué ci-dessous. Si vous ne voyez pas d'entrée, essayez de faire défiler la page à l'aide de la barre de défilement située à droite. Cela permet d'actualiser le journal.
La prochaine tâche consiste à écrire les services de SMS et de courrier électronique. Ces services sont déclenchés lorsque le service de rapport du laboratoire publie un message Pub/Sub sur le sujet "new-lab-report".
Tâche 3 : Le service de courrier électronique
Aidez Ruby à mettre en place le nouveau service de courrier électronique.
Ajouter du code pour le service de courrier électronique
Accédez au répertoire du service de courrier électronique :
cd ~/pet-theory/lab05/email-service
Installez ces packages pour que le code soit en mesure de gérer les requêtes HTTPS entrantes :
npm install express
npm install body-parser
La commande ci-dessus mettra à jour le fichier package.json, lequel décrit l'application et ses dépendances. Cloud Run doit savoir comment exécuter le code. Ajoutez donc une instruction de démarrage pour qu'il sache quoi faire.
Ouvrez le fichier package.json.
Dans la section "scripts", ajoutez la ligne "start": "node index.js", comme indiqué ci-dessous et enregistrez le fichier :
"scripts": {
"start": "node index.js",
"test": "echo \"Error: no test specified\" && exit 1"
},
Remarque : Veillez à ajouter le code exactement tel qu'il a été fourni, en incluant la virgule finale.
"start": "node index.js",
Si vous ne respectez pas cette consigne, vous rencontrerez des erreurs au cours du déploiement.
Créez un fichier appelé index.js et ajoutez-y ce qui suit :
Ce code s'exécute lorsque Pub/Sub publie un message sur le service. Voici comment il procède :
Il décode le message Pub/Sub et essaie ensuite d'appeler la fonction sendEmail().
Si l'opération réussit et qu'aucune exception n'est levée, il renvoie le code d'état 204 pour que Pub/Sub sache que le message a été traité.
S'il y a une exception, le service renvoie le code d'état 500 pour que Pub/Sub sache que le message n'a pas été traité et qu'il doit le renvoyer ultérieurement au service.
Une fois que la communication entre les services fonctionne, Ruby ajoute un code à la fonction sendEmail() pour envoyer effectivement l'e-mail.
Créez maintenant un fichier nommé Dockerfile et ajoutez-y le code ci-dessous :
FROM node:18
WORKDIR /usr/src/app
COPY package.json package*.json ./
RUN npm install --only=production
COPY . .
CMD [ "npm", "start" ]
Ce fichier décrit comment créer un package du service Cloud Run dans un conteneur.
Déployer le service de courrier électronique
Créez un fichier appelé deploy.sh et ajoutez-y le contenu suivant :
Lorsque le déploiement est terminé, un message semblable à celui-ci s'affiche :
Service [email-service] revision [email-service-00001] has been deployed and is serving traffic at https://email-service-[hash].a.run.app
Le service a bien été déployé. Vous devez maintenant vous assurer que le service de courrier électronique est déclenché lorsqu'un message Pub/Sub est disponible.
Cliquez sur Vérifier ma progression pour valider l'objectif.
Déployer le service de courrier électronique : Compiler
Cliquez sur Vérifier ma progression pour valider l'objectif.
Déployer le service de courrier électronique : Créer une révision
Configurer Pub/Sub pour déclencher le service de courrier électronique
Chaque fois qu'un nouveau message Pub/Sub est publié en utilisant la rubrique "new-lab-report", il doit déclencher le service de courrier électronique. Pour réaliser cette tâche, vous allez configurer un compte de service qui traitera automatiquement les requêtes associées à ce service.
Créez un compte de service destiné à déclencher les services répondant aux messages Pub/Sub :
gcloud iam service-accounts create pubsub-cloud-run-invoker --display-name "PubSub Cloud Run Invoker"
Cliquez sur Vérifier ma progression pour valider l'objectif.
Créer un compte de service
Accordez au compte de service que vous venez de créer l'autorisation d'appeler le service de courrier électronique :
Bravo ! Le service est maintenant configuré pour répondre aux messages Cloud Pub/Sub. L'étape suivante consiste à valider le code pour confirmer qu'il répond aux exigences.
Cliquez sur Vérifier ma progression pour valider l'objectif.
Créer l'abonnement Pub/Sub
Tester ensemble le service de rapport du laboratoire et le service de courrier électronique
À l'aide du script créé précédemment, publiez à nouveau les rapports du laboratoire :
~/pet-theory/lab05/lab-service/post-reports.sh
Ouvrez ensuite le journal (Menu de navigation > Cloud Run). Vous pouvez voir les deux services Cloud Run (email-service et lab-report-service) dans votre compte.
Cliquez sur email-service, puis sur Journaux. Vous devez voir le résultat du déclenchement de ce service par Pub/Sub. Si vous ne voyez pas les messages que vous attendez, faites défiler le journal à l'aide de la barre de défilement pour forcer son actualisation.
Bravo ! Le service de messagerie électronique est désormais en mesure d'écrire des informations dans le journal chaque fois qu'un message est traité à partir de la file d'attente des sujets Cloud Pub/Sub. La dernière tâche consiste à créer le service SMS.
Tâche 4 : Le service SMS
Aidez Ruby à mettre en place le nouveau service SMS.
Ajouter du code pour le service SMS
Créez un répertoire pour le service SMS :
cd ~/pet-theory/lab05/sms-service
Installez les packages nécessaires pour la réception des requêtes HTTPS entrantes :
npm install express
npm install body-parser
Ouvrez le fichier package.json.
Dans la section "scripts", ajoutez la ligne "start": "node index.js", comme indiqué ci-dessous et enregistrez le fichier :
...
"scripts": {
"start": "node index.js",
"test": "echo \"Error: no test specified\" && exit 1"
},
...
Remarque : Veillez à ajouter le code exactement tel qu'il a été fourni, en incluant la virgule finale.
"start": "node index.js",
Si vous ne respectez pas cette consigne, vous rencontrerez des erreurs au cours du déploiement.
Créez un fichier appelé index.js et ajoutez-y ce qui suit :
Créez maintenant un fichier nommé Dockerfile et ajoutez-y le code ci-dessous :
FROM node:18
WORKDIR /usr/src/app
COPY package.json package*.json ./
RUN npm install --only=production
COPY . .
CMD [ "npm", "start" ]
Ce fichier décrit comment créer un package du service Cloud Run dans un conteneur. Maintenant que le code a été créé, l'étape suivante consiste à déployer le service.
Déployer le service SMS
Créez un fichier nommé deploy.sh et ajoutez-y le code suivant :
Une fois le déploiement terminé, un message semblable à celui-ci s'affiche :
Service [sms-service] revision [sms-service-00001] has been deployed and is serving traffic at https://sms-service-[hash].a.run.app
Le service SMS a bien été déployé, mais il n'est pas lié au service Cloud Pub/Sub. Corrigez cela dans la section suivante.
Cliquez sur Vérifier ma progression pour valider l'objectif.
Déployer le service SMS
Configurer Cloud Pub/Sub pour déclencher le service SMS
Comme pour le service de courrier électronique, le lien entre Cloud Pub/Sub et le service SMS doit être configuré pour que les messages puissent être consommés.
Définissez les autorisations nécessaires pour permettre à Pub/Sub de déclencher le service SMS :
Exécutez à nouveau le script de test pour publier trois rapports sur le service de rapport du laboratoire :
~/pet-theory/lab05/lab-service/post-reports.sh
Ouvrez ensuite le journal (Menu de navigation > Cloud Run). Les trois services Cloud Run (email-service, lab-report-service et sms-service) sont affichés dans votre compte.
Cliquez sur sms-service, puis sur Journaux. Vous verrez le résultat de ce service déclenché par Pub/Sub.
Le prototype du système a été créé et testé avec succès. Toutefois, Patrick est préoccupé par le fait que la résilience n'a pas été testée dans le cadre du processus de validation initial.
Tâche 5 : Tester la résilience du système
Que se passe-t-il si l'un des services est défectueux ? Patrick a déjà été confronté à cette situation courante.
Aidez Ruby à étudier comment faire pour que le système puisse gérer ce scénario. Elle veut tester ce qui se passe lorsqu'un service est défectueux, en déployant une mauvaise version du service de courrier électronique.
Revenez au répertoire email-service :
cd ~/pet-theory/lab05/email-service
Ajoutez du texte non valide dans l'application du service de courrier électronique pour provoquer une erreur.
Modifiez le fichier index.js et ajoutez la ligne throw à la fonction sendEmail(), comme indiqué ci-dessous. Une exception est alors renvoyée, comme si le serveur de messagerie était en panne :
...
function sendEmail() {
throw 'Email server is down';
console.log('Sending email');
}
...
L'ajout de ce code permet de faire planter le service lorsqu'il est appelé.
Déployez cette version défaillante du service de courrier électronique :
./deploy.sh
Une fois le déploiement du service de courrier électronique terminé, publiez à nouveau les données dans les rapports du laboratoire, puis examinez de près l'état du journal email-service :
~/pet-theory/lab05/lab-service/post-reports.sh
Ouvrez les journaux du service de courrier électronique pour afficher les journaux du service défaillant : menu de navigation > Cloud Run.
Lorsque vous voyez les trois services "Cloud Run" dans votre compte, cliquez sur email-service.
Le service de courrier électronique est appelé, mais il continue à planter. Si vous remontez dans les journaux, vous découvrirez la cause : "Email server is down" (Le serveur de messagerie est en panne). Vous verrez également que le service renvoie le code d'état 500, et que Pub/Sub continue à tenter d'appeler le service.
Si vous vérifiez les journaux du service SMS, vous verrez qu'il fonctionne correctement.
Corrigez maintenant l'erreur dans le service de courrier électronique pour restaurer l'application.
Ouvrez le fichier index.js et supprimez la ligne de renvoi de l'exception que vous avez saisie précédemment, puis enregistrez le fichier.
La fonction sendEmail de votre fichier index.js ressemble maintenant à ceci :
function sendEmail() {
console.log('Sending email');
}
Déployez la version corrigée du service de courrier électronique :
./deploy.sh
Une fois le déploiement terminé, cliquez sur l'icône d'actualisation dans l'angle supérieur droit.
Vous verrez que les e-mails des rapports 12, 34 et 56 ont finalement été envoyés, le service de courrier électronique a renvoyé le code d'état 204, et Pub/Sub a cessé d'appeler le service. Aucune donnée n'a été perdue ; Pub/Sub a refait des tentatives jusqu'à ce que ça marche. C'est la base d'un système robuste !
Enseignements
Si les services communiquent entre eux de manière asynchrone via Pub/Sub au lieu de s'appeler directement, le système peut être plus résilient.
Grâce à Pub/Sub, le déclenchement du service de rapport du laboratoire est indépendant des autres services. Par exemple, si les clients souhaitent également recevoir les résultats du laboratoire via un autre service de messagerie, il est possible de l'ajouter sans avoir à mettre à jour le service de rapport du laboratoire.
Cloud Pub/Sub a géré les tentatives, les services n'ont pas eu à le faire. Les services sont uniquement tenus de renvoyer un code d'état : succès ou échec.
Dans le cas où un service s'interrompt, le système est capable de se "réparer" automatiquement lorsque le service est remis en ligne, par le biais de nouvelles tentatives effectuées par Pub/Sub.
Félicitations !
Grâce à votre aide, Ruby a réussi à créer un prototype de système résilient. Le service est capable d'envoyer automatiquement à chaque client un e-mail et un SMS. En cas d'interruption temporaire de certains services, le système met en place un mécanisme de répétition de tentatives afin qu'aucune donnée ne soit perdue. Ruby reçoit des félicitations bien méritées...
Lily, fondatrice de Pet Theory
Bonjour Ruby,
Aucun mot ne peut exprimer ma gratitude pour votre travail et votre professionnalisme.
En peu de temps, nos systèmes de base ont été totalement remaniés.
Nous organisons une petite réception vendredi pour fêter cela et nous espérons que vous serez des nôtres !
Lily
Melody, Directrice générale
Bonjour Ruby,
J'ai reçu des éloges de la part de Pet Theory pour votre travail. Vous avez beaucoup apporté à l'équipe.
Maintenant que cette mission est terminée, j'aimerais vous parler d'un rôle plus important que vous pourriez avoir dans un nouveau projet.
Les formations et certifications Google Cloud vous aident à tirer pleinement parti des technologies Google Cloud. Nos cours portent sur les compétences techniques et les bonnes pratiques à suivre pour être rapidement opérationnel et poursuivre votre apprentissage. Nous proposons des formations pour tous les niveaux, à la demande, en salle et à distance, pour nous adapter aux emplois du temps de chacun. Les certifications vous permettent de valider et de démontrer vos compétences et votre expérience en matière de technologies Google Cloud.
Dernière mise à jour du manuel : 1er février 2024
Dernier test de l'atelier : 20 septembre 2023
Copyright 2025 Google LLC. Tous droits réservés. Google et le logo Google sont des marques de Google LLC. Tous les autres noms d'entreprises et de produits peuvent être des marques des entreprises auxquelles ils sont associés.
Les ateliers créent un projet Google Cloud et des ressources pour une durée déterminée.
Les ateliers doivent être effectués dans le délai imparti et ne peuvent pas être mis en pause. Si vous quittez l'atelier, vous devrez le recommencer depuis le début.
En haut à gauche de l'écran, cliquez sur Démarrer l'atelier pour commencer.
Utilisez la navigation privée
Copiez le nom d'utilisateur et le mot de passe fournis pour l'atelier
Cliquez sur Ouvrir la console en navigation privée
Connectez-vous à la console
Connectez-vous à l'aide des identifiants qui vous ont été attribués pour l'atelier. L'utilisation d'autres identifiants peut entraîner des erreurs ou des frais.
Acceptez les conditions d'utilisation et ignorez la page concernant les ressources de récupération des données.
Ne cliquez pas sur Terminer l'atelier, à moins que vous n'ayez terminé l'atelier ou que vous ne vouliez le recommencer, car cela effacera votre travail et supprimera le projet.
Ce contenu n'est pas disponible pour le moment
Nous vous préviendrons par e-mail lorsqu'il sera disponible
Parfait !
Nous vous contacterons par e-mail s'il devient disponible
Un atelier à la fois
Confirmez pour mettre fin à tous les ateliers existants et démarrer celui-ci
Utilisez la navigation privée pour effectuer l'atelier
Ouvrez une fenêtre de navigateur en mode navigation privée pour effectuer cet atelier. Vous éviterez ainsi les conflits entre votre compte personnel et le compte temporaire de participant, qui pourraient entraîner des frais supplémentaires facturés sur votre compte personnel.
Utilisez Cloud Run et Pub/Sub pour faire fonctionner un service qui gère la communication par HTTP POST, par e-mail et par SMS.
Durée :
1 min de configuration
·
Accessible pendant 60 min
·
Terminé après 60 min