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
- Un proyecto de Google Cloud
- Un navegador, como Google Chrome
2. Configuración y requisitos
Configuración del entorno de autoaprendizaje
- 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.
- 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.
- 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
- En la consola de Cloud, haz clic en Activar Cloud Shell.
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.
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 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.
- 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`
- 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
- 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
- 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
- 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/
- Puedes iniciar la app de Spring Boot con el complemento de Spring Boot:
$ ./mvnw -DskipTests spring-boot:run
- Una vez que 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.
En tu navegador, se abrirá una pestaña y se conectará al servidor que iniciaste.
8. Implementa la app en App Engine
- 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
- 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
- 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
:
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.