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

1. Antes de comenzar

Las aplicaciones de App Engine son fáciles de crear, mantener y escalar a medida que cambian tus necesidades de almacenamiento de datos y tráfico. Con App Engine, no tendrás que mantener servidores. Solo debes subir tu aplicación y estará listo para usarse.

Las apps de App Engine se escalan automáticamente según el tráfico entrante. El balanceo de cargas, los microservicios, la autorización, las bases de datos SQL y NoSQL, el almacenamiento en caché de la memoria, la división del tráfico, el registro, la búsqueda, el control de versiones, los lanzamientos, 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 admiten una gran cantidad de lenguajes de programación, como Java, Python, PHP, Node.js y Go. Los dos entornos brindan a los desarrolladores máxima flexibilidad en el comportamiento de sus apps. Cada entorno tiene ciertas 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 de instancias a cero cuando nadie lo está usando y aumenta la escala automáticamente.

Requisitos previos

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

Actividades

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

Requisitos

2. Configuración y requisitos

Configuración del entorno de autoaprendizaje

  1. Accede a Google Cloud Console y crea un proyecto nuevo o reutiliza uno existente. Si aún no tienes una cuenta de Gmail o de Google Workspace, debes crear una.

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • El Nombre del proyecto es el nombre visible de los participantes de este proyecto. Es una cadena de caracteres que no se utiliza en las APIs de Google. Puedes actualizarla cuando quieras.
  • El ID del proyecto es único en todos los proyectos de Google Cloud y es inmutable (no se puede cambiar después de configurarlo). La consola de Cloud genera automáticamente una cadena única. Por lo general, no importa cuál sea. En la mayoría de los codelabs, deberás hacer referencia al ID de tu proyecto (suele identificarse como PROJECT_ID). Si no te gusta el ID que se generó, podrías generar otro aleatorio. También puedes probar uno propio y ver si está disponible. No se puede cambiar después de este paso y se usa el mismo durante todo el proyecto.
  • Recuerda que hay un tercer valor, un número de proyecto, que usan algunas APIs. Obtén más información sobre estos tres valores en la documentación.
  1. A continuación, deberás habilitar la facturación en la consola de Cloud para usar las APIs o los recursos de Cloud. Ejecutar este codelab no costará mucho, tal vez nada. Para cerrar recursos y evitar que se generen cobros más allá de este instructivo, puedes borrar los recursos que creaste o borrar el proyecto. Los usuarios nuevos de Google Cloud son aptos para participar en el programa Prueba gratuita de $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 la consola de Cloud, haz clic en Activar Cloud Shell853e55310c205094.png.

55efc1aaa7a4d3ad.png

Si es la primera vez que inicias Cloud Shell, verás una pantalla intermedia que describe en qué consiste. Si apareció una pantalla intermedia, haz clic en Continuar.

9c92662c6a846a5c.png

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

9f0e51b578fecce5.png

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

Una vez que te conectes a Cloud Shell, deberías ver que estás autenticado y que el proyecto está configurado con tu ID del proyecto.

  1. En Cloud Shell, ejecuta el siguiente comando para confirmar que tienes la autenticación:
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`
  1. Ejecuta el siguiente comando en Cloud Shell para confirmar que el comando de gcloud conoce tu proyecto:
gcloud config list project

Resultado del comando

[core]
project = <PROJECT_ID>

De lo contrario, puedes configurarlo con el siguiente comando:

gcloud config set project <PROJECT_ID>

Resultado del comando

Updated property [core/project].

3. Crea una app web nueva de Spring Boot

Después de que se inicie 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=3.0.5 \
  -d dependencies=web \
  -d type=maven-project \
  -d baseDir=gae-standard-example | tar -xzvf -
$ cd gae-standard-example

4. Actualiza pom.xml de Maven

Hay dos formas de implementar una app de servidor de Java: mediante el complemento de App Engine de Maven o el complemento de App Engine para Gradle, o a través de la implementación del directorio de paquetes war. Usarás el complemento de App Engine de Maven para implementar la app.

Agrega el complemento de App Engine de Maven

Actualiza pom.xml para incluir un complemento de Google Cloud que simplifique el proceso de implementación. Puedes 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.4.4</version>
        <configuration>
          <version>1</version>
          <projectId>GCLOUD_CONFIG</projectId>
        </configuration>
      </plugin>
      ...
    </plugins>
  </build>
</project>

5. Agrega el descriptor de App Engine

  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: java17
instance_class: F1

6. Cómo agregar un control

Agrega un controlador nuevo 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
public class DemoApplication {
  public static void main(String[] args) {
    SpringApplication.run(DemoApplication.class, args);
  }
}

// Add the controller.
@RestController
class HelloWorldController {
  @GetMapping("/")
  public String hello() {
    return "hello world!";
  }
}

7. Ejecuta la app de forma local

  1. Asegúrate de que JAVA_HOME esté configurado con la versión correcta del JDK:
$ export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64/
  1. Puedes iniciar la app de Spring Boot con el complemento de Spring Boot:
$ ./mvnw -DskipTests spring-boot:run
  1. Una vez que se inicie la app, haz clic en Vista previa en la Web 1a94d5bd10bfc072.pngen la barra de herramientas de Cloud Shell y selecciona Vista previa en el puerto 8080.

3aca52f76c6c22a3.png

En tu navegador, se abrirá una pestaña y se conectará al servidor que iniciaste.

7b0d8494f647822a.png

8. Implementa la app en App Engine

  1. Primero, inicializa el proyecto para poder ejecutar apps de App Engine. Además, inicializa el proyecto para ejecutarlo 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 mvn appengine:deploy para implementar tu app 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, podrás visitarla. Para ello, abre http://<project-id>.appspot.com en el navegador web o usa el siguiente comando en Cloud Shell:
$ gcloud app browse
... [It may print out the URL for your app]

9. Limpieza

No puedes borrar una aplicación de App Engine, pero puedes inhabilitarla.

Ve a App Engine y Settings en Google Cloud Console y selecciona Disable Application:

8052c1e4ad73d70e.png

También puedes borrar todo el proyecto:

$ gcloud projects delete YOUR-PROJECT-ID

10. Felicitaciones

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

Más información