![](https://cdn.qwiklabs.com/assets/labs/start_lab-f45aca49782d4033c3ff688160387ac98c66941d.png)
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 restart it, you'll have to start 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
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.
Dans cet atelier, vous allez apprendre à effectuer les tâches suivantes :
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 :
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 vous-même les activités dans un véritable environnement cloud, et non dans un environnement de simulation ou de démonstration. Nous vous fournissons des identifiants temporaires pour vous connecter à Google Cloud le temps de l'atelier.
Pour réaliser cet atelier :
Cliquez sur le bouton Démarrer l'atelier. Si l'atelier est payant, un pop-up 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 :
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.
Si nécessaire, copiez le nom d'utilisateur ci-dessous et collez-le dans la boîte de dialogue Se connecter.
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.
Vous trouverez également le mot de passe dans le panneau Détails concernant l'atelier.
Cliquez sur Suivant.
Accédez aux pages suivantes :
Après quelques instants, la console Cloud s'ouvre dans cet onglet.
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.
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 YOUR_PROJECT_ID (VOTRE_ID_PROJET) pour cette session :
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.
Cliquez sur Autoriser.
Vous devez à présent obtenir le résultat suivant :
Résultat :
Résultat :
Exemple de résultat :
gcloud
, dans Google Cloud, accédez au guide de présentation de la gcloud CLI.
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 :
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 |
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 :
Le système de Ruby permet d'isoler chacune de ces tâches et nécessite :
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é 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 |
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.
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.
Cliquez sur Vérifier ma progression pour valider l'objectif.
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 |
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 :
lab-service
: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 :
"start": "node index.js",
Si vous ne respectez pas cette consigne, vous rencontrerez des erreurs au cours du déploiement.
index.js
et ajoutez-y le code suivant :const labReport = req.body;
await publishPubSubMessage(labReport);
Plus précisément, elles déclenchent les deux actions suivantes :
Dockerfile
et ajoutez-y le code ci-dessous :Ce fichier décrit comment créer un package du service Cloud Run dans un conteneur.
deploy.sh
et collez-y les commandes suivantes :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 :
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.
Cliquez sur Vérifier ma progression pour valider l'objectif.
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.
post-reports.sh
et ajoutez-y le code ci-dessous :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.
post-reports.sh
exécutable :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".
Aidez Ruby à mettre en place le nouveau service de courrier électronique.
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 :
"start": "node index.js",
Si vous ne respectez pas cette consigne, vous rencontrerez des erreurs au cours du déploiement.
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 :
sendEmail()
.Une fois que la communication entre les services fonctionne, Ruby ajoute un code à la fonction sendEmail()
pour envoyer effectivement l'e-mail.
Dockerfile
et ajoutez-y le code ci-dessous :Ce fichier décrit comment créer un package du service Cloud Run dans un conteneur.
deploy.sh
et ajoutez-y le contenu suivant :deploy.sh
exécutable :Lorsque le déploiement est terminé, un message semblable à celui-ci s'affiche :
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.
Cliquez sur Vérifier ma progression pour valider l'objectif.
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.
Cliquez sur Vérifier ma progression pour valider l'objectif.
Ensuite, indiquez à Pub/Sub qu'il doit appeler le service SMS lorsqu'un message de type "new-lab-report" (nouveau rapport de laboratoire) est publié.
Ensuite, vous devez autoriser le projet à créer des jetons d'authentification Pub/Sub.
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.
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.
Aidez Ruby à mettre en place le nouveau service SMS.
Ouvrez le fichier package.json
.
Dans la section "scripts", ajoutez la ligne "start": "node index.js",
comme indiqué ci-dessous et enregistrez le fichier :
"start": "node index.js",
Si vous ne respectez pas cette consigne, vous rencontrerez des erreurs au cours du déploiement.
index.js
et ajoutez-y ce qui suit :Dockerfile
et ajoutez-y le code ci-dessous :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.
deploy.sh
et ajoutez-y le code suivant :deploy.sh
exécutable :Une fois le déploiement terminé, un message semblable à celui-ci s'affiche :
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.
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.
Ensuite, indiquez à Pub/Sub qu'il doit appeler le service SMS lorsqu'un message de type "new-lab-report" (nouveau rapport de laboratoire) est publié.
Vérifiez que l'URL SMS_SERVICE_URL a bien été collectée :
Créez ensuite l'abonnement Pub/Sub :
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.
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.
email-service
:Ajoutez du texte non valide dans l'application du service de courrier électronique pour provoquer une erreur.
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 :L'ajout de ce code permet de faire planter le service lorsqu'il est appelé.
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.
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 :
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 !
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 |
|
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. Melody Directrice générale Computer Consulting Inc. |
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.
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
One lab at a time
Confirm to end all existing labs and start this one