Guide de démarrage rapide pour Java dans l'environnement flexible App Engine

Dans ce guide de démarrage rapide, vous allez apprendre à créer une petite application App Engine permettant d'afficher un court message.

Avant de commencer

Dans ce guide de démarrage rapide, nous partons du principe que vous avez installé le kit de développement Java SE 8 (JDK).

Avant d'exécuter et de déployer ce démarrage rapide, installez le SDK Cloud, puis configurez un projet GCP pour App Engine :

  1. Téléchargez et installez le SDK Cloud :

    Télécharger le SDK

    Remarque : Si le SDK Cloud est déjà installé, mettez-le à jour en exécutant la commande suivante :

    gcloud components update
    
  2. Créez un projet :

    gcloud projects create [YOUR_PROJECT_ID] --set-as-default
    

    Vérifiez que le projet a été créé :

    gcloud projects describe [YOUR_PROJECT_ID]
    

    Vous voyez alors les informations relatives au projet qui peuvent se présenter sous la forme suivante :

    createTime: year-month-hour
    lifecycleState: ACTIVE
    name: project-name
    parent:
    id: '433637338589'
    type: organization
    projectId: project-name-id
    projectNumber: 499227785679
    
  3. Initialisez votre application App Engine avec votre projet, puis choisissez sa région :

    gcloud app create --project=[YOUR_PROJECT_ID]
    

    Lorsque vous y êtes invité, sélectionnez la région dans laquelle vous souhaitez déployer votre application App Engine.

  4. Assurez-vous que la facturation est activée pour votre projet. Un compte de facturation doit être associé à votre projet pour que l'application puisse être déployée dans App Engine.

    Activer la facturation

    Tant qu'il est actif, le déploiement de votre environnement flexible engendre des coûts. Nettoyez votre projet lorsque vous avez terminé pour éviter des coûts permanents.

  5. Installez les composants requis suivants :

    • Télécharger et installer Git.
    • Installer le composant App Engine :

      gcloud components install app-engine-java
      
    • Installer Maven. Ce démarrage rapide utilise la version 3.5 ou une version ultérieure d'Apache Maven pour créer, exécuter et déployer l'exemple d'application. Pour en savoir plus sur l'installation de Maven, consultez la page Utiliser Apache Maven et le plug-in App Engine.

Zones App Engine

App Engine est régional, ce qui signifie que l'infrastructure qui exécute vos applications est située dans une région spécifique et gérée par Google pour être disponible de manière redondante dans toutes les zones de cette région.

Lors de la sélection d'une région dans laquelle exécuter vos applications, vous devez tout d'abord considérer vos exigences en matière de latence, de disponibilité et de durabilité. Vous pouvez choisir la région la plus proche des utilisateurs de votre application, mais vous devez aussi tenir compte de l'emplacement des autres produits et services GCP exploités par votre application. L'utilisation des services dans plusieurs emplacements peut affecter la latence et les tarifs de votre application.

App Engine est disponible dans les régions suivantes :

  • northamerica-northeast1 (Montréal)
  • us-central (Iowa)
  • us-west2 (Los Angeles)
  • us-east1 (Caroline du Sud)
  • us-east4 (Virginie du Nord)
  • southamerica-east1 (São Paulo)
  • europe-west (Belgique)
  • europe-west2 (Londres)
  • europe-west3 (Francfort)
  • europe-west6 (Zurich)
  • asia-northeast1 (Tokyo)
  • asia-northeast2 (Osaka)
  • asia-east2 (Hong Kong)
  • asia-south1 (Mumbai)
  • australia-southeast1 (Sydney)

Une fois que vous avez défini la région d'une application, vous ne pouvez plus la modifier.

Si vous avez déjà créé une application App Engine, vous pouvez afficher la région en exécutant la commande gcloud app describe ou en ouvrant le tableau de bord App Engine dans la console GCP. La région de votre application App Engine est indiquée sous http://[YOUR_PROJECT_ID].appspot.com.

Télécharger l'application Hello World

Nous avons créé une application Hello World simple pour Java, afin de vous aider à comprendre rapidement comment déployer une application sur Google Cloud Platform.

  1. Clonez le dépôt de l'exemple d'application Hello World sur votre ordinateur.

    git clone https://github.com/GoogleCloudPlatform/java-docs-samples
    

    Vous pouvez également télécharger l'exemple en tant que fichier zip et l'extraire.

  2. Accédez au répertoire qui contient l'exemple de code.

    cd java-docs-samples/flexible/helloworld
    

Exécuter Hello World sur votre ordinateur local

  1. Démarrez le serveur Web Tomcat local à l'aide du plug-in Spring Boot Maven.

    mvn spring-boot:run
    
  2. Dans votre navigateur Web, saisissez l'adresse suivante :

    http://localhost:8080

Le message Hello World de l'exemple d'application s'affiche sur la page. Dans votre fenêtre de terminal, appuyez sur Ctrl+C pour quitter le serveur Web.

Déployer et exécuter Hello World sur App Engine

Pour déployer votre application dans l'environnement flexible App Engine, procédez comme suit :

  1. Déployez l'application Hello World en exécutant les commandes suivantes à partir du répertoire helloworld :

    gcloud config set project YOUR_PROJECT_ID
    mvn appengine:deploy
  2. Lancez votre navigateur, puis saisissez l'adresse http://YOUR_PROJECT_ID.appspot.com pour afficher l'application.

    gcloud app browse
    YOUR_PROJECT_ID représente l'ID de votre projet GCP.

Cette fois, la page qui affiche le message Hello World est diffusée par un serveur Web exécuté sur une instance App Engine.

Félicitations ! Vous avez déployé votre première application Java dans un environnement flexible App Engine.

Consultez les sections suivantes pour en savoir plus sur le nettoyage et découvrir les prochaines étapes que vous pourriez effectuer.

Effectuer un nettoyage

Afin d'éviter que des frais ne vous soient facturés, vous pouvez supprimer votre projet GCP. Cette démarche interrompra la facturation de toutes les ressources utilisées dans le projet.

  1. Dans Cloud Console, 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. Dans la boîte de dialogue, saisissez l'ID du projet, puis cliquez sur Arrêter pour supprimer le projet.

Étapes suivantes

Découvrez la plate-forme dans son ensemble

Maintenant que vous savez comment développer et déployer des applications App Engine, vous pouvez explorer le reste de GCP. Le SDK Cloud est déjà installé et vous permet d'interagir avec des produits tels que Cloud SQL, Cloud Storage, Cloud Firestore, etc.

Pour apprendre pas à pas à créer une application qui utilise l'ensemble de la plate-forme et pas seulement App Engine, accédez à notre guide de démarrage rapide pour créer l'application Bookshelf.

En savoir plus sur l'environnement flexible App Engine

Voici quelques articles qui vous aideront à mieux connaître App Engine :

Examiner le code Hello World

Hello World est l'application App Engine la plus simple qui soit : elle ne contient qu'un seul service, ne possède qu'une seule version, et tout le code se trouve dans le répertoire racine de l'application. Cette section décrit chacun des fichiers de l'application en détail.

HelloServlet.java

Le fichier HelloServlet.java spécifie un modèle d'URL qui décrit l'emplacement où l'application écoutera les requêtes, et répond à toutes les requêtes comportant le message "Hello World".

@SuppressWarnings("serial")
@WebServlet(name = "helloworld", value = "/")
public class HelloServlet extends HttpServlet {

  @Override
  public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
    PrintWriter out = resp.getWriter();
    out.println("Hello, world - Flex Servlet");
  }
}

app.yaml

Le fichier app.yaml décrit la configuration de déploiement d'une application :

runtime: java
env: flex

handlers:
- url: /.*
  script: this field is required, but ignored

runtime_config:  # Optional
  jdk: openjdk8
  server: jetty9

manual_scaling:
  instances: 1

Ici, le fichier app.yaml spécifie l'environnement d'exécution utilisé par l'application et définit env: flex, qui indique que l'application utilise l'environnement flexible.

pom.xml

Hello World inclut également un fichier pom.xml qui contient des informations sur le projet, telles que ses dépendances et la cible de compilation.

<project>                               <!-- REQUIRED -->

  <modelVersion>4.0.0</modelVersion>    <!-- REQUIRED -->
  <packaging>war</packaging>            <!-- REQUIRED -->

  <groupId>com.example.flex.helloworld</groupId>
  <artifactId>helloworld-servlet</artifactId> <!-- Name of your project -->
  <version>1.0-SNAPSHOT</version>       <!-- xx.xx.xx -SNAPSHOT means development -->

  <properties>
    <maven.compiler.source>1.8</maven.compiler.source> <!-- REQUIRED -->
    <maven.compiler.target>1.8</maven.compiler.target> <!-- REQUIRED -->
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

    <failOnMissingWebXml>false</failOnMissingWebXml> <!-- REQUIRED -->
    <appengine.maven.plugin>1.3.2</appengine.maven.plugin>
    <jetty.maven.plugin>9.4.3.v20170317</jetty.maven.plugin>
  </properties>

  <parent>                              <!-- Get parameters and allow bulk testing -->
    <artifactId>getting-started-java</artifactId>
    <groupId>com.example</groupId>
    <version>1.0.0</version>
    <relativePath>..</relativePath>
  </parent>

  <dependencies>
    <dependency>                        <!-- REQUIRED -->
      <groupId>javax.servlet</groupId>  <!-- Java Servlet API -->
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
      <scope>provided</scope>           <!-- Provided by the Jetty Servlet Container -->
    </dependency>
  </dependencies>

  <build>
    <!-- For hot reload of the web application when using an IDE Eclipse / IDEA -->
    <outputDirectory>${project.build.directory}/${project.build.finalName}/WEB-INF/classes</outputDirectory>

    <plugins>

      <plugin>                          <!-- Used for local debugging -->
        <groupId>org.eclipse.jetty</groupId>
        <artifactId>jetty-maven-plugin</artifactId>
        <version>${jetty.maven.plugin}</version>
      </plugin>

      <plugin>
        <groupId>com.google.cloud.tools</groupId>
        <artifactId>appengine-maven-plugin</artifactId>
        <version>${appengine.maven.plugin}</version>
        <configuration>
          <!-- deploy configuration -->
<!--
          <deploy.promote>true</deploy.promote>                           <!~~ DEFAULT value ~~>
          <deploy.stopPreviousVersion>true</deploy.stopPreviousVersion>   <!~~ DEFAULT value ~~>
 -->
        </configuration>
      </plugin>

    </plugins>
  </build>
</project>