Présentation
Pub/Sub permet aux applications de bénéficier de files d'attente de messages efficaces.
Ce service est compatible avec de nombreux services Google Cloud. Dans cet atelier, vous allez apprendre à l'intégrer à Cloud Run.
Cet atelier consiste à résoudre un cas d'utilisation client à l'aide d'une infrastructure sans serveur. L'atelier comporte trois grandes sections qui permettent de résoudre un problème technique :
- Présentation de la situation
- Recueil des exigences
- Développer un produit minimum viable
Objectifs
Dans cet atelier, vous apprendrez à effectuer les tâches suivantes :
- Activer l'API Cloud Run
- Déployer des microservices sur Cloud Run
- Créer un sujet Pub/Sub
- Appeler un service Cloud Run à partir d'un abonnement Pub/Sub
Prérequis
Ces ateliers nécessitent des connaissances intermédiaires sur Google Cloud. Bien que les étapes requises soient abordées dans le contenu, il peut être utile de connaître certains des produits suivants :
Préparation
Avant de cliquer sur le bouton "Démarrer l'atelier"
Remarque : 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 Google Skills 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.
Conditions requises
Pour réaliser cet atelier, vous devez :
- avoir accès à un navigateur Internet standard (nous vous recommandons d'utiliser Chrome) ;
- disposer de suffisamment de temps pour effectuer l'atelier en une fois.
Remarque : Si vous possédez déjà votre propre compte ou projet Google Cloud, veillez à ne pas l'utiliser pour réaliser cet atelier.
Remarque : Si vous utilisez un Pixelbook, veuillez exécuter cet atelier dans une fenêtre de navigation privée.
Démarrer votre atelier et vous connecter à la console
-
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 verrez un panneau contenant les identifiants temporaires à utiliser pour cet atelier.

-
Copiez le nom d'utilisateur, puis cliquez sur Ouvrir la console Google.
L'atelier lance les ressources, puis la page Sélectionner un compte dans un nouvel onglet.
Remarque : Ouvrez les onglets dans des fenêtres distinctes, placées côte à côte.
-
Sur la page "Sélectionner un compte", cliquez sur Utiliser un autre compte. La page de connexion s'affiche.

-
Collez le nom d'utilisateur que vous avez copié dans le panneau "Détails de connexion". Copiez et collez ensuite le mot de passe.
Remarque : Vous devez utiliser les identifiants fournis dans le panneau "Détails de connexion", et non ceux de votre compte Google Skills. Si vous possédez un compte Google Cloud, ne vous en servez pas pour cet atelier (vous éviterez ainsi que des frais vous soient 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 aux essais sans frais.
Après quelques instants, la console Cloud s'ouvre dans cet onglet.
Remarque : Vous pouvez afficher le menu qui contient la liste des produits et services Google Cloud en cliquant sur le menu de navigation en haut à gauche.
Activer Google Cloud Shell
Google 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.
Google Cloud Shell vous permet d'accéder à vos ressources Google Cloud grâce à une ligne de commande.
-
Dans la barre d'outils située en haut à droite dans la console Cloud, cliquez sur le bouton "Ouvrir Cloud Shell".

-
Cliquez sur Continuer.
Le provisionnement et la connexion à l'environnement prennent quelques instants. Une fois connecté, vous êtes en principe authentifié et le projet est défini sur votre ID_PROJET. Par exemple :

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.
- Vous pouvez lister les noms des comptes actifs à l'aide de cette commande :
gcloud auth list
Résultat :
Credentialed accounts:
- @.com (active)
Exemple de résultat :
Credentialed accounts:
- google1623327_student@qwiklabs.net
- Vous pouvez lister les ID de projet à l'aide de cette commande :
gcloud config list project
Résultat :
[core]
project =
Exemple de résultat :
[core]
project = qwiklabs-gcp-44776a13dea667a6
Remarque : Pour consulter la documentation complète sur gcloud, accédez au guide de présentation de la gcloud CLI.
Présentation de la situation

Dans cet atelier, vous allez aider l'équipe de développement de Critter Junction à étudier l'utilisation de Pub/Sub pour répondre à ses besoins.
L'équipe souhaite savoir comment traiter efficacement les files d'attente dans ses applications.
Recueil des exigences
L'équipe de Critter Junction dispose d'une application Web publique et de plusieurs microservices basés sur Google Cloud.
La communication entre les microservices est essentielle et nécessite une forme de messagerie résiliente entre chaque composant d'application.
Les tentatives précédentes de l'équipe de développement ont échoué, car les microservices devaient bien se connaître mutuellement (couplage fort). De plus, si un service était temporairement indisponible, les messages étaient perdus.
L'équipe a besoin d'une solution qui inclut un niveau de résilience sans introduire de dépendances de service supplémentaires (couplage faible) dans ses systèmes. Maintenant que vous en savez un peu plus sur Critter Junction et les problèmes rencontrés, essayez de hiérarchiser les critères clés pour trouver une solution.
Définir les priorités de Critter Junction
Pour déterminer les principaux cas d'utilisation et les priorités, des discussions initiales sont organisées avec les personnes concernées de Critter Junction.
Voici les résultats de ces discussions :
|
Réf.
|
Récit utilisateur
|
|
1
|
En tant que responsable du développement, je veux m'assurer que la messagerie est résiliente, afin que les opérations de service soient restaurées sans intervention manuelle.
|
|
2
|
En tant que responsable de programme, je veux que les services puissent évoluer de manière fluide afin que la charge transactionnelle supplémentaire n'entraîne pas d'instabilité du système.
|
|
3
|
En tant que responsable des opérations, je souhaite que les services soient gérés afin que le personnel qui effectue des tâches de maintenance importantes n'ait pas besoin d'être réaffecté.
|
Suite à une discussion avec les responsables d'équipe, voici les tâches de haut niveau qui ont été définies :
|
Réf.
|
Critère d'achèvement
|
|
1
|
Établir un composant asynchrone pour la communication entre les services
|
|
2
|
Bénéficier de l'évolutivité éprouvée de la solution
|
|
3
|
Les services doivent s'exécuter sans supervision
|
L'équipe de Critter Junction souhaite trouver une solution qui peut être implémentée rapidement. Compte tenu des exigences, l'équipe de développement réduit ses options à :
Pour en savoir plus, consultez la page Choisir Pub/Sub ou Cloud Tasks.
|
Produit
|
Cas d'utilisation
|
Choix
|
|
Pub/Sub
|
"Optimal pour des schémas plus généraux d'ingestion et de distribution de données d'événements, dans lesquels un certain contrôle sur l'exécution peut être sacrifié."
|

|
|
Cloud Tasks
|
"Convient aux cas d'utilisation dans lesquels un producteur de tâches doit différer ou contrôler le temps d'exécution d'un appel webhook ou de procédure distante spécifique."
|

|
Après avoir examiné les exigences, l'équipe de développement choisit Pub/Sub, car elle n'a besoin que d'un modèle de distribution basé sur push. Le schéma simplifié ci-dessous présente le produit minimum viable (MVP, Minimal Viable Product) qu'elle doit examiner.

Dans la solution proposée, Pub/Sub sera utilisé pour gérer les messages asynchrones entre les services.
Tâche 1 : Vérifier que l'API Pub/Sub est activée
Pour vous assurer que vous avez bien accès à l'API requise, réactivez l'API Pub/Sub.
-
Dans le menu de navigation (
) de la console Google Cloud, sous API et services, cliquez sur Bibliothèque.
-
Dans le champ Rechercher, saisissez Pub/Sub.
-
Cliquez sur le résultat API Cloud Pub/Sub.
-
Cliquez sur Gérer.
-
Cliquez sur Désactiver l'API. Si vous êtes invité à confirmer votre choix, cliquez sur Désactiver.
-
De même, à l'invite Voulez-vous désactiver l'API Cloud Pub/Sub et les API qui en dépendent, cliquez sur Confirmer.
-
Pour réactiver l'API, cliquez sur Activer.
Une fois l'API réactivée, la page affiche des informations à son sujet.

Tâche 2 : Développer un produit minimum viable (MVP)
Critter Junction dispose de plusieurs services Cloud Run qu'elle souhaite intégrer à Pub/Sub.
Pour créer un MVP, vous devez effectuer les tâches suivantes :
- Déployer un service producteur
- Déployer un service client
- Créer un compte de service
- Créer un sujet Pub/Sub
Déployer un service producteur
Critter Junction spécifie que le service de magasin externe store doit être configuré en tant que point de terminaison public, avec les exigences suivantes :
|
Type
|
Autorisation
|
Description
|
|
Accès par URL
|
--allow-unauthenticated
|
Rendre le service PUBLIC (les utilisateurs non authentifiés peuvent le voir)
|
|
Autorisation d'appel
|
allUsers
|
Autoriser tout le monde à appeler/déclencher le service
|
Le service producteur de magasin store accepte les connexions Internet publiques pour les bons de commande.
Pour cela, le service ne doit pas nécessiter d'authentification et doit pouvoir être déclenché par n'importe qui.
Les informations collectées par ce service seront transmises aux services client de backend.
Configurez et déployez le service store sur Cloud Run. Exécutez les commandes suivantes dans Cloud Shell.
-
Activez l'API Cloud Run et configurez votre environnement de shell :
gcloud services enable run.googleapis.com
-
Créez une variable d'environnement LOCATION :
LOCATION={{{project_0.default_region|REGION}}}
-
Définissez la région de calcul :
gcloud config set compute/region $LOCATION
-
Déployez le service store :
gcloud run deploy store-service \
--image gcr.io/qwiklabs-resources/gsp724-store-service \
--region $LOCATION \
--allow-unauthenticated
Cliquez sur Vérifier ma progression pour valider l'objectif.
Déployer le service "store" Cloud Run
Une fois le service "store" déployé, il est accessible publiquement sur Internet.
Déployer un service client
L'équipe de développement doit également configurer le service de commandes order, qui est accessible via un point de terminaison privé.
Contrairement au service store, le service order n'est pas destiné à être accessible publiquement sur Internet. Il ne doit être appelé que par un compte disposant des autorisations appropriées.
Pour les services basés sur Cloud Run, vous pouvez utiliser les paramètres suivants :
|
Type
|
Autorisation
|
Description
|
|
Accès par URL
|
--no-allow-unauthenticated
|
Rendre le service PRIVÉ (seuls les utilisateurs authentifiés peuvent le voir)
|
|
Rôle/Autorisation d'appel
|
Demandeur Cloud Run
|
Autoriser uniquement l'appel du service par un compte disposant du rôle "Demandeur Cloud Run"
|
Configurez et déployez le service order :
gcloud run deploy order-service \
--image gcr.io/qwiklabs-resources/gsp724-order-service \
--region $LOCATION \
--no-allow-unauthenticated
Cliquez sur Vérifier ma progression pour valider l'objectif.
Déployer le service "order" Cloud Run
Désormais, seuls les comptes authentifiés peuvent accéder au service et l'appeler.
Présentation de Pub/Sub
Pub/Sub est un service de messagerie asynchrone qui dissocie les services de production d'événements des services de consommation et de traitement des événements.
Concepts de base de Pub/Sub :
- Sujet
- Abonnement
- Message
- Attribut de message
Pub/Sub nécessite de renseigner quelques options avant de pouvoir être déployé.
Dans la console Google Cloud, vous pouvez accéder à Pub/Sub en sélectionnant l'option de menu "Big Data".
|
Champ
|
Description
|
|
Sujet
|
Ressource nommée à laquelle les diffuseurs envoient des messages.
|
|
Abonnement
|
Ressource nommée représentant le flux de messages d'un sujet spécifique, à remettre à l'application abonnée. Pour plus de détails sur les abonnements et la sémantique de distribution des messages, consultez Choisir un type d'abonnement.
|
|
Message
|
Combinaison de données et d'attributs (facultatifs) qu'un diffuseur envoie à un sujet et qui est finalement remise aux abonnés.
|
|
Attribut de message
|
Paire clé/valeur qu'un diffuseur peut définir pour un message. Par exemple, la clé iana.org/language_tag et la valeur en pourraient être ajoutées à des messages pour les marquer comme lisibles par un abonné anglophone.
|
Pub/Sub peut être utilisé dans une grande variété de cas d'utilisation, dont les plus courants sont présentés ci-dessous :
|
Cas d'utilisation
|
Exemple
|
|
Équilibrage des charges de travail dans les clusters de réseau
|
Par exemple, une file d'attente importante de tâches peut être efficacement répartie entre plusieurs nœuds de calcul, tels que des instances Compute Engine.
|
|
Utilisation de workflows asynchrones
|
Par exemple, une application de traitement de commandes peut passer une commande dans un sujet, à partir duquel elle peut être traitée par un ou plusieurs nœuds de calcul.
|
|
Distribution de notifications d'événements
|
Par exemple, un service qui accepte les inscriptions d'utilisateurs peut envoyer des notifications chaque fois qu'un nouvel utilisateur s'inscrit, et les services en aval peuvent s'abonner pour recevoir des notifications de l'événement.
|
|
Actualisation des caches distribués
|
Par exemple, une application peut publier des événements d'invalidation pour mettre à jour les ID des objets modifiés.
|
|
Journalisation dans plusieurs systèmes
|
Par exemple, une instance Google Compute Engine peut écrire des journaux dans le système de surveillance, dans une base de données pour l'interroger par la suite, etc.
|
|
Transmission de données par flux depuis divers processus ou appareils
|
Par exemple, un capteur résidentiel peut diffuser des données par flux sur des serveurs backend hébergés dans le cloud.
|
|
Amélioration de la fiabilité
|
Par exemple, un service Compute Engine sur une seule zone peut opérer dans d'autres zones en s'abonnant à un sujet commun pour résoudre des pannes dans une zone ou une région.
|
Tâche 3 : Déployer Pub/Sub
Maintenant que les services producteur (store service) et client (order service) ont été déployés, vous pouvez vous concentrer sur les principales fonctionnalités de Pub/Sub. L'utilisation de Pub/Sub nécessite deux activités :
- Créer un sujet
- Créer un abonnement
Créer un sujet
Lorsqu'un événement asynchrone (push) est créé sur un sujet, les applications abonnées à ce sujet peuvent traiter les messages associés.
Le traitement des événements push avec Pub/Sub offre un moyen évolutif de gérer la messagerie sur Google Cloud.
Le nouveau sujet Pub/Sub aura les valeurs suivantes :
|
Champ
|
Valeur
|
|
Nom
|
ORDER_PLACED
|
|
Chiffrement
|
Clé gérée par Google
|
- Créez un sujet dans Pub/Sub :
gcloud pubsub topics create ORDER_PLACED
Remarque : Les messages envoyés à l'aide de Pub/Sub sont encodés en base64 lors de la transmission et doivent être décodés à la réception.
Cliquez sur Vérifier ma progression pour valider l'objectif.
Créer un sujet Pub/Sub
En créant le sujet Pub/Sub, les messages peuvent désormais être stockés et distribués de manière indépendante et résiliente.
Vous allez créer un abonnement dans une tâche ultérieure.
Tâche 4 : Créer un compte de service
Pour envoyer un message Pub/Sub à un service Cloud Run, vous avez besoin d'un abonnement Pub/Sub. L'abonnement doit pouvoir appeler le service à l'aide d'un compte de service disposant des autorisations appropriées. Dans cet atelier, le service order sera appelé par un abonnement à l'aide du compte de service.
Pour implémenter cette fonctionnalité, vous devez effectuer les activités suivantes :
- Créer un compte de service
- Associer les autorisations du rôle "Demandeur" au compte de service
Créer un compte de service
Créez un compte de service qui fournira un accès authentifié.
-
Créez un compte de service nommé Order Initiator :
gcloud iam service-accounts create pubsub-cloud-run-invoker \
--display-name "Order Initiator"
-
Vérifiez que le compte de service a bien été créé :
gcloud iam service-accounts list --filter="Order Initiator"
Cliquez sur Vérifier ma progression pour valider l'objectif.
Créer un compte de service
À ce stade, le compte de service Order Initiator est disponible. Cependant, aucun rôle ni aucune autorisation ne lui sont attribués.
Pour lui attribuer des autorisations IAM, vous devez appliquer ou associer des autorisations de rôle au compte de service.
Associer les autorisations de rôle
Pour associer des autorisations à un compte utilisé pour appeler un service sur Cloud Run, vous avez besoin des informations suivantes :
|
Catégorie
|
Description
|
|
Nom du service
|
Nom du service déployé à appeler.
|
|
Membre
|
Compte auquel accorder les autorisations du rôle.
|
|
Région
|
Région dans laquelle le service est déployé.
|
|
Plate-forme
|
Type de plate-forme (Cloud Run géré, Cloud Run for Anthos ou Cloud Run for VMware)
|
-
Associez le compte de service au rôle Demandeur Cloud Run sur le service order :
gcloud run services add-iam-policy-binding order-service --region $LOCATION \
--member=serviceAccount:pubsub-cloud-run-invoker@$GOOGLE_CLOUD_PROJECT.iam.gserviceaccount.com \
--role=roles/run.invoker --platform managed
Le nouveau compte de service dispose désormais des autorisations nécessaires pour appeler un service Cloud Run.
-
Créez une variable d'environnement pour stocker le numéro de projet :
PROJECT_NUMBER=$(gcloud projects list \
--filter="qwiklabs-gcp" \
--format='value(PROJECT_NUMBER)')
-
Autorisez le compte de service du projet à créer des jetons :
gcloud projects add-iam-policy-binding $GOOGLE_CLOUD_PROJECT \
--member=serviceAccount:service-$PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com \
--role=roles/iam.serviceAccountTokenCreator
Tâche 5 : Créer un abonnement Pub/Sub
Dans cette tâche, vous allez créer l'abonnement Pub/Sub et le configurer pour qu'il utilise le nouveau compte de service.
-
Créez une variable d'environnement pour stocker le point de terminaison du service order :
ORDER_SERVICE_URL=$(gcloud run services describe order-service \
--region $LOCATION \
--format="value(status.address.url)")
-
Créez un abonnement et associez-le au service order :
gcloud pubsub subscriptions create order-service-sub \
--topic ORDER_PLACED \
--push-endpoint=$ORDER_SERVICE_URL \
--push-auth-service-account=pubsub-cloud-run-invoker@$GOOGLE_CLOUD_PROJECT.iam.gserviceaccount.com
Cliquez sur Vérifier ma progression pour valider l'objectif.
Créer un abonnement
Tâche 6 : Tester l'application
Pour tester l'application, envoyez un exemple de charge utile JSON au service "store".
-
Créez un fichier nommé test.json avec le contenu suivant. Vous pouvez utiliser l'éditeur de votre choix, comme nano, vi ou l'éditeur Cloud Shell.
{
"billing_address": {
"name": "Kylie Scull",
"address": "6471 Front Street",
"city": "Mountain View",
"state_province": "CA",
"postal_code": "94043",
"country": "US"
},
"shipping_address": {
"name": "Kylie Scull",
"address": "9902 Cambridge Grove",
"city": "Martinville",
"state_province": "BC",
"postal_code": "V1A",
"country": "Canada"
},
"items": [
{
"id": "RW134",
"quantity": 1,
"sub-total": 12.95
},
{
"id": "IB541",
"quantity": 2,
"sub-total": 24.5
}
]
}
-
Créez une variable d'environnement pour stocker le point de terminaison du service store :
STORE_SERVICE_URL=$(gcloud run services describe store-service \
--region $LOCATION \
--format="value(status.address.url)")
-
Pour tester la communication entre les microservices et générer un ID de commande, envoyez un message au service store :
curl -X POST -H "Content-Type: application/json" -d @test.json $STORE_SERVICE_URL
Le résultat indique qu'une commande a été créée. Il doit ressembler à ceci :
{"status":"success","order_id":"6pa5mmh"}
Service "store"
Le service store (point de terminaison public) utilise Pub/Sub pour transmettre des informations au service order (point de terminaison privé).
-
Dans le menu de navigation (
) de la console Google Cloud, cliquez sur Cloud Run.
-
Cliquez sur le lien vers store-service.
-
Pour afficher les journaux du service, cliquez sur Journaux. Consultez les journaux du service "store" pour afficher l'ID de commande généré.
-
Ajoutez le filtre de journal ORDER ID pour afficher l'ID généré par le service store.

Service "order"
Le service order reçoit un message du service store transmis avec Pub/Sub.
-
Consultez les journaux du service "order" pour vérifier que les données JSON ont bien été transférées.
-
Ajoutez le filtre de journal Order Placed pour afficher l'ID de commande généré qui a été transmis au service order.

Critter Junction a mis à jour sa solution pour utiliser Pub/Sub.
Le schéma simplifié ci-dessous présente l'architecture de la solution déployée.

Vous avez déployé Pub/Sub sur Google Cloud pour permettre la communication asynchrone entre les services Cloud Run.
Félicitations !
Dans cet atelier, vous avez appris à intégrer des services Cloud Run à Pub/Sub dans votre infrastructure Google Cloud.
Vous avez appris à :
- Déployer des services sur Cloud Run
- Créer un compte de service avec le rôle et les autorisations appropriés
- Définir un sujet Pub/Sub
- Associer un abonnement Pub/Sub à un compte de service
Étapes suivantes et informations supplémentaires
Suivez la série de vidéos Serverless Expeditions pour découvrir comment utiliser ces produits dans votre projet.
Dernière mise à jour du manuel : 20 février 2024
Dernier test de l'atelier : 20 février 2024
Copyright 2026 Google LLC Tous droits réservés. Google et le logo Google sont des marques de Google LLC. Tous les autres noms de société et de produit peuvent être des marques des sociétés auxquelles ils sont associés.