Ce didacticiel montre comment gérer des sessions sur Cloud Run.
De nombreuses applications requièrent une fonctionnalité de gestion de session pour l'authentification et le stockage des préférences utilisateur. Le framework Jetty intègre une mise en œuvre basée sur la mémoire pour assurer cette gestion. Cette mise en œuvre n'est toutefois pas adaptée à une application pouvant être diffusée depuis plusieurs instances. En effet, la session enregistrée dans une instance peut différer des autres instances. Ce didacticiel montre comment gérer des sessions sur Cloud Run.
Objectifs
- Écrire l'application
- Exécuter l'application en local
- Déployer l'application sur Cloud Run
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 API.
-
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 API.
-
Dans Google Cloud Console, ouvrez l'application dans Cloud Shell.
Cloud Shell vous permet d'accéder en ligne de commande à vos ressources cloud, directement depuis votre navigateur. Ouvrez Cloud Shell dans votre navigateur et cliquez sur Continuer pour télécharger l'exemple de code et accéder au répertoire de l'application.
-
Dans Cloud Shell, configurez la CLI
gcloud
pour qu'elle utilise votre nouveau projet Google Cloud:# Configure gcloud for your project gcloud config set project YOUR_PROJECT_ID
-
Mettez à jour Maven pour qu'il utilise Java 11 par défaut:
sudo update-alternatives --config java
Lorsque vous y êtes invité, saisissez le nombre requis pour sélectionner Java 11. Notez le chemin d'accès répertorié pour cette version. - Exportez le chemin que vous avez copié à l'étape précédente en tant que variable d'environnement:
export JAVA_HOME=java-11-path
L'application Web
L'application affiche des messages d'accueil dans différentes langues pour chaque utilisateur. Les utilisateurs connus reçoivent toujours les messages d'accueil dans la même langue.
Pour que votre application puisse stocker les préférences d'un utilisateur, vous devez mettre en œuvre une méthode permettant de stocker les informations sur l'utilisateur actuel dans une session. Cet exemple d'application utilise un objet WebFilter
pour récupérer et mettre à jour les données de session dans Firestore.
Le diagramme suivant illustre la façon dont Firestore gère les sessions pour l'application Cloud Run.
La requête HttpServletRequest
utilise un cookie pour stocker un identifiant unique pour la session locale, qui correspond à un document dans Firestore contennat les détails de la session.
Supprimer des sessions
Firestore ne supprime pas les sessions anciennes ou ayant expiré. Google Cloud Console vous permet de supprimer les données de session. Vous pouvez également mettre en œuvre une stratégie de suppression automatique. Si vous utilisez des solutions de stockage pour des sessions telles que Memcache ou Redis, les sessions expirées sont automatiquement supprimées.
Exécution locale
Démarrez le serveur HTTP :
mvn jetty:run
Affichez l'application dans votre navigateur Web :
Cloud Shell
Dans la barre d'outils Cloud Shell, cliquez sur Aperçu sur le Web et sélectionnez Prévisualiser sur le port 8080.
Machine locale
Dans votre navigateur, accédez à
http://localhost:8080
L'un des cinq messages d'accueil suivants s'affiche : "Hello World", "Hallo Welt", "Hola mundo", "Salut le Monde" ou "Ciao Mondo". La langue change si vous ouvrez la page dans un autre navigateur ou en mode navigation privée. Vous pouvez consulter et modifier les données de session dans Google Cloud Console.
Dans votre fenêtre de terminal, appuyez sur
Control+C
pour arrêter le serveur HTTP.
Déployer et exécuter sur Cloud Run
Vous pouvez utiliser Cloud Run pour créer et déployer une application qui fonctionne de manière fiable sous une charge élevée et avec de grandes quantités de données.
Dans votre fenêtre de terminal, créez et déployez une image de votre code dans Google Container Registry (GCR) avec le plug-in Jib Maven.
mvn clean package jib:build
Déployez l'application sur Cloud Run :
gcloud beta run deploy session-handling --image gcr.io/MY_PROJECT/session-handling
--platform managed --region us-central1 --memory 512MRemplacez
MY_PROJECT
par l'ID du projet Cloud que vous avez créé. Accédez à l'URL renvoyée par cette commande pour observer comment les données de session persistent entre les chargements de page.
Déboguer l'application
Si vous ne pouvez pas vous connecter à votre application Cloud Run, vérifiez les points suivants :
- Vérifiez que les commandes de déploiement
gcloud
ont bien abouti et n'ont généré aucune erreur. S'il y a eu des erreurs (par exemple,message=Build failed
), corrigez-les et réessayez de déployer l'application Cloud Run. Dans Cloud Console, accédez à la page Explorateur de journaux.
Accéder à la page Explorateur de journaux
Dans la liste déroulante Ressources sélectionnées récemment, cliquez sur Application Cloud Run, puis sur Tous les ID de module. La liste des requêtes correspondant à votre accès à l'application s'affiche. Si cette liste n'apparaît pas, vérifiez que vous avez bien sélectionné Tous les ID de module dans la liste déroulante. Si des messages d'erreur s'affichent dans Cloud Console, vérifiez que le code de votre application correspond au code décrit dans la section sur l'écriture de l'application Web.
Assurez-vous que l'API Firestore est activée.
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.
Supprimer l'instance Cloud Run
Supprimez le service de Cloud Run.
- Dans Cloud Console, accédez à la page Services de Cloud Run.
- Sélectionnez le service que vous souhaitez supprimer.
- Cliquez sur Supprimer delete pour supprimer le service.
Étapes suivantes
- Découvrez d'autres tutoriels Cloud Functions.
- 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.