Solution de démarrage rapide : la plate-forme d'e-commerce avec informatique sans serveur

Last reviewed 2023-08-24 UTC

Ce guide vous aide à comprendre, déployer et utiliser la solution de plate-forme d'e-commerce avec solution informatique sans serveur. Cette solution montre comment créer et exécuter une application d'e-commerce pour une entreprise de vente au détail, avec un site Web proposant une boutique en ligne visible publiquement. Elle vous explique comment créer une application capable de s'adapter pour gérer les pics d'utilisation (par exemple, lors d'événements de grande ampleur comme une vente saisonnière) et de gérer les requêtes en fonction de l'emplacement du visiteur. Cette conception permet à la boutique en ligne de proposer un service cohérent aux clients répartis géographiquement.

Cette solution est un bon point de départ si vous souhaitez apprendre à déployer des applications Web d'e-commerce évolutives avec des technologies sans serveur. Si vous souhaitez un contrôle opérationnel précis, découvrez la solution d'Application Web d'e-commerce déployée sur Kubernetes.

Dans ce document, nous partons du principe que vous maîtrisez les concepts de base du cloud, mais pas nécessairement Google Cloud. L'expérience de Terraform est utile.

Objectifs

Ce guide de solution vous aide à effectuer les opérations suivantes :

  • Apprendre comment concevoir une architecture système pour un site Web d'e-commerce.
  • Optimiser un site Web d'e-commerce pour améliorer les performances, l'évolutivité et la réactivité.
  • Surveiller et anticiper les limites de charge.
  • Utiliser le traçage et les rapports d'erreurs pour comprendre et gérer les problèmes.

Produits

La solution utilise les produits Google Cloud suivants :

  • Cloud Run : service entièrement géré qui vous permet de créer et de déployer des applications conteneurisées sans serveur. Google Cloud gère le scaling et d'autres tâches d'infrastructure afin que vous puissiez vous concentrer sur la logique métier de votre code.
  • Cloud SQL : base de données PostgreSQL dans le cloud entièrement gérée sur l'infrastructure Google Cloud.
  • Secret Manager : service qui vous permet de stocker des secrets, de les gérer et d'y accéder sous forme de blobs ou chaînes de texte binaires. Vous pouvez utiliser Secret Manager pour stocker les mots de passe de base de données, les clés API ou les certificats TLS requis par une application lors de son exécution.
  • Cloud Storage : service adapté aux entreprises qui fournit un stockage d'objets économique et sans limite pour divers types de données. Les données sont accessibles depuis l'intérieur et l'extérieur de Google Cloud et sont répliquées de manière géoredondante.
  • Firebase Hosting : service d'hébergement entièrement géré pour déployer et diffuser vos applications Web et vos contenus statiques.
  • Cloud Logging : service permettant de stocker, rechercher, analyser et surveiller les données et les événements de journalisation de Google Cloud et d'autres clouds, et d'envoyer des alertes si nécessaire.
  • Cloud Trace : système de traçage distribué pour Google Cloud qui vous aide à comprendre le temps nécessaire à votre application pour gérer les requêtes entrantes des utilisateurs ou d'autres applications, ainsi que le temps nécessaire pour effectuer des opérations telles que les appels RPC.
  • Error Reporting : ce service rassemble et affiche les erreurs générées dans vos services cloud en cours d'exécution. Error Reporting regroupe les erreurs pouvant découler de la même cause.

Architecture

Le schéma suivant montre l'architecture de la solution :

Application Web d'e-commerce déployée avec Cloud Run

Processus de requête

Voici comment la plate-forme d'e-commerce traite les requêtes. Les étapes du flux sont numérotées comme indiqué dans le schéma de l'architecture précédente.

  1. Une interface client Firebase Hosting. L'interface utilise Lit et des composants Web pour le rendu côté client des données d'API.
  2. Le client Web appelle un backend d'API qui s'exécute en tant que service Cloud Run. Le serveur d'API Cloud Run est écrit en Django à l'aide du framework REST Django.
  3. La configuration et les autres secrets de l'application Python sont stockés dans Secret Manager.
  4. Les éléments statiques de l'application sont stockés dans Cloud Storage.
  5. Une base de données Cloud SQL exploitant PostgreSQL est utilisée comme backend de base de données relationnelle pour l'application Python.
  6. Cloud Logging, Cloud Trace et Error Reporting stockent les journaux, les traces OpenTelemetry et les rapports d'erreurs envoyés par d'autres produits cloud et le serveur d'API Cloud Run. Ces données permettent de surveiller le bon comportement de l'application et de résoudre les problèmes liés à un comportement inattendu.

Coût

Pour obtenir une estimation du coût des ressources Google Cloud utilisées par la solution de plate-forme d'e-commerce sans serveur, consultez l'estimation précalculée dans le Simulateur de coût Google Cloud.

Utilisez l'estimation comme point de départ pour calculer le coût de votre déploiement. Vous pouvez modifier l'estimation afin qu'elle reflète les modifications de configuration que vous prévoyez d'apporter aux ressources utilisées dans la solution.

L'estimation précalculée est basée sur des hypothèses pour certains facteurs, y compris les suivants :

  • Emplacements Google Cloud où les ressources sont déployées.
  • La durée d'utilisation des ressources.

Avant de commencer

Pour déployer cette solution, vous devez d'abord disposer d'un projet Google Cloud et de certaines autorisations IAM.

Créer ou choisir un projet Google Cloud

Lors du déploiement de la solution, vous devez choisir le projet Google Cloud dans lequel les ressources vont être déployées. Lorsque vous décidez d'utiliser un projet existant ou d'en créer un, prenez en compte les facteurs suivants :

  • Si vous créez un projet pour la solution, vous pouvez supprimer le projet lorsque vous n'en avez plus besoin et éviter de continuer à payer des frais. Si vous utilisez un projet existant, vous devez supprimer le déploiement lorsque vous n'en avez plus besoin.
  • L'utilisation d'un nouveau projet permet d'éviter les conflits avec les ressources précédemment provisionnées, telles que les ressources utilisées pour les charges de travail de production.

Si vous souhaitez déployer la solution dans un nouveau projet, créez-le avant de commencer le déploiement.

Pour créer un projet, procédez comme suit :

  1. Dans Google Cloud Console, accédez à la page de sélection du projet.

    Accéder au sélecteur de projet

  2. Pour commencer à créer un projet Google Cloud, cliquez sur Créer un projet.

  3. Attribuez un nom à votre projet. Notez l'ID de projet que vous avez généré.

  4. Modifiez les autres champs si nécessaire.

  5. Pour créer le projet, cliquez sur Créer.

Obtenir les autorisations IAM requises

Pour démarrer le processus de déploiement, vous devez disposer des autorisations IAM (Identity and Access Management) répertoriées dans le tableau suivant. Si vous disposez du rôle de base roles/owner pour le projet dans lequel vous prévoyez de déployer la solution, vous disposez déjà de toutes les autorisations nécessaires. Si vous ne disposez pas du rôle roles/owner, demandez à votre administrateur de vous accorder ces autorisations (ou des rôles qui les incluent).

Autorisation IAM requise Rôle prédéfini incluant les autorisations requises

serviceusage.services.enable

Administrateur Service Usage
(roles/serviceusage.serviceUsageAdmin)

iam.serviceAccounts.create

Administrateur de compte de service
(roles/iam.serviceAccountAdmin)

resourcemanager.projects.setIamPolicy

Administrateur de projet IAM
(roles/resourcemanager.projectIamAdmin)
config.deployments.create
config.deployments.list
Administrateur Cloud Infrastructure Manager
(roles/config.admin)

Compte de service créé pour la solution

Si vous démarrez le processus de déploiement via la console, Google crée un compte de service pour déployer la solution en votre nom (et pour supprimer le déploiement ultérieurement si vous le souhaitez). Certaines autorisations IAM sont attribuées temporairement à ce compte de service. En d'autres termes, les autorisations sont révoquées automatiquement une fois les opérations de déploiement et de suppression de la solution terminées. Nous vous recommandons de supprimer le compte de service après avoir supprimé le déploiement, comme décrit plus loin dans ce guide.

Afficher les rôles attribués au compte de service

Ces rôles sont listés ici si un administrateur de votre projet ou de votre organisation Google Cloud a besoin de ces informations.

Déployer la solution

Pour vous aider à déployer cette solution avec un minimum d'efforts, une configuration Terraform est fournie dans GitHub. La configuration Terraform définit toutes les ressources Google Cloud requises pour la solution.

Vous pouvez déployer la solution en utilisant l'une des méthodes suivantes :

  • Via la console : utilisez cette méthode si vous souhaitez essayer la solution avec la configuration par défaut et voir comment elle fonctionne. Cloud Build déploie toutes les ressources requises pour la solution. Lorsque vous n'avez plus besoin de la solution déployée, vous pouvez la supprimer via la console. Toutes les ressources que vous créez après le déploiement de la solution devront peut-être être supprimées séparément.

    Pour utiliser cette méthode de déploiement, suivez les instructions de la section Déployer via la console.

  • À l'aide de la CLI Terraform : utilisez cette méthode si vous souhaitez personnaliser la solution, ou automatiser le provisionnement et la gestion des ressources à l'aide de l'approche Infrastructure as Code (IaC). Téléchargez la configuration Terraform depuis GitHub, personnalisez éventuellement le code si nécessaire et déployez la solution à l'aide de la CLI Terraform. Après avoir déployé la solution, vous pouvez continuer à la gérer à l'aide de Terraform.

    Pour utiliser cette méthode de déploiement, suivez les instructions de la section Déployer à l'aide de la CLI Terraform.

Déployer via la console

Pour déployer la solution préconfigurée, suivez la procédure suivante.

  1. Dans le catalogue de solutions Google Cloud pour un démarrage rapide, accédez à la solution Plate-forme d'e-commerce avec informatique sans serveur.

    Accéder à la solution Plate-forme d'e-commerce avec informatique sans serveur

  2. Examinez les informations fournies sur la page, telles que l'estimation du coût de la solution et le temps de déploiement estimé.

  3. Lorsque vous êtes prêt à déployer la solution, cliquez sur Déployer.

    Un guide interactif détaillé s'affiche.

  4. Suivez la procédure du guide interactif.

    Notez le nom que vous saisissez pour le déploiement. Ce nom sera requis ultérieurement lorsque vous supprimerez le déploiement.

    Lorsque vous cliquez sur Déployer, la page Déploiements de solutions s'affiche. Le champ État de cette page indique En cours de déploiement.

  5. Attendez que la solution soit déployée.

    Si le déploiement échoue, le champ État indique Échec. Vous pouvez utiliser le journal Cloud Build pour diagnostiquer les erreurs. Pour en savoir plus, consultez la section Erreurs lors du déploiement via la console.

    Une fois le déploiement terminé, le champ État indique Déployé.

  6. Pour afficher et utiliser l'application Web d'e-commerce déployée, suivez les instructions de la page Explorer votre déploiement Avocano.

  7. Pour afficher les ressources Google Cloud déployées et leur configuration, effectuez une visite guidée interactive.

    Commencer la visite

Lorsque vous n'avez plus besoin de la solution, vous pouvez supprimer le déploiement pour éviter de continuer à payer des frais pour les ressources Google Cloud. Pour en savoir plus, consultez la section Supprimer le déploiement.

Déployer via la CLI Terraform

Cette section explique comment personnaliser la solution, ou automatiser son provisionnement et sa gestion à l'aide de la CLI Terraform. Les solutions que vous déployez à l'aide de la CLI Terraform ne s'affichent pas sur la page Déploiements de solutions de la console Google Cloud.

Configurer le client Terraform

Vous pouvez exécuter Terraform dans Cloud Shell ou sur votre hôte local. Ce guide explique comment exécuter Terraform dans Cloud Shell, où Terraform est préinstallé et configuré pour s'authentifier auprès de Google Cloud.

Le code Terraform de cette solution est disponible dans un dépôt GitHub.

  1. Clonez le dépôt GitHub dans Cloud Shell.

    Ouvrir dans Cloud Shell

    Une invite s'affiche pour confirmer le téléchargement du dépôt GitHub dans Cloud Shell.

  2. Cliquez sur Confirmer.

    Cloud Shell est lancé dans un onglet de navigateur distinct, et le code Terraform est téléchargé dans le répertoire $HOME/cloudshell_open de votre environnement Cloud Shell.

  3. Dans Cloud Shell, vérifiez si le répertoire de travail actuel est $HOME/cloudshell_open/terraform-dynamic-python-webapp/infra. Il s'agit du répertoire qui contient les fichiers de configuration Terraform pour la solution. Si vous devez accéder à ce répertoire, exécutez la commande suivante :

    cd $HOME/cloudshell_open/terraform-dynamic-python-webapp/infra
    
  4. Initialisez Terraform à l'aide de la commande suivante :

    terraform init
    

    Attendez que le message suivant s'affiche :

    Terraform has been successfully initialized!
    

Configurer les variables Terraform

Le code Terraform que vous avez téléchargé comprend des variables que vous pouvez utiliser pour personnaliser le déploiement en fonction de vos besoins. Par exemple, vous pouvez spécifier le projet Google Cloud et la région dans laquelle vous souhaitez déployer la solution.

  1. Assurez-vous que le répertoire de travail actuel est $HOME/cloudshell_open/terraform-dynamic-python-webapp/infra. Si ce n'est pas le cas, accédez à ce répertoire :

  2. Dans le même répertoire, créez un fichier texte nommé terraform.tfvars.

  3. Dans le fichier terraform.tfvars, copiez l'extrait de code suivant et définissez les valeurs des variables requises.

    • Suivez les instructions fournies en tant que commentaires dans l'extrait de code.
    • Cet extrait de code n'inclut que les variables pour lesquelles vous devez définir des valeurs. La configuration Terraform inclut d'autres variables ayant des valeurs par défaut. Pour examiner toutes les variables et les valeurs par défaut, consultez le fichier variables.tf disponible dans le répertoire $HOME/cloudshell_open/terraform-dynamic-python-webapp/infra.
    • Assurez-vous que chaque valeur que vous définissez dans le fichier terraform.tfvars correspond au type de la variable, comme déclaré dans le fichier variables.tf. Par exemple, si le type défini pour une variable dans le fichier variables.tf est bool, vous devez spécifier true ou false comme valeur de cette variable dans le fichier terraform.tfvars.

      # This is an example of the terraform.tfvars file.
      # The values in this file must match the variable types declared in variables.tf.
      # The values in this file override any defaults in variables.tf.
      
      # ID of the project in which you want to deploy the solution
      project_id = "PROJECT_ID"
      
      # Google Cloud region where you want to deploy the solution
      # Example: us-central1
      region = "REGION"
      
      # Google Cloud zone where you want to deploy the solution
      # Example: us-central1-a
      zone = "ZONE"
      
      # Container Registry that hosts the client image
      client_image_host = "hsa-public/serverless-ecommerce"
      
      # Container Registry that hosts the server image
      server_image_host = "hsa-public/serverless-ecommerce"
      

      Pour en savoir plus sur les valeurs que vous pouvez attribuer aux variables requises, consultez les ressources suivantes :

Valider et examiner la configuration Terraform

  1. Assurez-vous que le répertoire de travail actuel est $HOME/cloudshell_open/terraform-dynamic-python-webapp/infra. Si ce n'est pas le cas, accédez à ce répertoire :

  2. Vérifiez que la configuration ne comporte aucune erreur :

    terraform validate
    

    Si la commande renvoie une erreur, apportez les corrections nécessaires dans la configuration, puis exécutez à nouveau la commande terraform validate. Répétez cette étape jusqu'à ce que la commande renvoie le message suivant :

    Success! The configuration is valid.
    
  3. Examinez les ressources définies dans la configuration :

    terraform plan
    
  4. Si vous n'avez pas créé le fichier terraform.tfvars comme décrit précédemment, Terraform vous invite à saisir des valeurs pour les variables qui n'ont pas de valeurs par défaut. Saisissez les valeurs requises.

    Le résultat de la commande terraform plan est une liste des ressources provisionnées par Terraform lorsque vous appliquez la configuration.

    Si vous souhaitez apporter des modifications, modifiez la configuration, puis exécutez à nouveau les commandes terraform validate et terraform plan.

Provisionner les ressources

Lorsqu'aucune autre modification n'est nécessaire dans la configuration, déployez les ressources.

  1. Assurez-vous que le répertoire de travail actuel est $HOME/cloudshell_open/terraform-dynamic-python-webapp/infra. Si ce n'est pas le cas, accédez à ce répertoire :

  2. Appliquez la configuration Terraform :

    terraform apply
    
  3. Si vous n'avez pas créé le fichier terraform.tfvars comme décrit précédemment, Terraform vous invite à saisir des valeurs pour les variables qui n'ont pas de valeurs par défaut. Saisissez les valeurs requises.

    Terraform affiche la liste des ressources qui seront créées.

  4. Lorsque vous êtes invité à effectuer les actions, saisissez yes.

    Terraform affiche les messages indiquant la progression du déploiement.

    Si le déploiement ne peut pas être terminé, Terraform affiche les erreurs à l'origine de l'échec. Consultez les messages d'erreur et mettez à jour la configuration pour corriger les erreurs, puis exécutez à nouveau la commande terraform apply. Pour obtenir de l'aide concernant la résolution des erreurs Terraform, consultez la section Erreurs lors du déploiement de la solution à l'aide de la CLI Terraform.

    Une fois toutes les ressources créées, Terraform affiche le message suivant :

    Apply complete!
    
  5. Pour afficher et utiliser l'application Web d'e-commerce déployée, suivez les instructions de la page Explorer votre déploiement Avocano.

  6. Pour afficher les ressources Google Cloud déployées et leur configuration, effectuez une visite guidée interactive.

    Commencer la visite

Lorsque vous n'avez plus besoin de la solution, vous pouvez supprimer le déploiement pour éviter de continuer à payer des frais pour les ressources Google Cloud. Pour en savoir plus, consultez la section Supprimer le déploiement.

Explorer votre déploiement Avocano

Vous avez maintenant déployé l'application de site Web Avocano. Vous pouvez visiter et parcourir le site Web d'Avocano, puis explorer le fonctionnement de la solution dans la console Google Cloud. Sachez que quelques minutes peuvent s'écouler après le déploiement de l'application pour que le site s'affiche à l'adresse fournie.

Qu'est-ce que Avocano ?

Cette solution utilise un exemple d'application nommé Avocano pour illustrer le déploiement et la gestion d'une application Web avec bon nombre des outils et produits utilisés pour les applications sans serveur. Avocano est une application qui imite une mise en œuvre réelle d'une application Web d'e-commerce.

L'interface d'Avocano présente une fausse vitrine, où vous pouvez ajouter des articles à votre panier et tenter de finaliser le processus de règlement, mais le magasin révèle alors qu'il s'agit d'un faux (Avoca--no!). Bien que vous ne puissiez pas acheter d'avocat, l'application illustre le fonctionnement de la gestion de l'inventaire en diminuant la quantité de produit disponible d'une unité.

Page de destination Avocano

Explorer l'interface

Pour lancer l'interface de votre déploiement de solution :

  1. Ouvrez la console Firebase.
  2. Sélectionnez votre projet existant.
  3. Accédez à la section Compilation > Hébergement.
  4. Sélectionnez le domaine se terminant par web.app. L'interface de votre exemple d'application s'ouvre dans une nouvelle fenêtre de navigateur.

Vous pouvez désormais interagir avec le site Web d'Avocano comme le feraient ses clients, y compris parcourir les produits, ajouter des produits au panier et procéder au paiement en tant qu'invité.

Afficher la configuration d'autoscaling et de simultanéité

Cloud Run effectue un scaling automatique à la hausse ou à la baisse des instances de conteneur à partir de zéro en fonction du trafic, permettant ainsi un démarrage rapide de votre application.

Comprendre les paramètres d'autoscaling et de simultanéité

Il est important de comprendre que les paramètres d'autoscaling et de simultanéité sur Cloud Run peuvent affecter les performances et les coûts de votre application :

  • Nombre minimal d'instances : vous pouvez définir le paramètre de nombre minimal d'instances afin d'activer les instances inactives pour votre service. En augmentant le paramètre de nombre minimal d'instances en prévision de l'augmentation du trafic, vous pouvez réduire le temps de réponse pour les N premiers utilisateurs. Si votre service nécessite une latence réduite, en particulier lors d'un scaling des instances actives à partir de zéro, vous pouvez spécifier un nombre minimal d'instances de conteneur à garder en attente et prêtes à diffuser des requêtes.

  • Nombre maximal d'instances : l'augmentation du paramètre de nombre maximal d'instances dans Cloud Run peut vous aider anticiper la diffusion d'un trafic exceptionnellement élevé. Dans un tel scénario, vous devez également évaluer votre quota actuel et envisager de demander une augmentation. Réduire le paramètre de nombre maximal d'instances peut vous aider à éviter des coûts inattendus ou une utilisation plus élevée de l'infrastructure de sauvegarde sous-jacente (telle que la capacité de votre base de données).

  • Simultanéité : le paramètre de simultanéité de Cloud Run spécifie le nombre maximal de requêtes pouvant être traitées simultanément par une instance de conteneur donnée. L'optimisation de la mémoire, du processeur et de la simultanéité pour le comportement de votre application garantit une utilisation optimale de chaque instance de conteneur et réduit la nécessité d'effectuer un scaling à la hausse vers de nouvelles instances. Pour en savoir plus, consultez la section Optimiser la simultanéité.

Afficher les paramètres d'autoscaling et de simultanéité

Pour afficher les paramètres actuels du nombre minimal et maximal d'instances, ainsi que les paramètres de simultanéité pour votre service Cloud Run, procédez comme suit :

  1. Accédez à Cloud Run
  2. Cliquez sur le service qui vous intéresse pour ouvrir la page Informations sur le service.
  3. Cliquez sur l'onglet Révisions.
  4. Dans le panneau de détails sur la droite, les paramètres actuels du nombre minimal d'instances, du nombre maximal d'instances et de simultanéité sont listés sous l'onglet Conteneur.

Si vous souhaitez savoir comment ajuster ces paramètres pour optimiser les performances de l'application, consultez les Conseils de développement généraux dans la documentation Cloud Run.

Afficher les journaux du trafic

Vous pouvez utiliser les outils de journalisation de Cloud Run pour surveiller le trafic vers votre application et recevoir des alertes en cas de problème.

Pour afficher les journaux de votre service Cloud Run, procédez comme suit :

  1. Accédez à Cloud Run
  2. Cliquez sur le service choisi dans la liste affichée.
  3. Cliquez sur l'onglet Journaux pour accéder aux journaux de requêtes et de conteneurs pour toutes les révisions de ce service. Vous pouvez filtrer les journaux par niveau de gravité.

Cloud Run capture automatiquement les journaux provenant de nombreuses sources : tout élément de sortie standard ou d'erreur standard, tout élément compris dans /var/log/, etc. Toute journalisation manuelle effectuée avec les bibliothèques Cloud Logging est également capturée. Vous pouvez également afficher les journaux de ce service directement dans Cloud Logging en cliquant sur Afficher dans l'explorateur de journaux.

Dans l'application Avocano, essayez les actions utilisateur suivantes pour déclencher la sortie correspondante que vous pouvez voir dans les journaux.

Action utilisateur Sortie du journal
Procédez à l'achat du panier en utilisant le type de paiement Collect et le nombre d'articles dans le panier ne dépasse pas le nombre d'articles dans l'inventaire. La sortie du journal affiche un journal info, avec l'état httpRequest 200.
Procédez à l'achat du panier en utilisant le type de paiement Collect, mais le nombre d'articles dans le panier dépasse le nombre d'articles dans l'inventaire. La sortie du journal affiche un journal Avertissement avec l'état httpRequest 400.
Procédez à l'achat du panier en utilisant le type de paiement Credit. La sortie du journal affiche un journal Erreur, avec l'état httpRequest 501.

Vous pouvez afficher le code qui génère l'erreur entraînant la réponse HTTP 400/501 dans le fichier serializers.py. Cloud Run note la réponse et génère une entrée de journal de requête correspondante.

Vous pouvez utiliser les alertes basées sur les journaux pour vous avertir lorsqu'un message spécifique apparaît dans vos journaux inclus.

Afficher l'instrumentation de trace et les traces capturées

Cette solution utilise l'instrumentation automatique Python Open Telemetry afin de capturer les données de télémétrie pour l'application Avocano.

Comprendre comment le traçage est implémenté

La solution met en œuvre le code et les paramètres de configuration suivants afin de générer des traces à l'aide d'une instrumentation automatique :

  1. Ajoutez des dépendances pour Cloud Trace dans le fichier requirements.txt, y compris les suivantes :
    • opentelemetry-distro : installe l'API Open Telemetry, le SDK et les outils de ligne de commande.
    • opentelemetry-instrumentation : ajoute la prise en charge de l'instrumentation automatique Python.
    • opentelemetry-exporter-gcp-trace : permet d'exporter des traces vers Cloud Trace.
    • opentelemetry-resource-detector : permet de détecter des ressources Google Cloud.
    • opentelemetry-instrumentation-django : autorise le traçage des requêtes pour l'application Django.
  2. Définissez la liaison IAM dans le fichier iam.tf pour permettre au serveur d'écrire dans Cloud Trace.
  3. Configurez la variable d'environnement OTEL_TRACES_EXPORTER dans le fichier services.tf afin d'utiliser l'exportateur pour Cloud Trace.
  4. Dans server/Procfile, configurez le serveur pour exécuter la commande opentelemetry-instrument sur l'application Avocano. Cette commande détecte les packages dans Avocano et applique une instrumentation de traçage automatique sur ces packages si possible.

Pour en savoir plus sur la collecte de données Cloud Trace pour Python, consultez la page Python et OpenTelemetry.

Afficher les données de latence

Pour afficher les données de latence des requêtes, procédez comme suit :

  1. Accédez à Cloud Trace
  2. Dans la section Sélectionner une trace de la page Liste de traces, cliquez sur le point bleu représentant une trace capturée. La colonne Latence affiche la latence des traces capturées.

Vous pouvez également afficher les données de trace à l'aide des visualisations suivantes de la page Liste de traces :

  • Graphique en cascade : représente une requête complète passée par l'application. Chaque étape de la chronologie correspond à un segment. Cliquez dessus pour afficher les détails. Cloud Run crée automatiquement des segments pour les opérations internes, telles que la gestion des requêtes et l'équilibrage de charge. Ces segments apparaissent dans le même graphique en cascade que les segments produits par Avocano, ce qui vous permet de visualiser la durée de vie complète de la requête.
  • Les détails du segment montrent les étiquettes ou les annotations que vous avez ajoutées au code de l'application au moment de son instrumentation pour le traçage.

Si vous souhaitez ajouter des traces personnalisées, reportez-vous à la section Instrumentation manuelle dans la documentation OpenTelemetry.

Recommandations en matière de conception

Cette section fournit des recommandations concernant l'utilisation de la solution de plate-forme d'e-commerce sans serveur afin de développer une architecture répondant à vos exigences en termes de sécurité, de fiabilité, de coût et de performances.

Pour afficher les recommandations de conception pour chaque domaine, cliquez sur l'onglet approprié.

 Renforcer la sécurité

Axe de conception Recommandations
Chiffrement des données

Par défaut, Cloud Run chiffre les données à l'aide d'une clé de chiffrement gérée par Google. Pour protéger vos conteneurs à l'aide d'une clé que vous contrôlez, vous pouvez utiliser des clés de chiffrement gérées par le client. Pour en savoir plus, consultez la page Utiliser des clés de chiffrement gérées par le client.

Sécurité sur la chaîne d'approvisionnement logicielle Pour vous assurer que seules les images de conteneurs autorisées sont déployées sur les services Cloud Run, vous pouvez utiliser l'autorisation binaire.

 Améliorer la fiabilité

Axe de conception Recommandations
Scaling de l'application Les services Cloud Run de la solution sont configurés pour effectuer l'autoscaling horizontal des instances de conteneurs en fonction de la charge des requêtes. Examinez et ajustez les paramètres d'autoscaling en fonction de vos besoins. Pour en savoir plus, consultez la page À propos de l'autoscaling des instances de conteneurs.
Gestion des requêtes Pour améliorer la réactivité des services Cloud Run qui stockent l'état des instances de conteneurs spécifique au client, vous pouvez utiliser l'affinité de session. Les requêtes d'un même client sont acheminées vers la même instance de conteneur, dans la mesure du possible. Pour en savoir plus, consultez la page Définir l'affinité de session (services).
Durabilité des données Pour protéger vos données contre la perte, vous pouvez utiliser des sauvegardes automatiques de la base de données Cloud SQL. Pour en savoir plus, consultez la page À propos des sauvegardes Cloud SQL.
Haute disponibilité (HA) de la base de données

La base de données Cloud SQL de la solution est déployée dans une seule zone. Pour la haute disponibilité, vous pouvez utiliser une configuration multizone. Pour en savoir plus, consultez la page À propos de la haute disponibilité.

Si la haute disponibilité de la base de données est une exigence critique, AlloyDB pour PostgreSQL est un autre service Google Cloud que vous pouvez envisager d'utiliser.

Fiabilité de la base de données

L'instance Cloud SQL de cette solution utilise le type de machine db-custom-2-4096, qui utilise deux processeurs avec 4 Go de mémoire. Ce type de machine est conçu pour fournir des ressources à une base de données à faible coût, qui ne serait adaptée qu'aux environnements de test et de développement. Si vous avez besoin de fiabilité en production, envisagez d'utiliser un type de machine qui fournit plus de processeurs et de mémoire.

Les instances Cloud SQL qui utilisent le type de machine db-g1-small ne sont pas incluses dans le contrat de niveau de service Cloud SQL. Pour en savoir plus sur les configurations exclues du contrat de niveau de service, consultez la page Consignes opérationnelles.

Quotas et limites

Le nombre de ressources Cloud Run est limité. Si vous prévoyez une augmentation du trafic, par exemple en raison de ventes ou de promotions saisonnières, vous devez demander une augmentation de quota. Pour en savoir plus, consultez la page Augmenter le quota.

Certaines demandes de quotas nécessitent une approbation manuelle. Il est donc préférable de s'y prendre à l'avance. Vous pouvez également définir des alertes sur votre progression par rapport à votre quota.

 Optimiser les coûts

Axe de conception Recommandations
Consommation efficace des ressources

Cloud Run détermine le nombre de requêtes à envoyer à une instance de conteneur en fonction de l'utilisation du processeur et de la mémoire. En augmentant le paramètre de simultanéité maximale, vous pouvez réduire le nombre d'instances de conteneurs que Cloud Run doit créer, et donc réduire les coûts. Pour en savoir plus, consultez la page Nombre maximal de requêtes simultanées par instance (services).

Les services Cloud Run de cette solution sont configurés pour allouer des processeurs uniquement pendant le traitement des requêtes. Lorsqu'un service Cloud Run termine le traitement d'une requête, l'accès de l'instance de conteneur aux processeurs est désactivé. Pour en savoir plus sur l'impact de cette configuration sur les coûts et les performances, consultez la page Allocation du processeur (services).

 Améliorer les performances

Axe de conception Recommandations
Délai de démarrage de l'application Pour réduire l'impact des démarrages à froid sur les performances, vous pouvez configurer le nombre minimal d'instances de conteneurs Cloud Run sur une valeur non nulle. Pour en savoir plus, consultez la page Conseils de développement généraux pour Cloud Run.
Régler la simultanéité Cette solution est réglée pour maximiser le débit de chaque conteneur. Cloud Run ajuste automatiquement la simultanéité pour traiter plusieurs requêtes. Toutefois, vous devez ajuster la simultanéité maximale par défaut si votre conteneur n'est pas en mesure de traiter de nombreuses requêtes simultanées, ou si votre conteneur est capable de gérer un plus grand volume de requêtes. Pour en savoir plus, consultez la section Optimiser la simultanéité.
Performances des bases de données

Pour les applications exigeant des performances élevées, vous pouvez améliorer les performances de Cloud SQL en utilisant un type de machine plus grand et en augmentant la capacité de stockage.

Si les performances des bases de données sont une exigence critique, AlloyDB pour PostgreSQL est un autre service Google Cloud que vous pouvez envisager d'utiliser.

Veuillez noter les points suivants :

  • Avant d'apporter des modifications à la conception, évaluez l'impact sur les coûts et envisagez des compromis potentiels avec d'autres fonctionnalités. Vous pouvez évaluer l'impact des modifications de conception sur les coûts à l'aide du simulateur de coût Google Cloud.
  • Pour implémenter des modifications de conception dans la solution, vous devez disposer d'une expertise en codage Terraform et d'une connaissance approfondie des services Google Cloud utilisés dans la solution.
  • Si vous modifiez la configuration Terraform fournie par Google et que vous rencontrez des erreurs, définissez un problème dans GitHub. Les problèmes GitHub sont examinés de la manière la plus optimale possible et ne sont pas destinés aux questions d'utilisation générales.
  • Pour en savoir plus sur la conception et la configuration d'environnements de production dans Google Cloud, consultez les pages Conception de zone de destination dans Google Cloud et Checklist de configuration de Google Cloud.

Supprimer le déploiement de la solution

Lorsque vous n'avez plus besoin du déploiement de la solution, supprimez-le pour éviter de continuer à payer des frais pour les ressources que vous avez créées.

Supprimer via la console

Suivez cette procédure si vous avez déployé la solution via la console.

  1. Dans la console Google Cloud, accédez à la page Déploiements de solutions.

    Accéder à la page "Déploiements de solutions"

  2. Sélectionnez le projet contenant le déploiement que vous souhaitez supprimer.

  3. Recherchez le déploiement que vous souhaitez supprimer.

  4. Cliquez sur Actions, puis sélectionnez Supprimer.

  5. Saisissez le nom du déploiement, puis cliquez sur Confirmer.

    Le champ État indique Suppression.

    Si la suppression échoue, consultez les conseils de dépannage de la section Erreur lors de la suppression d'un déploiement.

Lorsque vous n'avez plus besoin du projet Google Cloud que vous avez utilisé pour la solution, vous pouvez le supprimer. Pour en savoir plus, consultez la section Facultatif : supprimer le projet.

Suppression à l'aide de la CLI Terraform

Suivez cette procédure si vous avez déployé la solution à l'aide de la CLI Terraform.

  1. Dans Cloud Shell, assurez-vous que le répertoire de travail actuel est $HOME/cloudshell_open/terraform-dynamic-python-webapp/infra. Si ce n'est pas le cas, accédez à ce répertoire :

  2. Supprimez les ressources provisionnées par Terraform :

    terraform destroy
    

    Terraform affiche la liste des ressources qui seront supprimées.

  3. Lorsque vous êtes invité à effectuer les actions, saisissez yes.

    Terraform affiche des messages de progression. Une fois toutes les ressources supprimées, Terraform affiche le message suivant :

    Destroy complete!
    

    Si la suppression échoue, consultez les conseils de dépannage de la section Erreur lors de la suppression d'un déploiement.

Lorsque vous n'avez plus besoin du projet Google Cloud que vous avez utilisé pour la solution, vous pouvez le supprimer. Pour en savoir plus, consultez la section Facultatif : supprimer le projet.

(Facultatif) Supprimez le projet.

Si vous avez déployé la solution dans un nouveau projet Google Cloud dont vous n'avez plus besoin, supprimez-le en procédant comme suit :

  1. Dans la console Google Cloud, accédez à la page Gérer les ressources.

    Accéder à la page Gérer les ressources

  2. Dans la liste des projets, sélectionnez le projet que vous souhaitez supprimer, puis cliquez sur Supprimer.
  3. Lorsque vous y êtes invité, saisissez l'ID du projet, puis cliquez sur Arrêter.

Si vous décidez de conserver le projet, supprimez le compte de service créé pour cette solution, comme décrit dans la section suivante.

Facultatif : supprimer le compte de service

Si vous avez supprimé le projet que vous avez utilisé pour la solution, ignorez cette section.

Comme mentionné précédemment dans ce guide, lorsque vous avez déployé la solution, un compte de service a été créé en votre nom. Certaines autorisations IAM ont été accordées temporairement au compte de service. Autrement dit, les autorisations ont été révoquées automatiquement après la fin des opérations de déploiement et de suppression de la solution, mais le compte de service n'est pas supprimé. Nous vous recommandons de supprimer ce compte de service.

  • Si vous avez déployé la solution via la console Google Cloud, accédez à la page Déploiements de solutions. (Si vous êtes déjà sur cette page, actualisez le navigateur.) Un processus est déclenché en arrière-plan pour supprimer le compte de service. Aucune autre action n'est nécessaire.

  • Si vous avez déployé la solution à l'aide de la CLI Terraform, procédez comme suit :

    1. Dans Google Cloud Console, accédez à la page Comptes de service.

      Accéder à la page "Comptes de service"

    2. Sélectionnez le projet que vous avez utilisé pour la solution.

    3. Sélectionnez le compte de service que vous souhaitez supprimer.

      L'ID d'adresse e-mail du compte de service créé pour la solution est au format suivant :

      goog-sc-DEPLOYMENT_NAME-NNN@PROJECT_ID.iam.gserviceaccount.com
      

      L'ID d'adresse e-mail contient les valeurs suivantes :

      • DEPLOYMENT_NAME : nom du déploiement.
      • NNN : nombre aléatoire à trois chiffres.
      • PROJECT_ID : ID du projet dans lequel vous avez déployé la solution.
    4. Cliquez sur Supprimer.

Résoudre les erreurs

Les actions à effectuer pour diagnostiquer et résoudre les erreurs dépendent de la méthode de déploiement et de la complexité de l'erreur.

Erreurs lors du déploiement via la console

Si le déploiement échoue lorsque vous utilisez la console, procédez comme suit :

  1. Accédez à la page Déploiements de solutions.

    Si le déploiement a échoué, le champ État indique Échec.

  2. Afficher les détails des erreurs à l'origine de l'échec :

    1. Cliquez sur Actions.

    2. Sélectionnez Afficher les journaux Cloud Build.

  3. Consultez le journal Cloud Build et prenez les mesures appropriées pour résoudre le problème à l'origine de l'échec.

Erreurs lors du déploiement à l'aide de la CLI Terraform

Si le déploiement échoue lors de l'utilisation de Terraform, le résultat de la commande terraform apply inclut des messages d'erreur que vous pouvez consulter pour diagnostiquer le problème.

Les exemples des sections suivantes présentent des erreurs de déploiement que vous pouvez rencontrer lorsque vous utilisez Terraform.

Erreur API non activée.

Si vous créez un projet, puis tentez immédiatement de déployer la solution dans le nouveau projet, le déploiement peut échouer avec l'erreur suivante :

Error: Error creating Network: googleapi: Error 403: Compute Engine API has not
been used in project PROJECT_ID before or it is disabled. Enable it by visiting
https://console.developers.google.com/apis/api/compute.googleapis.com/overview?project=PROJECT_ID
then retry. If you enabled this API recently, wait a few minutes for the action
to propagate to our systems and retry.

Si cette erreur se produit, attendez quelques minutes, puis exécutez à nouveau la commande terraform apply.

Erreur "Impossible d'attribuer l'adresse demandée"

Lorsque vous exécutez la commande terraform apply, une erreur cannot assign requested address peut se produire avec un message semblable à celui-ci :

Error: Error creating service account:
 Post "https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts:
 dial tcp [2001:db8:ffff:ffff::5f]:443:
 connect: cannot assign requested address

Si cette erreur se produit, exécutez à nouveau la commande terraform apply.

Erreur lors de la suppression d'un déploiement

Dans certains cas, les tentatives de suppression d'un déploiement peuvent échouer :

  • Après avoir déployé une solution via la console, si vous modifiez une ressource provisionnée par la solution et que vous essayez de supprimer le déploiement, la suppression peut échouer. Le champ État de la page Déploiements de solutions indique Échec. Le journal Cloud Build affiche la cause de l'erreur.
  • Après avoir déployé une solution à l'aide de la CLI Terraform, si vous modifiez une ressource à l'aide d'une interface autre que Terraform (par exemple, la console), et que vous essayez de supprimer le déploiement, la suppression peut échouer. Les messages dans le résultat de la commande terraform destroy indiquent la cause de l'erreur.

Examinez les journaux et les messages d'erreur, identifiez et supprimez les ressources à l'origine de l'erreur, puis essayez à nouveau de supprimer le déploiement.

Si un déploiement effectué à partir de la console n'est pas supprimé et si vous ne pouvez pas diagnostiquer l'erreur à l'aide du journal Cloud Build, vous pouvez supprimer le déploiement à l'aide de la CLI Terraform, comme décrit dans la section suivante.

Supprimer un déploiement effectué à partir de la console à l'aide de la CLI Terraform

Cette section explique comment supprimer un déploiement effectué à partir de la console si des erreurs se produisent lorsque vous essayez de le supprimer via la console. Dans cette approche, vous téléchargez la configuration Terraform du déploiement que vous souhaitez supprimer, puis vous supprimez le déploiement à l'aide de la CLI Terraform.

  1. Identifiez la région dans laquelle le code Terraform, les journaux et d'autres données du déploiement sont stockés. Cette région peut être différente de celle que vous avez sélectionnée lors du déploiement de la solution.

    1. Dans la console Google Cloud, accédez à la page Déploiements de solutions.

      Accéder à la page "Déploiements de solutions"

    2. Sélectionnez le projet contenant le déploiement que vous souhaitez supprimer.

    3. Dans la liste des déploiements, identifiez la ligne correspondant au déploiement que vous souhaitez supprimer.

    4. Cliquez sur Afficher tout le contenu de la ligne.

    5. Dans la colonne Emplacement, notez le deuxième emplacement, comme indiqué dans l'exemple suivant :

      Emplacement du code, des journaux et d'autres artefacts du déploiement.

  2. Dans la console Google Cloud, activez Cloud Shell.

    Activer Cloud Shell

    En bas de la fenêtre de la console Google Cloud, une session Cloud Shell démarre et affiche une invite de ligne de commande. Cloud Shell est un environnement shell dans lequel Google Cloud CLI est déjà installé, et dans lequel des valeurs sont déjà définies pour votre projet actuel. L'initialisation de la session peut prendre quelques secondes.

  3. Créez des variables d'environnement pour l'ID de projet, la région et le nom du déploiement que vous souhaitez supprimer :

    export REGION="REGION"
    export PROJECT_ID="PROJECT_ID"
    export DEPLOYMENT_NAME="DEPLOYMENT_NAME"
    

    Dans ces commandes, remplacez les éléments suivants :

    • REGION : emplacement que vous avez noté précédemment dans cette procédure.
    • PROJECT_ID : ID du projet dans lequel vous avez déployé la solution.
    • DEPLOYMENT_NAME : nom du déploiement que vous souhaitez supprimer.
  4. Obtenez l'ID de la dernière révision du déploiement que vous souhaitez supprimer :

    export REVISION_ID=$(curl \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type: application/json" \
        "https://config.googleapis.com/v1alpha2/projects/${PROJECT_ID}/locations/${REGION}/deployments/${DEPLOYMENT_NAME}" \
        | jq .latestRevision -r)
        echo $REVISION_ID
    

    Le résultat ressemble à ce qui suit :

    projects/PROJECT_ID/locations/REGION/deployments/DEPLOYMENT_NAME/revisions/r-0
    
  5. Obtenez l'emplacement Cloud Storage de la configuration Terraform pour le déploiement :

    export CONTENT_PATH=$(curl \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type: application/json" \
        "https://config.googleapis.com/v1alpha2/${REVISION_ID}" \
        | jq .applyResults.content -r)
        echo $CONTENT_PATH
    

    Voici un exemple de résultat de cette commande :

    gs://PROJECT_ID-REGION-blueprint-config/DEPLOYMENT_NAME/r-0/apply_results/content
    
  6. Téléchargez la configuration Terraform de Cloud Storage vers Cloud Shell :

    gsutil cp -r $CONTENT_PATH $HOME
    cd $HOME/content/infra
    

    Attendez que le message Operation completed s'affiche, comme illustré dans l'exemple suivant :

    Operation completed over 45 objects/268.5 KiB
    
  7. Initialisez Terraform :

    terraform init
    

    Attendez que le message suivant s'affiche :

    Terraform has been successfully initialized!
    
  8. Supprimez les ressources déployées :

    terraform destroy
    

    Terraform affiche la liste des ressources qui seront supprimées.

    Si des avertissements concernant des variables non déclarées s'affichent, ignorez-les.

  9. Lorsque vous êtes invité à effectuer les actions, saisissez yes.

    Terraform affiche des messages de progression. Une fois toutes les ressources supprimées, Terraform affiche le message suivant :

    Destroy complete!
    
  10. Supprimez l'artefact de déploiement :

    curl -X DELETE \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type: application/json" \
        "https://config.googleapis.com/v1alpha2/projects/${PROJECT_ID}/locations/${REGION}/deployments/${DEPLOYMENT_NAME}?force=true&delete_policy=abandon"
    
  11. Attendez quelques secondes, puis vérifiez que l'artefact de déploiement a été supprimé :

    curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type: application/json" \
        "https://config.googleapis.com/v1alpha2/projects/${PROJECT_ID}/locations/${REGION}/deployments/${DEPLOYMENT_NAME}" \
        | jq .error.message
    

    Si le résultat indique null, attendez quelques secondes, puis exécutez à nouveau la commande.

    Une fois l'artefact de déploiement supprimé, un message s'affiche comme illustré dans l'exemple suivant :

    Resource 'projects/PROJECT_ID/locations/REGION/deployments/DEPLOYMENT_NAME' was not found
    

Envoyer des commentaires

Les solutions pour un démarrage rapide sont fournies uniquement à titre d'information et ne constituent pas des produits officiellement compatibles. Google est susceptible de modifier ou supprimer des solutions sans préavis.

Pour résoudre les erreurs, consultez les journaux Cloud Build et la sortie Terraform.

Pour envoyer vos commentaires, procédez comme suit :

  • Pour obtenir de la documentation, des tutoriels intégrés à la console ou la solution, utilisez le bouton Envoyer des commentaires.
  • Pour le code non modifié, créez des problèmes dans le dépôt GitHub approprié :

    Les problèmes GitHub sont examinés de la manière la plus optimale possible et ne sont pas destinés aux questions d'utilisation générales.

  • Pour les problèmes liés aux produits utilisés dans la solution, prenez contact avec Cloud Customer Care.

Étapes suivantes

Cette solution montre comment déployer une application Web d'e-commerce à l'aide de Cloud Run. Pour en savoir plus sur les produits et fonctionnalités Google Cloud, consultez les pages suivantes :