Concevoir une application Go sur App Engine

ID de la région

Le REGION_ID est un code abrégé que Google attribue en fonction de la région que vous sélectionnez lors de la création de votre application. Le code ne correspond pas à un pays ou une province, même si certains ID de région peuvent ressembler aux codes de pays et de province couramment utilisés. Pour les applications créées après février 2020, REGION_ID.r est inclus dans les URL App Engine. Pour les applications existantes créées avant cette date, l'ID de région est facultatif dans l'URL.

En savoir plus sur les ID de région

Ce guide vous aide à démarrer avec App Engine et à vous familiariser avec le développement, le déploiement et la gestion d'une application Go.

Une fois que vous avez créé votre application, vous pouvez lire d'autres tutoriels pour apprendre à l'intégrer à d'autres services Google Cloud et lui ajouter des fonctionnalités.

Coûts

Les procédures de ce guide n'engendrent aucun coût. L'exécution seule de cet exemple d'application ne dépasse pas votre quota gratuit.

Configurer votre environnement de développement

Vous pouvez soit utiliser des outils qui vous sont familiers sur votre ordinateur local, soit employer Cloud Shell. Cloud Shell comprend Google Cloud CLI, votre environnement déjà configuré et de nombreuses autres fonctionnalités.

Ordinateur local

Installez Go et configurez gcloud CLI comme décrit dans la section Configurer votre environnement de développement.

Cloud Shell

Lancez Cloud Shell. Tous les outils dont vous aurez besoin y sont pré-installés.

Ouvrir Cloud Shell

Créer un projet Google Cloud

Un projet est requis pour utiliser Google Cloud et constitue la base de l'utilisation de tous les services Google Cloud.

  1. 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.
  2. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de projet

  3. Vérifiez que la facturation est activée pour votre projet Google Cloud.

  4. Activez Cloud Build API.

    Activer l'API

  5. Installez Google Cloud CLI.
  6. Pour initialiser gcloudCLI, exécutez la commande suivante :

    gcloud init
  7. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de projet

  8. Vérifiez que la facturation est activée pour votre projet Google Cloud.

  9. Activez Cloud Build API.

    Activer l'API

  10. Installez Google Cloud CLI.
  11. Pour initialiser gcloudCLI, exécutez la commande suivante :

    gcloud init
  12. Créez votre application App Engine et ses ressources associées. Vous devez sélectionner un emplacement, qui ne pourra pas être modifié ultérieurement.
    gcloud app create

Créer un service Web de base pour App Engine

Découvrez comment créer un service Web et comment déclarer les paramètres d'exécution.

Structurer les fichiers

Votre service utilisera la structure de fichiers suivante :

  • go-app/ : répertoire de votre service Go 1.12+
    • app.yaml : paramètres de configuration du service
    • main.go : code de votre application

Créer le fichier app.yaml

Chaque projet App Engine dispose d'un fichier de configuration app.yaml qui spécifie les paramètres d'environnement d'exécution du service. Le déploiement de ce dernier est impossible sans ce fichier.

  1. Créez un dossier nommé go-app pour votre service Go 1.12+ :

    mkdir go-app

  2. Dans votre dossier go-app/, créez un fichier appelé app.yaml et ajoutez le contenu suivant :

    runtime: go115  # or another supported version
    

    Il s'agit de la configuration la plus simple pour une application App Engine. Elle indique à App Engine que vous utilisez Go. Le fichier app.yaml peut spécifier d'autres versions de Go, paramètres réseau, paramètres de scaling, etc. Pour en savoir plus, consultez la documentation de référence sur app.yaml.

Créer le fichier main.go

Cet exemple utilise le package net/http pour créer un serveur HTTP qui affiche "Hello, World!".

Pour configurer votre fichier main.go :

  1. Dans votre dossier go-app/, créez un fichier appelé main.go.

  2. Ajoutez l'instruction package main pour traiter votre code en tant que programme exécutable :

    package main
    

    Pour déployer correctement un service dans les environnements d'exécution Go 1.12+, une instruction package main doit être définie au début d'au moins un de vos fichiers source Go.

  3. Importez les packages suivants :

    import (
    	"fmt"
    	"log"
    	"net/http"
    	"os"
    )
    
  4. Définissez votre gestionnaire HTTP :

    
    // indexHandler responds to requests with our greeting.
    func indexHandler(w http.ResponseWriter, r *http.Request) {
    	if r.URL.Path != "/" {
    		http.NotFound(w, r)
    		return
    	}
    	fmt.Fprint(w, "Hello, World!")
    }
    

    L'objet http.ResponseWriter assemble la réponse du serveur HTTP. Lorsque vous écrivez sur celle-ci, vous envoyez des données au navigateur. L'objet http.Request est une structure de données qui représente la requête HTTP entrante.

  5. Enregistrez votre gestionnaire HTTP :

    
    func main() {
    	http.HandleFunc("/", indexHandler)
    
    	port := os.Getenv("PORT")
    	if port == "" {
    		port = "8080"
    		log.Printf("Defaulting to port %s", port)
    	}
    
    	log.Printf("Listening on port %s", port)
    	if err := http.ListenAndServe(":"+port, nil); err != nil {
    		log.Fatal(err)
    	}
    }
    

    La fonction main est le point d'entrée de votre programme exécutable, et démarre donc l'application. Elle commence par appeler la fonction http.HandleFunc qui indique au package http de traiter toutes les requêtes dans la racine Web ("/") avec la fonction indexHandler.

    Si la variable d'environnement PORT n'est pas définie, le port 8080 est utilisé par défaut. Lorsque votre application s'exécute sur App Engine, la variable d'environnement PORT est définie pour vous, mais lorsque vous testez votre application localement, vous pouvez définir PORT sur n'importe quelle valeur préférée.

Déployer votre service Web sur App Engine

  1. Dans le répertoire go-app où se trouve votre fichier app.yaml, déployez votre service Web dans App Engine à l'aide de la commande suivante :

    gcloud app deploy

  2. Pour lancer votre navigateur et afficher le service Web à l'adresse https://PROJECT_ID.REGION_ID.r.appspot.com, exécutez la commande suivante :

    gcloud app browse

Félicitations ! Vous venez de créer et de déployer un service sur App Engine.

Services et versions

Le premier service que vous déployez est le service par défaut. Vous pouvez spécifier le nom de votre service dans le fichier app.yaml, mais si le nom est omis, le service est traité en tant que default. Vous pouvez déployer plusieurs services autres que le service par défaut.

Vous pouvez mettre à jour votre service à tout moment en exécutant la commande gcloud app deploy. Chaque fois que vous déployez votre application, une version est créée et le trafic est automatiquement acheminé vers la dernière version.

Pour confirmer la création du service et le déploiement de la version, procédez comme suit :

  1. Affichez vos services App Engine dans la console Google Cloud:

    Voir les services

    Un service nommé default doit s'afficher. Le service par défaut est accessible au public depuis l'URL suivante :

    https://PROJECT_ID.REGION_ID.r.appspot.com

  2. Affichez vos versions :

    Afficher les versions

    Une version horodatée correspondant à votre déploiement doit s'afficher dans la liste.

Pour savoir comment envoyer des requêtes à des services et à des versions spécifiques, consultez la page Mode de routage des requêtes.

Étapes suivantes

Félicitations ! Vous venez de configurer et de déployer votre application Web sur App Engine.

Pour savoir comment ajouter d'autres fonctionnalités à votre application, consultez les pages suivantes :