Déployer une application Spring Boot dans l'environnement standard App Engine

Les applications App Engine sont faciles à créer et à gérer, et à évoluer facilement en fonction de l'évolution de vos besoins en termes de trafic et de stockage de données. Avec App Engine, vous n'avez aucun serveur à gérer. Il vous suffit d'importer votre application pour l'utiliser.

Les applications App Engine s'adaptent automatiquement au trafic entrant. L'équilibrage de charge, les microservices, l'autorisation, les bases de données SQL et NoSQL, la mise en cache de la mémoire, la répartition du trafic, la journalisation, la recherche, la gestion des versions, les déploiements et les rollbacks, ainsi que l'analyse de sécurité sont des fonctionnalités natives et hautement personnalisables.

L'environnement standard App Engine et l'environnement flexible App Engine sont compatibles avec de nombreux langages de programmation, tels que Java, Python, PHP, NodeJS et Go. Ces deux environnements offrent aux développeurs une flexibilité optimale pour gérer leur application. Chaque environnement possède des avantages spécifiques. Pour plus d'informations, consultez la page Choisir un environnement App Engine.

Vous allez apprendre à déployer une application Spring Boot dans l'environnement standard App Engine. L'environnement standard effectue un scaling à la baisse à zéro instance lorsque personne ne l'utilise et effectue un scaling automatique à la hausse.

Conditions préalables

  • Bonne connaissance des outils et du langage de programmation Java
  • Une bonne connaissance des éditeurs de texte Linux standards tels que Vim, Emacs et nano

Objectifs de l'atelier

  • Créer une application Java Spring Boot sur App Engine

Prérequis

Configuration de l'environnement au rythme de chacun

  1. Connectez-vous à Cloud Console, puis créez un projet ou réutilisez un projet existant. (Si vous ne possédez pas encore de compte Gmail ou G Suite, vous devez en créer un.)

Mémorisez l'ID du projet. Il s'agit d'un nom unique permettant de différencier chaque projet Google Cloud (le nom ci-dessus est déjà pris ; vous devez en trouver un autre). Il sera désigné par le nom PROJECT_ID tout au long de cet atelier de programmation.

  1. Vous devez ensuite activer la facturation dans Cloud Console afin d'utiliser les ressources Google Cloud.

Le coût de cet atelier de programmation ne devrait pas vous coûter plus que quelques dollars, mais il pourrait être plus élevé si vous décidez d'utiliser davantage de ressources ou de les laisser s'exécuter.

Les nouveaux utilisateurs de Google Cloud peuvent bénéficier d'un essai offert de 300$.

Cloud Shell

Vous utiliserez Cloud Shell, un environnement de ligne de commande fonctionnant dans Google Cloud.

Activer Cloud Shell

  1. Dans Cloud Console, cliquez sur Activer Cloud Shell .

Si vous n'avez encore jamais démarré Cloud Shell, un écran intermédiaire s'affiche en dessous de la ligne de séparation pour décrire de quoi il s'agit. Si tel est le cas, cliquez sur Continuer (cet écran ne s'affiche qu'une seule fois). Voici à quoi il ressemble :

Le provisionnement et la connexion à Cloud Shell ne devraient pas prendre plus de quelques minutes.

Cette machine virtuelle contient tous les outils de développement nécessaires. Elle intègre un répertoire d'accueil persistant de 5 Go et s'exécute sur Google Cloud, ce qui améliore nettement les performances réseau et l'authentification. Vous pouvez réaliser une grande partie, voire la totalité, des activités de cet atelier dans un simple navigateur ou sur votre Chromebook.

Une fois connecté à Cloud Shell, vous êtes en principe authentifié et le projet est défini avec votre ID de projet.

  1. Exécutez la commande suivante dans Cloud Shell pour vérifier que vous êtes authentifié :
gcloud auth list

Résultat de la commande

 Credentialed Accounts
ACTIVE  ACCOUNT
*       <my_account>@<my_domain.com>

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
gcloud config list project

Résultat de la commande

[core]
project = <PROJECT_ID>

Si vous obtenez un résultat différent, exécutez cette commande :

gcloud config set project <PROJECT_ID>

Résultat de la commande

Updated property [core/project].

Après le lancement de Cloud Shell, vous pouvez utiliser la ligne de commande pour générer une nouvelle application Spring Boot avec Spring Initializr.

$ curl https://start.spring.io/starter.tgz \
  -d bootVersion=2.1.8.RELEASE \
  -d dependencies=web \
  -d baseDir=gae-standard-example | tar -xzvf -
$ cd gae-standard-example

Il existe deux manières de déployer une application de serveur Java, à l'aide du plug-in Maven App Engine ou Gradle App Engine, ou en déployant le répertoire de package war. Vous allez utiliser le plug-in Maven App Engine pour déployer l'application.

Ajouter le plug-in Maven App Engine

Mettez à jour pom.xml pour inclure un plug-in Google Cloud qui simplifie le processus de déploiement. Vous pouvez utiliser Vim, nano ou Emacs pour modifier le fichier.

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" ...>
  ...
  <build>
    <plugins>
      ...
      <plugin>
        <groupId>com.google.cloud.tools</groupId>
        <artifactId>appengine-maven-plugin</artifactId>
        <version>2.1.0</version>
        <configuration>
          <version>1</version>
          <projectId>GCLOUD_CONFIG</projectId>
        </configuration>
      </plugin>
      ...
    </plugins>
  </build>
</project>
  1. Pour déployer l'application dans l'environnement standard App Engine, vous devez créer un fichier de descripteur src/main/appengine/app.yaml.
$ mkdir -p src/main/appengine/
$ touch src/main/appengine/app.yaml
  1. Modifiez le fichier src/main/appengine/app.yaml et ajoutez le contenu suivant:

src/main/appengine/app.yaml

runtime: java11
instance_class: F4

Ajoutez une manette qui renvoie "hello world!" dans DemoApplication.java.

src/main/java/com/example/demo/DemoApplication.java

package com.example.demo;

...

// Add imports
import org.springframework.web.bind.annotation.*;

@SpringBootApplication
@RestController
public class DemoApplication {
  public static void main(String[] args) {
    SpringApplication.run(DemoApplication.class, args);
  }

  @GetMapping("/")
  public String hello() {
    return "hello world!";
  }
}
  1. Vous pouvez démarrer l'application Spring Boot avec le plug-in Spring Boot:
$ ./mvnw -DskipTests spring-boot:run
  1. Une fois l'application démarrée, cliquez sur Aperçu sur le Web dans la barre d'outils Cloud Shell, puis sélectionnez Prévisualiser sur le port 8080.

Un onglet s'ouvre dans votre navigateur et se connecte au serveur que vous avez démarré.

  1. Commencez par initialiser le projet afin de pouvoir exécuter des applications App Engine. Initialisez également le projet à exécuter dans la région centrale des États-Unis.
$ gcloud app create --region us-central
You are creating an app for project [...].
WARNING: Creating an App Engine application for a project is irreversible and the region
cannot be changed. More information about regions is at
https://cloud.google.com/appengine/docs/locations
  1. Déployez ensuite votre application dans l'environnement standard App Engine en exécutant mvn appengine:deploy.
$ ./mvnw -DskipTests package appengine:deploy
... first time deploy may take a couple of minutes
  1. Une fois l'application déployée, vous pouvez la consulter en ouvrant la page http://<project-id>.appspot.com dans votre navigateur Web ou en exécutant la commande suivante dans Cloud Shell:
$ gcloud app browse
... [It may print out the URL for your app]

Vous avez appris à créer votre première application Web App Engine.

En savoir plus