De nombreuses applications doivent exécuter un traitement en arrière-plan dans d'autres contextes que celui d'une requête Web. Ce tutoriel indique comment créer une application Web qui permet aux utilisateurs de saisir du texte à traduire, puis qui affiche la liste des traductions précédentes. La traduction est effectuée dans un traitement en arrière-plan pour éviter de bloquer la requête de l'utilisateur.
Le schéma suivant illustre le processus de requête de traduction.
Voici, dans l'ordre, comment fonctionne l'application du tutoriel :
- L'application accède à la page Web pour consulter la liste des traductions précédentes stockées dans Firestore.
- Elle demande la traduction d'un texte en saisissant un formulaire HTML.
- La requête de traduction est publiée dans Pub/Sub.
- Un service Cloud Run abonné à ce sujet Pub/Sub est déclenché.
- Le service Cloud Run utilise Cloud Translation pour traduire le texte.
- Le service Cloud Run stocke le résultat dans Firestore.
Ce tutoriel est destiné à toute personne intéressée par le traitement en arrière-plan avec Google Cloud. Il ne nécessite aucune connaissance particulière de Pub/Sub, Firestore ou Cloud Run. Cependant, pour comprendre l'intégralité du code, il peut être utile de se familiariser avec Java et HTML.
Objectifs
- Comprendre et déployer un service Cloud Run
- Tester l'application
Coûts
Dans ce document, vous utilisez les composants facturables suivants de Google Cloud :
Obtenez une estimation des coûts en fonction de votre utilisation prévue à l'aide du simulateur de coût.
Une fois que vous avez terminé les tâches décrites dans ce document, vous pouvez éviter de continuer à payer des frais en supprimant les ressources que vous avez créées. Pour en savoir plus, consultez la section Effectuer un nettoyage.
Avant de commencer
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Firestore, Pub/Sub, and Cloud Translation APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Firestore, Pub/Sub, and Cloud Translation APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Mettez à jour les composants
gcloud
:gcloud components update
- Préparez votre environnement de développement.
Préparer l'application
Dans votre fenêtre de terminal, clonez le dépôt de l'exemple d'application sur votre machine locale :
git clone https://github.com/GoogleCloudPlatform/getting-started-java.git
Vous pouvez également télécharger l'exemple en tant que fichier ZIP et l'extraire.
Accédez au répertoire contenant l'exemple de code de traitement en arrière-plan :
cd getting-started-java/background
Comprendre l'application
L'application Web comporte deux composants principaux :
- Un serveur HTTP Java pour gérer les requêtes Web. Il comporte les deux points de terminaison suivants :
/translate
GET
(en utilisant un navigateur Web) : affiche les 10 dernières requêtes de traduction traitées soumises par les utilisateurs.POST
(avec un abonnement Pub/Sub) : traite les requêtes de traduction à l'aide de l'API Cloud Translation et enregistre les résultats dans Firestore.
/create
: le formulaire pour soumettre de nouvelles requêtes de traduction.
- Clients de service qui traitent les requêtes de traduction soumises par le formulaire Web. Trois clients travaillent ensemble :
- Pub/Sub : lorsque le formulaire Web est soumis par un utilisateur, le client Pub/Sub publie un message avec les détails de la requête. Un abonnement créé dans ce tutoriel relaie ces messages vers le point de terminaison Cloud Run que vous créez pour effectuer des traductions.
- Traduction : ce client gère les requêtes Pub/Sub en effectuant les traductions.
- Firestore : une fois la traduction terminée, ce client stocke les données de la requête avec la traduction dans Firestore. Ce client lit également les requêtes les plus récentes sur le point de terminaison
/translate
principal.
Comprendre le code Cloud Run
L'application Cloud Run a des dépendances sur Firestore, Traduction et Pub/Sub.
Les clients Firestore, Traduction et Pub/Sub globaux sont initialisés afin de pouvoir être réutilisés pour les appels. De cette façon, vous n'avez pas à initialiser de nouveaux clients à chaque appel, ce qui ralentirait l'exécution.
Le gestionnaire d'index (
/
) récupère toutes les traductions existantes dans Firestore et renseigne un modèle HTML à l'aide de la liste suivante :Pour demander de nouvelles traductions, envoyez un formulaire HTML. Le gestionnaire des requêtes de traduction, enregistré sur
/create
, analyse le formulaire envoyé, valide la requête, puis publie un message dans Pub/Sub :L'abonnement Pub/Sub que vous créez transfère ces requêtes au point de terminaison Cloud Run, qui analyse le message Pub/Sub pour obtenir le texte à traduire et la langue cible souhaitée. L'API Traduction traduit ensuite la chaîne dans la langue que vous avez sélectionnée.
L'application stocke les données de traduction dans un nouveau document qu'elle crée dans Firestore.
Déployer l'application Cloud Run
Choisissez un nom de sujet Pub/Sub et générez un jeton de validation Pub/Sub en utilisant
uuidgen
ou un générateur UUID en ligne tel que uuidgenerator.net. Ce jeton garantit que le point de terminaison Cloud Run accepte uniquement les requêtes de l'abonnement Pub/Sub que vous créez.export PUBSUB_TOPIC=background-translate export PUBSUB_VERIFICATION_TOKEN=your-verification-token
Créer un sujet Pub/Sub
gcloud pubsub topics create $PUBSUB_TOPIC
- Dans le fichier
pom.xml
, remplacezMY_PROJECT
par votre ID de projet Cloud.
- Dans le fichier
Créez et déployez une image de votre code sur GCR (un dépôt d'images) avec le plugin Jib Maven.
mvn clean package jib:build
Déployez l'application sur Cloud Run :
gcloud run deploy background --image gcr.io/MY_PROJECT/background \ --platform managed --region us-central1 --memory 512M \ --update-env-vars PUBSUB_TOPIC=$PUBSUB_TOPIC,PUBSUB_VERIFICATION_TOKEN=$PUBSUB_VERIFICATION_TOKEN
où
MY_PROJECT
est le nom du projet Cloud que vous avez créé. Cette commande génère le point de terminaison auquel votre abonnement Pub/Sub transmet les requêtes de traduction. Notez la valeur de ce point de terminaison, car vous en aurez besoin pour créer l'abonnement Pub/Sub. Vous accéderez également à ce point de terminaison dans un navigateur pour demander une nouvelle traduction.
Tester l'application
Après avoir déployé le service Cloud Run, essayez de demander une traduction.
Pour afficher l'application dans votre navigateur, accédez au point de terminaison Cloud Run que vous avez créé précédemment.
Une page s'affiche, contenant une liste de traductions vide ainsi qu'un formulaire de requête de nouvelles traductions.
Cliquez sur + Demander une traduction, remplissez le formulaire de demande, puis cliquez sur Envoyer.
Après l'envoi, vous êtes ramené automatiquement au chemin
/translate
, mais la nouvelle traduction peut ne pas encore s'afficher. Pour actualiser la page, cliquez sur Actualiserrefresh. Une nouvelle ligne s'affiche dans la liste des traductions. Si vous ne voyez pas de traduction, attendez encore quelques secondes, puis réessayez. Si vous ne voyez toujours pas de traduction, consultez la section suivante sur le débogage de l'application.
Déboguer l'application
Si vous ne parvenez pas à vous connecter à votre service Cloud Run ou si vous ne voyez pas de nouvelles traductions, vérifiez les points suivants :
Vérifiez que la commande
gcloud run deploy
a bien abouti et n'a généré aucune erreur. Si des erreurs se sont produites (par exemple,message=Build failed
), corrigez-les et réessayez.Recherchez les erreurs dans les journaux :
Dans Google Cloud Console, accédez à la page Cloud Run.
Cliquez sur le nom du service,
background
.Cliquez sur Logs (Journaux).
Effectuer un nettoyage
Supprimer le projet
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Supprimez les services Cloud Run.
Supprimez les services Cloud Run que vous avez créés dans ce tutoriel :
gcloud run services delete --region=$region background
Étapes suivantes
- Obtenez plus d'informations sur Cloud Run.
- Essayez Cloud Run, qui vous permet d'exécuter des conteneurs sans état dans un environnement entièrement géré ou dans votre propre cluster Google Kubernetes Engine.