Instructions et exigences de configuration de l'atelier
Protégez votre compte et votre progression. Utilisez toujours une fenêtre de navigation privée et les identifiants de l'atelier pour exécuter cet atelier.

Développement d'applications : Développer un service de backend – Java

Atelier 2 heures universal_currency_alt 5 crédits show_chart Avancé
info Cet atelier peut intégrer des outils d'IA pour vous accompagner dans votre apprentissage.
Ce contenu n'est pas encore optimisé pour les appareils mobiles.
Pour une expérience optimale, veuillez accéder à notre site sur un ordinateur de bureau en utilisant un lien envoyé par e-mail.

Présentation

Dans cet atelier, vous allez développer un service de backend pour une application Quiz en ligne, afin de traiter les commentaires des utilisateurs et d'enregistrer des scores.

L'application Quiz se compose de deux parties : l'application Web qui s'exécute dans la première fenêtre Cloud Shell et l'application du nœud de calcul qui s'exécute dans la deuxième fenêtre Cloud Shell.

  • L'application Web gère la logique d'envoi des commentaires de l'utilisateur à un sujet Pub/Sub.
  • L'application du nœud de calcul écoute les commentaires fournis par l'utilisateur, puis effectue une analyse des sentiments qu'elle enregistre dans une base de données (Cloud Spanner).

Ce processus s'appuie sur les produits et les services de Google Cloud Platform (GCP) :

  • Cloud Pub/Sub alerte l'application du nœud de calcul abonnée au sujet des nouveaux scores et commentaires, et les lui transmet pour analyse.
  • Cloud Natural Language réalise l'analyse des sentiments à partir des commentaires.
  • Cloud Spanner sert de base de données à l'application Quiz.

Objectifs

Dans cet atelier, vous apprendrez à effectuer les opérations suivantes :

  • Créer et publier des messages dans un sujet Cloud Pub/Sub
  • Créer un abonnement au sujet pour recevoir les messages dans une application de nœud de calcul distincte
  • Réaliser une analyse des sentiments à partir des commentaires
  • Créer une instance et un schéma de base de données Cloud Spanner, et insérer des données dans la base

Avant de commencer l'atelier

Pour chaque atelier, nous vous attribuons un nouveau projet Google Cloud et un nouvel ensemble de ressources pour une durée déterminée, sans frais.

  1. Connectez-vous à Qwiklabs dans une fenêtre de navigation privée.

  2. Vérifiez le temps imparti pour l'atelier (par exemple : 01:15:00) : vous devez pouvoir le terminer dans ce délai.
    Une fois l'atelier lancé, vous ne pouvez pas le mettre en pause. Si nécessaire, vous pourrez le redémarrer, mais vous devrez tout reprendre depuis le début.

  3. Lorsque vous êtes prêt, cliquez sur Démarrer l'atelier.

  4. Notez vos identifiants pour l'atelier (Nom d'utilisateur et Mot de passe). Ils vous serviront à vous connecter à Google Cloud Console.

  5. Cliquez sur Ouvrir la console Google.

  6. Cliquez sur Utiliser un autre compte, puis copiez-collez les identifiants de cet atelier lorsque vous y êtes invité.
    Si vous utilisez d'autres identifiants, des messages d'erreur s'afficheront ou des frais seront appliqués.

  7. Acceptez les conditions d'utilisation et ignorez la page concernant les ressources de récupération des données.

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.

  1. Dans la barre d'outils située en haut à droite dans la console Cloud, cliquez sur le bouton "Ouvrir Cloud Shell".

    Icône Cloud Shell encadrée

  2. 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 :

ID de projet mis en évidence dans le terminal Cloud Shell

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.

Tâche 1 : Préparer l'application Quiz

Dans cette section, vous allez accéder à Cloud Shell, cloner le dépôt Git qui contient l'application Quiz, configurer les variables d'environnement et exécuter l'application.

Cloner le code source dans Cloud Shell

  1. Saisissez la commande suivante pour cloner le dépôt associé à ce cours :
git clone --depth=1 https://github.com/GoogleCloudPlatform/training-data-analyst
  1. Créez un lien symbolique vers votre répertoire de travail :
ln -s ~/training-data-analyst/courses/developingapps/v1.3/java/pubsub-languageapi-spanner ~/pubsub-languageapi-spanner

Configurer l'application Web

Dans cette section, vous allez configurer les dépendances de l'application Web, et ensuite l'exécuter.

  1. Accédez au répertoire qui contient les exemples de fichiers de l'atelier :

    cd ~/pubsub-languageapi-spanner/start
  2. Configurez l'application Web :

    . prepare_web_environment.sh

    Ce fichier de script :

    • crée une application App Engine ;
    • exporte les variables d'environnement GCLOUD_PROJECT et GCLOUD_BUCKET ;
    • exécute la commande mvn clean install ;
    • crée des entités dans Cloud Datastore ;
    • affiche l'ID du projet GCP.

    Vous pouvez exécuter cette application lorsque vous voyez un message semblable au suivant :

    [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 14.111 s [INFO] Finished at: 2021-12-06T20:54:09Z [INFO] ------------------------------------------------------------------------ Project ID: qwiklabs-gcp-02-6c9b7cfe44c0
  3. Exécutez l'application Web :

    mvn spring-boot:run

    Un résultat semblable à celui-ci indique que l'application est en cours d'exécution :

    20:55:20.756 [restartedMain] INFO c.g.training.appdev.QuizApplication - Started QuizApplication in 20:55:20.756

Configurer l'application de nœud de calcul

  1. Cliquez sur Ouvrir un nouvel onglet à droite de l'onglet Cloud Shell pour ouvrir une deuxième fenêtre Cloud Shell.

  2. Saisissez la commande suivante pour changer de répertoire de travail :

    cd ~/pubsub-languageapi-spanner/start
  3. Préparez l'environnement dans la deuxième fenêtre Cloud Shell :

    . prepare_worker_environment.sh

    Ce fichier de script :

    • exporte les variables d'environnement GCLOUD_PROJECT et GCLOUD_BUCKET ;
    • crée et configure un compte de service GCP ;
    • affiche l'ID du projet Google Cloud Platform.
  4. À présent, lancez l'application du nœud de calcul :

    mvn exec:java@worker

Examiner l'application Quiz

  1. Toujours dans la deuxième fenêtre Cloud Shell, cliquez sur Aperçu sur le Web > Prévisualiser sur le port 8080 pour prévisualiser l'application Quiz.

    Menu déroulant "Aperçu sur le Web" avec l'option "Prévisualiser sur le port 8080" mise en évidence.

  2. Dans la barre de navigation, cliquez sur Take Test (Faire le test).

    Page d'accueil de Quite Interesting Quiz avec les options "Create Question" (Créer une question), "Take Test" (Faire le test) et "Leaderboard" (Classement)

  3. Cliquez sur Places (Lieux).

    Page "Take Test" (Faire le test) avec l'onglet "Places" (Lieux) mis en évidence

  4. Répondez à la question.

    Une question avec plusieurs choix de réponse, ainsi que le bouton "Submit Answer" (Envoyer la réponse).

    Une fois que vous avez répondu à la question, un dernier écran vous invitant à laisser un commentaire s'affiche.

    Deux champs de texte sur la dernière page du questionnaire, ainsi que le bouton "Send Feedback" (Envoyer des commentaires).

    Les personnes qui ont répondu au questionnaire peuvent le noter et saisir un commentaire.

  5. Revenez à Cloud Shell. Appuyez sur Ctrl+C dans chacune des deux fenêtres pour arrêter respectivement l'application Web et l'application de nœud de calcul.

Tâche 2 : Examiner le code de l'application Quiz

Dans cette section, vous allez examiner la structure des fichiers qui influent sur l'application Quiz.

Au cours de cet atelier, vous allez consulter et modifier des fichiers. Vous pouvez utiliser les éditeurs de script shell installés sur Cloud Shell, tels que nano ou vim, ou encore l'éditeur de code de Cloud Shell. L'éditeur de code utilisé dans le cadre de cet atelier est celui de Cloud Shell.

Lancer l'éditeur de code Cloud Shell

  • Dans Cloud Shell, cliquez sur Ouvrir l'éditeur.

Examiner la structure du code de l'application GCP

  1. Accédez au dossier /pubsub-languageapi-spanner/start dans le panneau de l'explorateur de fichiers situé à gauche de l'éditeur.

  2. Ensuite, développez le dossier /src/main/java/com/google/training/appdev. Tous les chemins de code Java sont relatifs à ce dossier.

  3. Sélectionnez le fichier Feedback.java dans le dossier .../services/gcp/domain.

Ce fichier contient une classe de modèle représentant les commentaires envoyés par les utilisateurs qui ont répondu au questionnaire.

  1. Sélectionnez le fichier PublishService.java dans le dossier .../services/gcp/pubsub.

Ce fichier contient une classe de service permettant aux applications de publier des commentaires dans un sujet Cloud Pub/Sub.

  1. Sélectionnez le fichier LanguageService.java dans le dossier .../services/gcp/languageapi.

Ce fichier contient une classe de service permettant aux utilisateurs d'envoyer du texte à l'API Cloud Natural Language ML et de recevoir de celle-ci le score obtenu à l'analyse des sentiments.

  1. Sélectionnez le fichier SpannerService.java dans le dossier .../services/gcp/spanner.

Ce fichier contient une classe de service permettant aux utilisateurs d'enregistrer les données des commentaires et des réponses de l'API Natural Language dans une instance de base de données Cloud Spanner.

Examiner les codes de l'application Web et de l'application de backend

  1. Sélectionnez le fichier QuizEndpoint.java dans le dossier .../api.

Le gestionnaire des messages POST envoyés à la route /api/quizzes/feedback/:quiz publie sur Pub/Sub les données de commentaires reçues du client.

  1. Sélectionnez le fichier ConsoleApp.java dans le dossier .../backend.

Ce fichier s'exécute en tant qu'application de console distincte pour consommer les messages distribués à un abonnement Pub/Sub.

Tâche 3 : Utiliser Cloud Pub/Sub

L'application Quiz récupère les réponses et les commentaires entrés par les utilisateurs dans l'interface du questionnaire à l'aide d'une fonction Pub/Sub.

Dans cette section, vous allez créer un sujet et un abonnement Cloud Pub/Sub dans votre projet GCP, puis publier et récupérer un message.

Créer un sujet Cloud Pub/Sub

  1. Dans la console, accédez au menu de navigation > Pub/Sub > Sujets, puis cliquez sur Créer un sujet.

    Chemin de navigation vers l'option "Sujets"

  2. Définissez l'ID du sujet sur feedback (commentaires), puis cliquez sur CRÉER UN SUJET.

    Page "Créer un sujet" avec l'ID de sujet "feedback" et les boutons "Créer un sujet" et "Annuler"

    La vue "Détails du sujet" s'affiche :

    Page "Détails du sujet" avec des options telles que "Exporter vers BigQuery", "Publier un message" et "Demander un rapport"

Créer un abonnement Cloud Pub/Sub

  1. Revenez à la deuxième fenêtre Cloud Shell.

  2. Saisissez la commande suivante pour créer un abonnement Cloud Pub/Sub nommé cloud-shell-subscription associé au sujet feedback :

gcloud pubsub subscriptions create cloud-shell-subscription --topic feedback Remarque : Si vous recevez un message d'erreur indiquant que le compte actif ne dispose pas d'identifiants valides, patientez une minute, puis réessayez la commande.

Publier un message dans un sujet Cloud Pub/Sub

  • Publiez le message "Hello World" dans le sujet feedback, dans la deuxième fenêtre Cloud Shell :
gcloud pubsub topics publish feedback --message="Hello World"

Récupérer un message à partir d'un abonnement Cloud Pub/Sub

  • Pour extraire le message du sujet feedback avec confirmation automatique du message dans la deuxième fenêtre Cloud Shell, saisissez la commande suivante :
gcloud pubsub subscriptions pull cloud-shell-subscription --auto-ack

Résultat :

Le résultat du sujet feedback, qui inclut des informations telles que les données, l'identifiant du message et les attributs

Tâche 4 : Publier des messages sur Cloud Pub/Sub par programmation

Dans cette section, vous allez rédiger du code pour publier des messages sur Cloud Pub/Sub.

Remarque : Modifiez le code dans les sections marquées comme suit :

// TODO

// END TODO

Pour parfaire votre apprentissage, examinez le code, les commentaires intégrés et la documentation sur les API concernées.

Publier un message Pub/Sub

  1. Ouvrez le fichier .../services/gcp/pubsub/PublishService.java dans l'éditeur de code. Modifiez le fichier en ajoutant du code comme indiqué dans les instructions.

  2. Déclarez deux chaînes finales statiques pour les éléments PROJECT_ID et TOPIC_NAME :

    // TODO: Declare and initialize two Strings, // PROJECT_ID and TOPIC_NAME private static final String PROJECT_ID = ServiceOptions.getDefaultProjectId(); private static final String TOPIC_NAME = "feedback"; // END TODO
  3. Passez à la méthode publishFeedback(...) et créez un objet TopicName avec les chaînes PROJECT_ID et TOPIC_NAME.

    Cet objet fait référence au sujet Cloud Pub/Sub que vous venez de créer :

    // TODO: Create a TopicName object // for the feedback topic in the project TopicName topicName = TopicName.of(PROJECT_ID, TOPIC_NAME); // END TODO
  4. Déclarez un objet Publisher et définissez-le sur null :

    // TODO: Declare a publisher for the topic Publisher publisher = null; // END TODO

    Cet objet sera initialisé dans le bloc try qui suit.

  5. Accédez au bloc try, puis initialisez l'objet publisher à l'aide de son compilateur :

    // TODO: Initialize the publisher // using a builder and the topicName publisher = Publisher.newBuilder(topicName).build(); // END TODO
  6. Copiez la chaîne JSON sérialisée feedbackMessage dans une chaîne ByteString :

    // TODO: Copy the serialized message // to a byte string ByteString data = ByteString.copyFromUtf8(feedbackMessage); // END TODO
  7. Déclarez un objet PubsubMessage, puis initialisez le message à l'aide de son compilateur :

    // TODO: Create a Pub/Sub message using a // builder; set the message data PubsubMessage pubsubMessage = PubsubMessage.newBuilder().setData(data).build(); // END TODO
  8. Publiez le message à l'aide de l'objet publisher et attribuez la valeur renvoyée à l'objet messageIdFuture :

    // TODO: Publish the message, // assign to the messageIdFuture messageIdFuture = publisher.publish(pubsubMessage); // END TODO
  9. Accédez au dernier bloc et récupérez le messageId Pub/Sub à partir de l'objet messageIdFuture :

    // TODO: Get the messageId from // the messageIdFuture String messageId = messageIdFuture.get(); // END TODO
  10. Pour clôturer le code de publication, arrêtez l'objet publisher :

    // TODO: Shutdown the publisher // to free up resources if (publisher != null) { publisher.shutdown(); } // END TODO
  11. Enregistrez le fichier services/gcp/pubsub/PublishService.java.

Rédiger le code qui exploite la fonctionnalité de publication Pub/Sub

  1. Dans le fichier .../api/QuizEndpoint.java, déclarez un nouveau champ PublishService nommé publishService.

  2. Appliquez l'annotation Spring @Autowired :

    // TODO: Declare the publishService @Autowired private PublishService publishService; // END TODO
  3. Dans la méthode processFeedback(...) qui gère les requêtes POST envoyées à la route /feedback/:quiz, appelez la méthode publishService.publishFeedback(feedback) :

    // TODO: Publish the feedback to Pub/Sub publishService.publishFeedback(feedback); // END TODO
  4. Enregistrez le fichier /api/QuizEndpoint.java.

Exécuter l'application et créer un message Pub/Sub

  1. Dans la première fenêtre Cloud Shell, redémarrez l'application Web (si elle est en cours d'exécution, arrêtez-la et démarrez-la) :

    mvn spring-boot:run
  2. Prévisualisez l'application Web. Pour ce faire, cliquez sur Take Test > Places (Faire le test > Lieux).

  3. Répondez à la question, sélectionnez une note, saisissez un commentaire, puis cliquez sur Send Feedback (Envoyer les commentaires).

  4. Dans la deuxième fenêtre Cloud Shell, saisissez la commande suivante pour extraire un message de cloud-shell-subscription :

    gcloud pubsub subscriptions pull cloud-shell-subscription --auto-ack

Tâche 5 : S'abonner à des sujets Cloud Pub/Sub par programmation

Dans cette section, vous allez rédiger le code qui crée un abonnement et permet de recevoir des notifications de message d'un sujet Cloud Pub/Sub dans l'application de nœud de calcul.

Rédiger le code qui crée un abonnement Cloud Pub/Sub et permet de recevoir des messages

  1. Ouvrez le fichier ...backend/ConsoleApp.java dans l'éditeur de code.

    • Modifiez le fichier en ajoutant du code comme indiqué dans les instructions.

    • Passez les blocs TODO pour languageService et spannerService. Vous y reviendrez plus tard.

  2. Dans la méthode main(), créez un objet SubscriptionName représentant un nouvel abonnement nommé "worker1-subscription" :

    // TODO: Create the Pub/Sub subscription name ProjectSubscriptionName subscription = ProjectSubscriptionName.of(projectId, "worker1-subscription"); // END TODO
  3. Créez un objet SubscriptionAdminClient à l'aide d'un bloc try :

Remarque : Dans ce même bloc try, créez un abonnement pour le sujet feedback à l'aide du client d'administration des abonnements. N'oubliez pas l'accolade fermante. ```JAVA // TODO: Create the subscriptionAdminClient try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) { // TODO: create the Pub/Sub subscription // using the subscription name and topic subscriptionAdminClient.createSubscription( subscription, topic, PushConfig.getDefaultInstance(), 0); // END TODO } // END TODO ```
  1. Accédez au code qui crée un MessageReceiver, puis, dans la section qui remplace receiveMessage(...), extrayez les données du message sous forme de chaîne :

    // TODO: Extract the message data as a JSON String String fb = message.getData().toStringUtf8(); // END TODO
  2. Confirmez le message à l'aide de l'objet consumer :

    // TODO: Ack the message consumer.ack(); // END TODO
  3. Après le code qui initialise un ObjectMapper, désérialisez les données du message au format "chaîne JSON" dans un objet feedback :

    // TODO: Deserialize the JSON String // representing the feedback // Print out the feedback Feedback feedback = mapper.readValue( fb, Feedback.class); System.out.println("Feedback received: " + feedback); // END TODO
  4. Après le bloc qui crée le MessageReceiver, déclarez un Subscriber et initialisez-le avec la valeur "null".

    • Ignorez les prochains blocs TODO et recherchez celui-ci :
    // TODO: Declare a subscriber Subscriber subscriber = null; // END TODO
  5. Accédez au bloc try et initialisez le Subscriber à l'aide de son compilateur par défaut. Cela nécessite un abonnement et un objet "receiver" :

    // TODO: Initialize the subscriber using // its default builder // with a subscription and receiver subscriber = Subscriber.newBuilder( subscription, receiver).build(); // END TODO
  6. Ajoutez un écouteur à l'objet "subscriber" pour afficher les erreurs :

    // TODO: Add a listener to the subscriber subscriber.addListener( new Subscriber.Listener() { @Override public void failed( Subscriber.State from, Throwable failure) { System.err.println(failure); } }, MoreExecutors.directExecutor()); // END TODO
  7. Démarrez le "subscriber" :

    // TODO: Start subscribing subscriber.startAsync().awaitRunning(); // END TODO
  8. Passez au bloc final. Rédigez le code qui arrête le "subscriber" et supprime l'abonnement :

    // TODO: Stop subscribing if (subscriber != null) { subscriber.stopAsync().awaitTerminated(); } // END TODO // TODO: Delete the subscription try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) { subscriptionAdminClient.deleteSubscription( subscription); } // END TODO
  9. Enregistrez le fichier backend/ConsoleApp.java.

Exécuter l'application Web et l'application de nœud de calcul, et créer un message Pub/Sub

  1. Dans la première fenêtre Cloud Shell, arrêtez et démarrez l'application Web :

    mvn spring-boot:run
  2. Dans la seconde fenêtre Cloud Shell, démarrez l'application de nœud de calcul :

    mvn compile exec:java@worker
  3. Dans Cloud Shell, cliquez sur Aperçu sur le Web > Prévisualiser sur le port 8080 pour prévisualiser l'application Quiz.

  4. Cliquez sur Take Test (Faire le test).

  5. Cliquez sur Places (Lieux).

  6. Répondez à la question, sélectionnez une note, saisissez un commentaire, puis cliquez sur Send Feedback (Envoyer les commentaires).

  7. Revenez à la deuxième fenêtre Cloud Shell.

Vous devriez constater que l'application de nœud de calcul a reçu le message de commentaire via son gestionnaire et l'a affiché dans la deuxième fenêtre Cloud Shell. Voici un exemple de message de commentaire :

Feedback received: Feedback{email='app.dev.student@dummy.org', quiz='places', feedback='love the test', rating=5, timestamp=1527564677609, sentimentScore=0.0} Remarque : Vous pouvez ignorer en toute sécurité le résultat de la commande WARNING lié à une opération d'accès réflexif illégale.
  1. Arrêtez l'application Web et l'application de console.

Tâche 6 : Utiliser l'API Cloud Natural Language

Dans cette section, vous allez rédiger le code qui effectue l'analyse des sentiments sur les commentaires envoyés par les utilisateurs. Pour en savoir plus, consultez cette page sur l'API Google Cloud Natural Language.

Rédiger le code qui appelle l'API Cloud Natural Language

  1. Revenez à l'éditeur et ouvrez le fichier LanguageService.java dans le dossier services/gcp/languageapi.

  2. Accédez à la méthode analyzeSentiment(...) et créez un objet LanguageServiceClient dans un bloc try.

    • Notez qu'à cette étape, le code que vous copiez dans le fichier ne comprend pas de texte // END TODO :
    // TODO: Create the LanguageServiceClient object try (LanguageServiceClient language = LanguageServiceClient.create()) {
  3. Créez un objet Document à l'aide de son compilateur et configurez-le avec le type et le contenu du document :

    // TODO: Create a new Document object // using the builder // Set the content and type Document doc = Document.newBuilder() .setContent(feedback) .setType(Document.Type.PLAIN_TEXT) .build(); // END TODO
  4. Avec l'objet client Natural Language, analysez le sentiment du document et attribuez le résultat de cette analyse à un objet Sentiment :

    // TODO: Use the client to analyze // the sentiment of the feedback Sentiment sentiment = language .analyzeSentiment(doc) .getDocumentSentiment(); // END TODO
  5. Ensuite, renvoyez le score de sentiment à partir de l'objet sentiment :

    // TODO: Return the sentiment score return sentiment.getScore(); // END TODO }

    N'oubliez pas l'accolade fermante.

  6. Enregistrez le fichier.

Rédiger le code qui exploite les fonctionnalités de l'API Natural Language

  1. Revenez au fichier backend/ConsoleApp.java.

  2. Accédez à la méthode main(...).

  3. Dans la méthode main(), créez un objet SubscriptionName représentant un nouvel abonnement nommé "worker2-subscription".

    • Cet abonnement remplace l'abonnement "worker1-subscription".
    // TODO: Create the Pub/Sub subscription name ProjectSubscriptionName subscription = ProjectSubscriptionName.of(projectId, "worker2-subscription"); // END TODO
  4. Au point indiqué en commentaire, créez l'instance LanguageService avec la méthode statique create() :

    // TODO: Create the languageService LanguageService languageService = LanguageService.create(); // END TODO
  5. Au point indiqué en commentaire, procédez à la détection du sentiment dans les commentaires avec l'objet languageService :

    // TODO: Use the Natural Language API to analyze sentiment float sentimentScore = languageService.analyzeSentiment( feedback.getFeedback()); // END TODO
  6. Ensuite, consignez le score dans la console et attribuez une nouvelle propriété de score à l'objet feedback :

    // TODO: Set the feedback object sentiment score feedback.setSentimentScore(sentimentScore); System.out.println("Score is: " + sentimentScore); // END TODO
  7. Enregistrez le fichier.

Exécuter l'application Web et l'application du nœud de calcul, et tester l'API Natural Language

  1. Revenez à la première fenêtre Cloud Shell et redémarrez l'application Web.

  2. Passez à la deuxième fenêtre Cloud Shell, puis redémarrez l'application du nœud de calcul.

  3. Prévisualisez l'application Web, puis cliquez sur Take Test > Places (Faire le test > Lieux).

  4. Répondez aux questions, sélectionnez une note, saisissez un commentaire, puis cliquez sur Send Feedback (Envoyer les commentaires).

  5. Revenez à la deuxième fenêtre Cloud Shell.

    Le résultat indique que l'application du nœud de calcul a appelé l'API Cloud Natural Language et affiche le score des sentiments dans la console à côté de Score is:.

    Par exemple :

    Feedback received: Feedback{email='app.dev.student@dummy.org', quiz='places', feedback='loved the test', rating=1, timestamp=1570116062687, sentimentScore=0.0} Score is: 0.8
  6. Arrêtez l'application Web et l'application de nœud de calcul.

Tâche 7 : Conserver les données dans Cloud Spanner

Dans cette section, vous allez créer une instance, une base de données et une table Cloud Spanner. Ensuite, vous allez rédiger le code permettant de conserver les données de commentaires dans la base de données.

Créer une instance Cloud Spanner

  1. Revenez à la console Cloud.
  2. Accédez au menu de navigation > Spanner.
  3. Cliquez sur CRÉER UNE INSTANCE.
  4. Définissez Nom de l'instance sur quiz-instance.
  5. Dans la section Sélectionner une configuration, choisissez us-central1 via le menu déroulant "Sélectionner une Configuration".
  6. Cliquez sur Créer.

Créer une base de données et une table Cloud Spanner

  1. Sur la page Détails de l'instance de quiz-instance, cliquez sur CRÉER UNE BASE DE DONNÉES.

  2. Dans le champ Nom de la base de données, saisissez quiz-database.

  3. Dans la zone de texte sous Define your schema (Définir le schéma), saisissez l'instruction SQL suivante :

    CREATE TABLE Feedback ( feedbackId STRING(100) NOT NULL, email STRING(100), quiz STRING(20), feedback STRING(MAX), rating INT64, score FLOAT64, timestamp INT64 ) PRIMARY KEY (feedbackId);

    Page "Attribuer un nom à votre base de données" avec le code ajouté au champ "Define your schema" (Définir le schéma)

  4. Cliquez sur Créer.

Rédiger le code permettant de conserver les données dans Cloud Spanner

Remarque : Pour plus d'informations sur les API Cloud Spanner, consultez API et documentation de référence.

Pour plus d'informations sur les API spécifiques utilisées dans cette section, dans le volet gauche de la page "API et documentation de référence", section "API et documentation de référence", cliquez sur Bibliothèques clientes > Documentation de référence sur Java.
  1. Revenez à l'éditeur de code et accédez à la méthode insertFeedback(...) dans le fichier ...services/gcp/spanner/SpannerService.java.

  2. Obtenez une référence à Cloud Spanner :

    // TODO: Get a reference to the Spanner API SpannerOptions options = SpannerOptions.newBuilder().build(); Spanner spanner = options.getService(); // END TODO
  3. Obtenez une référence à la base de données Spanner via l'objet DatabaseId :

    // TODO: Get a reference to the quiz-instance // and its quiz-database DatabaseId db = DatabaseId.of( options.getProjectId(), "quiz-instance", "quiz-database"); // END TODO
  4. Obtenez une référence au client de base de données Cloud Spanner :

    // TODO: Get a client for the quiz-database DatabaseClient dbClient = spanner.getDatabaseClient(db); // END TODO
  5. Créez un objet List<Mutation> pour référencer toutes les modifications qui seront apportées à la base de données :

    // TODO: Create a list to hold mutations // against the database List<Mutation> mutations = new ArrayList<>(); // END TODO // END TODO
  6. Ajoutez la Mutation qui représente une insertion dans la table des commentaires, avec des données extraites de l'objet feedback :

    // TODO: Add an insert mutation mutations.add( // TODO: Build a new insert mutation Mutation.newInsertBuilder("Feedback") .set("feedbackId") .to(feedback.getEmail() + '_' + feedback.getQuiz() + "_" + feedback.getTimestamp()) .set("email") .to(feedback.getEmail()) .set("quiz") .to(feedback.getQuiz()) .set("feedback") .to(feedback.getFeedback()) .set("rating") .to(feedback.getRating()) .set("score") .to( feedback.getSentimentScore()) .set("timestamp") .to(feedback.getTimestamp()) .build()); // END TODO
  7. À l'aide du client de base de données, écrivez les mutations :

    // TODO: Write the change to Spanner dbClient.write(mutations); // END TODO
  8. Enregistrez le fichier.

Rédiger le code qui exploite les fonctionnalités de Cloud Spanner

  1. Accédez à la méthode main(...) dans le fichier backend/ConsoleApp.java.

  2. Dans la méthode main(), créez un objet SubscriptionName représentant un nouvel abonnement nommé "worker3-subscription".

    • Cet abonnement remplace l'abonnement "worker2-subscription" :
    // TODO: Create the Pub/Sub subscription name ProjectSubscriptionName subscription = ProjectSubscriptionName.of(projectId, "worker3-subscription"); // END TODO
  3. Au point indiqué en commentaire, créez l'instance SpannerService :

    // TODO: Create the spannerService SpannerService spannerService = SpannerService.create(); // END TODO
  4. Au point indiqué en commentaire, insérez les commentaires dans la base de données avec l'objet spannerService et inscrivez un message dans la console :

    // TODO: Insert the feedback into Cloud Spanner spannerService.insertFeedback(feedback); System.out.println("Feedback saved"); // END TODO
  5. Enregistrez le fichier.

Exécuter l'application Web et l'application du nœud de calcul, et tester Cloud Spanner

  1. Revenez à la première fenêtre Cloud Shell et démarrez l'application Web.

  2. Passez à la deuxième fenêtre Cloud Shell et redémarrez l'application du nœud de calcul.

  3. Prévisualisez l'application Quiz. Cliquez sur Take Test > Places (Faire le test > Lieux).

  4. Répondez aux questions, sélectionnez une note, saisissez un commentaire, puis cliquez sur Send Feedback (Envoyer les commentaires).

  5. Revenez à la deuxième fenêtre Cloud Shell.

    Vous devriez constater que l'application du nœud de calcul a appelé l'API Cloud Spanner et affiché le message dans la fenêtre de la console.

  6. Revenez à la console. Accédez au menu de navigation > Spanner.

  7. Sélectionnez quiz-instance > quiz-database, et cliquez sur Requête dans le panneau de gauche.

  8. Pour exécuter une requête dans la boîte de dialogue Requête, saisissez SELECT * FROM Feedback, puis cliquez sur Exécuter :

SELECT * FROM Feedback

Vous devriez voir apparaître la nouvelle entrée de commentaire dans la base de données Cloud Spanner. Cette entrée comprend les données du message provenant de Cloud Pub/Sub et le score de l'application Quiz provenant de l'API Cloud Natural Language.

Page de la requête quiz-database avec la page à onglets &quot;Résultats&quot; affichant le feedbackID avec son score, sa note et son commentaire

Terminer l'atelier

Une fois l'atelier terminé, cliquez sur Terminer l'atelier. Google Cloud Skills Boost supprime les ressources que vous avez utilisées, puis efface le compte.

Si vous le souhaitez, vous pouvez noter l'atelier. Sélectionnez un nombre d'étoiles, saisissez un commentaire, puis cliquez sur Envoyer.

Le nombre d'étoiles correspond à votre degré de satisfaction :

  • 1 étoile = très insatisfait(e)
  • 2 étoiles = insatisfait(e)
  • 3 étoiles = ni insatisfait(e), ni satisfait(e)
  • 4 étoiles = satisfait(e)
  • 5 étoiles = très satisfait(e)

Si vous ne souhaitez pas donner votre avis, vous pouvez fermer la boîte de dialogue.

Pour soumettre des commentaires, suggestions ou corrections, veuillez accéder à l'onglet Assistance.

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.

Avant de commencer

  1. Les ateliers créent un projet Google Cloud et des ressources pour une durée déterminée.
  2. 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.
  3. En haut à gauche de l'écran, cliquez sur Démarrer l'atelier pour commencer.

Utilisez la navigation privée

  1. Copiez le nom d'utilisateur et le mot de passe fournis pour l'atelier
  2. Cliquez sur Ouvrir la console en navigation privée

Connectez-vous à la console

  1. 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.
  2. Acceptez les conditions d'utilisation et ignorez la page concernant les ressources de récupération des données.
  3. 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

Le meilleur moyen d'exécuter cet atelier consiste à utiliser une fenêtre de navigation privée. 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.