Implementa una app de Spring Boot en el entorno estándar de App Engine

Las aplicaciones de App Engine son fáciles de crear, mantener y escalar a medida que cambian sus necesidades de almacenamiento de datos y tráfico. Con App Engine, no tendrá que mantener servidores. Solo debes subir tu app y estará lista para usar.

Las aplicaciones de App Engine escalan automáticamente en función del tráfico entrante. El balanceo de cargas, los microservicios, la autorización, las bases de datos SQL y NoSQL, el almacenamiento en caché de memoria, la división de tráfico, el registro, la búsqueda, el control de versiones, los lanzamientos y las reversiones, y el análisis de seguridad son compatibles de forma nativa y sumamente personalizables.

El entorno estándar de App Engine y el entorno flexible de App Engine son compatibles con una gran cantidad de lenguajes de programación, como Java, Python, PHP, NodeJS y Go. Los dos entornos ofrecen a los desarrolladores máxima flexibilidad con respecto al comportamiento de sus aplicaciones. Cada entorno tiene determinadas ventajas. Para obtener más información, consulta Elige un entorno de App Engine.

Aprenderás a implementar una app de Spring Boot en el entorno estándar de App Engine. El entorno estándar reduce la escala a cero instancias cuando nadie lo usa y lo escala automáticamente.

Requisitos previos

  • Estar familiarizado con el lenguaje y las herramientas de programación de Java
  • Conocimientos de editores de texto estándares de Linux, como Vim, Emacs y nano

Actividades

  • Cómo crear una app de Spring Boot Java en App Engine

Requisitos

Configuración del entorno a su propio ritmo

  1. Accede a Cloud Console y crea un proyecto nuevo o reutiliza uno existente. (Si no tienes una cuenta de Gmail o G Suite, debes crear una).

Recuerde el ID de proyecto, un nombre único en todos los proyectos de Google Cloud (el nombre anterior ya se encuentra en uso y no lo podrá usar). Se mencionará más adelante en este codelab como PROJECT_ID.

  1. A continuación, debes habilitar la facturación en Cloud Console para usar los recursos de Google Cloud.

Ejecutar este codelab no debería costar más que unos pocos dólares, pero podría ser más si decides usar más recursos o si los dejas en ejecución.

Los usuarios nuevos de Google Cloud son aptos para obtener una prueba gratuita de USD 300.

Cloud Shell

Usarás Cloud Shell, un entorno de línea de comandos que se ejecuta en Google Cloud.

Activar Cloud Shell

  1. En Cloud Console, haz clic en Activar Cloud Shell .

Si nunca ha iniciado Cloud Shell, aparecerá una pantalla intermedia (debajo de la mitad inferior de la página) que describe qué es. Si ese es el caso, haz clic en Continuar (y no volverás a verlo). Así es como se ve la pantalla única:

El aprovisionamiento y la conexión a Cloud Shell solo tomará unos minutos.

Esta máquina virtual está cargada con todas las herramientas de desarrollo que necesitarás. Ofrece un directorio principal persistente de 5 GB y se ejecuta en Google Cloud, lo que permite mejorar considerablemente el rendimiento de la red y la autenticación. Gran parte de tu trabajo en este codelab, si no todo, se puede hacer simplemente con un navegador o tu Chromebook.

Una vez conectado a Cloud Shell, debería ver que ya se autenticó y que el proyecto ya se configuró con tu ID del proyecto.

  1. En Cloud Shell, ejecuta el siguiente comando para confirmar que está autenticado:
gcloud auth list

Resultado del comando

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

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

Resultado del comando

[core]
project = <PROJECT_ID>

De lo contrario, puede configurarlo con este comando:

gcloud config set project <PROJECT_ID>

Resultado del comando

Updated property [core/project].

Después del inicio de Cloud Shell, puedes usar la línea de comandos para generar una nueva app de Spring Boot con 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

Hay dos maneras de implementar una app de servidor Java: con el complemento de App Engine para Maven o el complemento de App Engine para Gradle, o con el directorio del paquete war. Usarás el complemento Maven de App Engine para implementar la app.

Agrega el complemento App Engine Maven

Actualiza pom.xml para incluir un complemento de Google Cloud que simplifique el proceso de implementación. Puede usar Vim, nano o Emacs para editar el archivo.

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. Para implementar la app en el entorno estándar de App Engine, debes crear un nuevo archivo descriptor src/main/appengine/app.yaml.
$ mkdir -p src/main/appengine/
$ touch src/main/appengine/app.yaml
  1. Edita el archivo src/main/appengine/app.yaml y agrega el siguiente contenido:

src/main/appengine/app.yaml

runtime: java11
instance_class: F4

Agrega un nuevo control que muestre "hello world!" en 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. Puedes iniciar la app de Spring Boot con el complemento de Spring Boot:
$ ./mvnw -DskipTests spring-boot:run
  1. Cuando se inicie la app, haz clic en Vista previa en la Web en la barra de herramientas de Cloud Shell y selecciona Vista previa en el puerto 8080.

Se abrirá una pestaña en su navegador y se conectará con el servidor que inició.

  1. Primero, inicializa el proyecto para poder ejecutar apps de App Engine. Además, inicializa el proyecto para que se ejecute en la región central de EE.UU.
$ 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. Luego, ejecuta tu mvn appengine:deploy para implementar tu aplicación en el entorno estándar de App Engine.
$ ./mvnw -DskipTests package appengine:deploy
... first time deploy may take a couple of minutes
  1. Después de implementar la app, puedes visitar http://<project-id>.appspot.com en tu navegador web o usar el siguiente comando en Cloud Shell para implementarla:
$ gcloud app browse
... [It may print out the URL for your app]

Aprendiste a escribir tu primera aplicación web de App Engine.

Más información