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, App Engine ou Cloud Functions. Cependant, pour comprendre l'intégralité du code, il peut être utile de se familiariser avec .NET, JavaScript et HTML.
Objectifs
- Comprendre et déployer les services 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
- Connectez-vous à votre compte Google Cloud. Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits gratuits pour exécuter, tester et déployer des charges de travail.
-
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, Cloud Run, 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, Cloud Run, 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-dotnet.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 tâche en arrière-plan :
cd getting-started-dotnet/BackgroundProcessing
Comprendre le service TranslateWorker
Le service commence par l'importation de plusieurs dépendances comme Firestore et Translation.
Les clients Firestore et Translation sont initialisés afin qu'ils puissent être réutilisés pour les appels de gestionnaire. De cette façon, vous n'avez pas à initialiser de nouveaux clients à chaque appel, ce qui ralentirait l'exécution.
L'API Translation traduit la chaîne dans la langue que vous avez sélectionnée.
Le constructeur du contrôleur reçoit les clients Firestore et Pub/Sub.
La méthode
Post
analyse le message Pub/Sub pour obtenir le texte à traduire. L'ID du message est utilisé comme nom unique pour la requête de traduction afin de s'assurer qu'il ne stocke aucune traduction en double.
Déployer le service TranslateWorker
Dans le répertoire
BackgroundProcessing
, exécutez le script PowerShell pour créer et déployer le service dans Cloud Run :PublishTo-CloudRun.ps1
Comprendre le script PublishTo-CloudRun.ps1
Le script PublishTo-CloudRun.ps1
publie le service sur Cloud Run et protège le service TranslateWorker contre toute utilisation abusive. Si le service a autorisé toutes les connexions entrantes, n'importe qui peut publier des requêtes de traduction dans le contrôleur et, par conséquent, entraîner des frais. Par conséquent, vous allez configurer le service pour qu'il n'accepte que les requêtes POST
de Pub/Sub.
Le script a les effets suivants :
- Crée l'application en local à l'aide de
dotnet publish
. - Génère un conteneur qui exécute l'application à l'aide de Cloud Build.
- Déploie l'application sur Cloud Run.
- Permet au projet de créer des jetons d'authentification Pub/Sub.
- Crée un compte de service pour représenter l'identité de l'abonnement Pub/Sub.
- Donne au compte de service l'autorisation d'appeler le service
TranslateWorker
. Crée un sujet et un abonnement Pub/Sub.
Comprendre le service TranslateUI
Le service TranslateUI
affiche une page Web qui affiche des traductions récentes et accepte les requêtes de nouvelles traductions.
La classe
StartUp
configure une application ASP.NET et crée des clients Pub/Sub et Firestore.Le gestionnaire d'index
Index
récupère toutes les traductions existantes de Firestore et remplit unViewModel
avec la liste :Pour demander de nouvelles traductions, envoyez un formulaire HTML. Le gestionnaire des requêtes de traduction valide la demande et publie un message dans Pub/Sub :
Déployer le service TranslateUI
Dans le répertoire
BackgroundProcessing
, exécutez le script PowerShell pour créer et déployer le service dans Cloud Run :./PublishTo-CloudRun.ps1
Comprendre le script PublishTo-CloudRun.ps1
Le script PublishTo-CloudRun.ps1
publie l'application sur Cloud Run.
Le script a les effets suivants :
- Crée l'application en local à l'aide de
dotnet publish
. - Génère un conteneur qui exécute l'application à l'aide de Cloud Build.
Déploie l'application sur Cloud Run.
Tester l'application
Après avoir exécuté avec succès le script PublishTo-CloudRun.ps1
, essayez de demander une traduction.
La commande finale dans le script
PublishTo-CloudRun.ps1
vous indique l'URL de votre service d'interface utilisateur. Dans votre fenêtre de terminal, recherchez l'URL du serviceTranslateUI
:gcloud beta run services describe translate-ui --region $region --format="get(status.address.hostname)"
Dans votre navigateur, accédez à l'URL obtenue à l'étape précédente.
Une page s'affiche, contenant une liste de traductions vide ainsi qu'un formulaire de requête de nouvelles traductions.
Dans le champ Text to translate (Texte à traduire), saisissez un texte à traduire. Exemple :
Hello, World.
.Cliquez sur Envoyer.
Pour actualiser la page, cliquez sur Refresh (Actualiser)refresh. 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 le script
PublishTo-CloudRun.ps1
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 la console Google Cloud, accédez à la page "Cloud Run".
Cliquez sur le nom du service,
translate-ui
.Cliquez sur Logs (Journaux).
Effectuer un nettoyage
Pour éviter que les ressources utilisées lors de ce tutoriel soient facturées sur votre compte Google Cloud, supprimez le projet contenant les ressources, ou conservez le projet et supprimez les ressources individuelles.
Supprimer le projet Google Cloud
- 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.
Supprimer les services Cloud Run
Supprimez les services Cloud Run que vous avez créés dans ce tutoriel :
gcloud beta run services delete --region=$region translate-ui
gcloud beta run services delete --region=$region translate-worker