arrow_back

Développement d'applications : Déployer l'application dans l'environnement flexible App Engine – Python

Accédez à plus de 700 ateliers et cours

Développement d'applications : Déployer l'application dans l'environnement flexible App Engine – Python

Atelier 2 heures universal_currency_alt 5 crédits show_chart Débutant
info Cet atelier peut intégrer des outils d'IA pour vous accompagner dans votre apprentissage.
Accédez à plus de 700 ateliers et cours

Présentation

Une application App Engine est une ressource d'application composée d'un ou de plusieurs services. Chaque service peut être configuré afin d'utiliser différents environnements d'exécution et de fonctionner avec des paramètres de performance différents. Vous pouvez déployer plusieurs versions du service dans un même service, chaque version étant ensuite exécutée dans une ou plusieurs instances, en fonction de la quantité de trafic qu'elle peut gérer selon les paramètres configurés. Pour plus d'informations, consultez la page Présentation d'App Engine.

App Engine utilise un environnement standard ou flexible. Dans le premier cas, les instances sont exécutées dans un bac à sable, où les options de processeur disponibles ainsi que les accès au disque sont limités.

À l'inverse, l'environnement flexible exécute l'application dans des conteneurs Docker sur des machines virtuelles (VM) Google Compute Engine, lesquelles comportent moins de restrictions. Par exemple, vous pouvez utiliser le langage de programmation ou la bibliothèque de votre choix, écrire sur le disque et même exécuter plusieurs processus. Vous pouvez également choisir les types de machines Compute Engine dont vous avez besoin pour vos instances. Pour plus d'informations sur les environnements App Engine, reportez-vous aux pages Environnement standard App Engine et Environnement flexible App Engine.

Dans cet atelier, vous allez déployer l'application Quiz dans l'environnement flexible App Engine, et tirer parti des fonctionnalités d'App Engine, telles que celles relatives aux versions et à la répartition du trafic.

Objectifs

Cet atelier va vous apprendre à effectuer les tâches suivantes :

  • Créer un fichier app.yaml décrivant les conditions de l'environnement flexible App Engine pour une application

  • Déployer l'application Quiz dans l'environnement flexible App Engine

  • Utiliser les versions et la répartition du trafic pour procéder à un test A/B d'une fonctionnalité de l'application

Prérequis

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 offre un accès en ligne de commande à vos ressources GCP.

  1. Dans la barre d'outils située en haut à droite de la console GCP, cliquez sur le bouton Open Cloud Shell (Ouvrir Cloud Shell).

    Icône Cloud Shell

  2. Cliquez sur Continue (Continuez):

    cloudshell_continue

Le provisionnement et la connexion à l'environnement ne devraient pas prendre plus de quelques minutes. Une fois connecté, vous êtes en principe authentifié et le projet est défini sur votre ID_PROJET. Exemple :

Terminal Cloud Shell

gcloud est l'outil de ligne de commande associé à Google Cloud Platform. Pré-installé sur Cloud Shell, il est également compatible avec la saisie semi-automatique via la touche de tabulation.

Vous pouvez répertorier le nom des comptes actifs à l'aide de cette commande :

gcloud auth list

Résultat :

Credentialed accounts:
 - <myaccount>@<mydomain>.com (active)

Exemple de résultat :

Credentialed accounts:
 - google1623327_student@qwiklabs.net

Pour répertorier les ID de projet, exécutez la commande suivante :

gcloud config list project

Résultat :

[core]
project = <ID_projet>

Exemple de résultat :

[core]
project = qwiklabs-gcp-44776a13dea667a6

Préparer l'application de l'étude de cas

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. Clonez le dépôt pour la classe.

git clone https://github.com/GoogleCloudPlatform/training-data-analyst
  1. Créez un lien symbolique qui servira de raccourci vers le répertoire de travail.

ln -s ~/training-data-analyst/courses/developingapps/v1.3/python/appengine ~/appengine

Configurer l'application Quiz

  1. Passez au répertoire qui contient les exemples de fichiers de l'atelier.

cd ~/appengine/start
  1. Lancez le fichier exécutable en exécutant la commande suivante :

. prepare_environment.sh Remarque : Veuillez ignorer l'avertissement et réexécuter la commande si vous recevez une erreur "OperationError". Poursuivez l'atelier, car des ressources existent déjà.

Ce fichier de script :

  • crée une application App Engine ;

  • crée un bucket Cloud Storage ;

  • exporte les variables d'environnement GCLOUD_PROJECT et GCLOUD_BUCKET ;

  • crée un environnement Python isolé virtualenv pour Python 3 et l'active.

  • met à jour PIP, puis exécute la commande pip install -r requirements.txt ;

  • crée des entités dans Datastore ;

  • crée des rôles IAM et des comptes de service ;

  • crée un sujet Pub/Sub ;

  • crée une instance, une base de données et une table Cloud Spanner ;

  • crée une fonction Cloud ;

  • affiche l'ID du projet.

Examiner le code

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 gcloud, l'éditeur de code intégré.

Dans cette section, vous allez examiner le code de l'application Quiz dans l'éditeur de texte Cloud Shell.

Lancer l'éditeur de code Cloud Shell

Dans Cloud Shell, cliquez sur Open Editor (Ouvrir l'éditeur).

open-editor.png

L'éditeur de code s'ouvre avec Cloud Shell dans un nouvel onglet de votre navigateur.

Examiner le code

Accédez à /appengine/start.

La structure du dossier de l'application Quiz correspond à la manière dont cette dernière sera déployée dans App Engine. Par exemple, l'application Web se trouve dans le dossier frontend, qui contient par conséquent les fichiers de configuration d'App Engine. Le fichier app.yaml est présent dans le dossier frontend.

Préparer le code de l'application pour son déploiement dans l'environnement flexible App Engine

Créer le fichier app.yaml pour l'interface

Dans cette section, vous allez modifier les fichiers de configuration qui se trouvent dans le dossier frontend et qui sont associés au déploiement de l'application Quiz dans l'environnement flexible App Engine.

  1. Dans l'éditeur de code Cloud Shell, ouvrez le fichier frontend/app.yaml.

  2. Ajoutez deux paires clé/valeur, et régler la mise à l'échelle sur manuelle:

    runtime: python env: flex manual_scaling: instances: 1
    • La première indique que vous voulez utiliser l'environnement d'exécution Python.

    • La deuxième indique que vous voulez utiliser un environnement flexible.

    • Le nombre d'instances est défini sur 1. Un service de production doit généralement être autorisé à évoluer vers plus d'instances.

  3. Ajoutez une troisième entrée de configuration comme point d'entrée dans le fichier app.yaml.

    entrypoint: "gunicorn -b 0.0.0.0:8080 quiz:app"

Cette valeur est la ligne de commande qui exécute l'application Flask à l'aide du serveur HTTP Gunicorn.

  1. Add runtime_config.

runtime_config: python_version: 3
  1. Ajoutez une dernière entrée de configuration, env_variables, au fichier app.yaml Incluez une clé GCLOUD_BUCKET et la valeur tirée de -media bucket dans votre projet. Veillez à remplacer [GCLOUD_PROJECT] par l'ID de projet GCP indiqué dans le panneau de gauche de l'atelier.

env_variables: GCLOUD_BUCKET: "[GCLOUD_PROJECT]-media"
  1. Enregistrez le fichier.

app.yaml

runtime: python env: flex manual_scaling: instances: 1 entrypoint: gunicorn -b 0.0.0.0:8080 quiz:app runtime_config: python_version: 3 env_variables: GCLOUD_BUCKET: "[GCLOUD_PROJECT]-media"

Déployer l'interface dans l'environnement flexible App Engine

  1. Définition dans Cloud Shell du délai avant expiration de la requête pour Cloud Build.

gcloud config set app/cloud_build_timeout 1800
  1. Déployez l'application Quiz dans l'environnement flexible App Engine

    gcloud app deploy ./frontend/app.yaml

    Saisissez Y pour confirmer.

    App Engine met le code en package, le conteneurise et le déploie automatiquement.

    Le déploiement prend jusqu'à 20 minutes.

  2. Dans la console Cloud Platform, cliquez sur le menu de navigation > App Engine.

  3. Cliquez sur le lien vers votre application dans le coin supérieur droit du tableau de bord App Engine.

    Le lien se présente sous la forme https://<ID_PROJET>.appspot.com.

    Vous devriez voir votre application.

    Cliquez sur Check my progress (Vérifier ma progression) pour vérifier l'objectif.

Déployer l'interface dans l'environnement flexible App Engine

Modifier une application dans un environnement flexible App Engine

Dans cette section, vous allez modifier le code de l'application avant de la redéployer.

Modifier l'application Quiz

  1. Dans l'éditeur de code Cloud Shell, ouvrez le fichier frontend/quiz/webapp/templates/home.html.

  2. Ajoutez plusieurs points d'exclamation au titre de premier niveau.

{% extends 'master.html' %} {% block head %} <title>Quiz - Python</title> {% endblock %} {% block content %} <h1>Welcome to the Quite Interesting Quiz!!!!!!</h1> <div class="jumbotron"> <p>Welcome to the Quite Interesting Quiz where you can create a question, take a test or review feedback</p> </div> <h3 class="col-md-4"> <a href="/questions/add">Create Question</a></h3> <h3 class="col-md-4"> <a href="/client/">Take Test</a></h3> <h3 class="col-md-4"><a href="/leaderboard">Leaderboard</a></h3> {% endblock %}

Toutes les modifications que vous êtes susceptible d'apporter à une application le seront selon ce même principe.

  1. Enregistrez le fichier.

Déployer l'application modifiée

  1. Dans Cloud Shell, redéployez l'application App Engine.

    gcloud app deploy ./frontend/app.yaml --no-promote \ --no-stop-previous-version

    Saisissez Y pour confirmer.

    Vous remarquerez la présence de deux indicateurs supplémentaires dans la commande. Ces indicateurs précisent que la version précédente continuera à recevoir du trafic.

    La mise à jour du déploiement peut prendre jusqu'à 20 minutes.

    Cliquez sur Check my progress (Vérifier ma progression) pour vérifier l'objectif.

    Déployer l'application modifiée

    Dans la console, cliquez sur le menu de navigation > App Engine > Dashboard (Tableau de bord).

  2. Cliquez sur l'URL de l'application en haut à droite de la fenêtre. L'ancien titre de l'application reste affiché.

  3. Dans la fenêtre App Engine, cliquez sur Versions. Vous devrez peut-être actualiser la page jusqu'à ce que les deux versions de l'application s'affichent.

    ce3f927d2d2ab6ed.png

    Cliquez sur le lien des deux versions pour afficher la nouvelle et l'ancienne version de l'application Quiz.

    Nouvelle version (remarquez les points d'exclamation !) :

    5d4414237d6a2193.png

    Ancienne version :

    737770c3d5014496.png

  4. Cochez les deux versions de l'application, puis cliquez sur Split traffic (Répartir le trafic).

    5e05eafcdad27aec.png

    Sélectionnez la case d'option permettant de répartir le trafic entre les versions de manière aléatoire.

    Configurez la répartition du trafic de manière à envoyer 50 % du trafic vers l'ancienne version et 50 % vers la nouvelle version.

    b479ab269633c349.png

    Cliquez sur Save (Enregistrer).

  5. Retournez dans le tableau de bord, définissez Version sur All versions (Toutes les versions), puis cliquez sur le lien de l'application.

    d197378ef07b5623.png

    Il ne devrait y avoir plus qu'une seule version de l'application.

  6. Actualisez plusieurs fois la page d'accueil.

L'ancienne version et la nouvelle s'affichent chacune 50 % du temps.

Dans la réalité, une petite partie du trafic pourrait d'abord être envoyée vers la nouvelle version dans une version Canary, et vous utiliseriez un cookie ou une adresse IP pour garantir au client l'affichage cohérent d'une seule version de l'application.

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 2020 Google LLC Tous droits réservés. Google et le logo Google sont des marques de Google LLC. Tous les autres noms d'entreprises et de produits peuvent être des marques des entreprises 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

Ouvrez une fenêtre de navigateur en mode navigation privée pour effectuer cet atelier. 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.