Guía de inicio rápido para Java en el entorno flexible de App Engine

En esta guía de inicio rápido, se describe cómo crear una aplicación pequeña de App Engine que muestre un mensaje breve.

Antes de comenzar

En esta guía de inicio rápido, se supone que instalaste el kit de desarrollo de Java SE 8 (JDK).

Antes de ejecutar y de implementar esta guía de inicio rápido, instala el SDK de Cloud y configura un proyecto de GCP para App Engine:

  1. Instala el SDK de Cloud:

    Descargar el SDK

    Nota: Si ya tienes instalado el SDK de Cloud, ejecuta el siguiente comando para actualizarlo:

    gcloud components update
    
  2. Crea un proyecto nuevo:

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

    Verifica si se creó el proyecto:

    gcloud projects describe [YOUR_PROJECT_ID]
    

    Verás los detalles del proyecto, que deberían ser similares a los siguientes:

    createTime: year-month-hour
    lifecycleState: ACTIVE
    name: project-name
    parent:
    id: '433637338589'
    type: organization
    projectId: project-name-id
    projectNumber: 499227785679
    
  3. Inicializa tu aplicación de App Engine con el proyecto y selecciona su región:

    gcloud app create --project=[YOUR_PROJECT_ID]
    

    Cuando se te solicite, selecciona la región en la que deseas que se ubique tu aplicación de App Engine.

  4. Asegúrate de tener habilitada la facturación para tu proyecto. Debes tener una cuenta de facturación vinculada a tu proyecto para que la aplicación se pueda implementar en App Engine.

    Habilitar facturación

    La implementación del entorno flexible incurrirá en costos mientras esté activa. Limpia el proyecto cuando hayas terminado para evitar que continúe la facturación.

  5. Instala los siguientes requisitos previos:

    • Descargar y también instalar Git.
    • Instala el componente de App Engine:

      gcloud components install app-engine-java
      
    • Instala Maven. En esta guía de inicio rápido, se usa la versión 3.5 o superior de Apache Maven para compilar, ejecutar y, luego, implementar la app de muestra. Si quieres obtener más detalles sobre cómo instalar Maven, consulta usa Apache Maven y el plugin de App Engine.

Ubicaciones de App Engine

App Engine es regional, lo que significa que la infraestructura que ejecuta tus apps se ubica en una región específica, y Google la administra para que esté disponible de manera redundante en todas las zonas de esa región.

El cumplimiento de tus requisitos de latencia, disponibilidad o durabilidad debe ser un factor primario para seleccionar la región donde se ejecutan tus aplicaciones. En general, puedes seleccionar la región más cercana a los usuarios de tu app, pero debes tener en cuenta la ubicación de otros productos y servicios de GCP que usa tu app. El uso de servicios en varias ubicaciones puede afectar la latencia de la app y los precios.

App Engine está disponible en las siguientes regiones:

  • northamerica-northeast1 (Montreal)
  • us-central (Iowa)
  • us-west2 (Los Ángeles)
  • us-east1 (Carolina del Sur)
  • us-east4 (Virginia del Norte)
  • southamerica-east1 (São Paulo)
  • europe-west (Bélgica)
  • europe-west2 (Londres)
  • europe-west3 (Fráncfort)
  • europe-west6 (Zúrich)
  • asia-northeast1 (Tokio)
  • asia-northeast2 (Osaka)
  • asia-east2 (Hong Kong)
  • asia-south1 (Bombay)
  • australia-southeast1 (Sídney)

No puedes cambiar la región de una app una vez configurada.

Si ya creaste una aplicación de App Engine, puedes ejecutar el comando gcloud app describe o abrir el panel de App Engine en GCP Console para ver la región. La región de tu aplicación de App Engine se detalla en http://[YOUR_PROJECT_ID].appspot.com.

Descarga la app de Hello World

Creamos una app de Hello World simple para Java, de manera que puedas familiarizarte con rapidez con el proceso de implementación de aplicaciones en Google Cloud Platform.

  1. Clona el repositorio de la aplicación de muestra Hello World a la máquina local.

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

    De manera opcional, puedes descargar la muestra como un archivo zip y extraerla.

  2. Cambia al directorio que contiene el código de muestra.

    cd java-docs-samples/flexible/helloworld
    

Ejecuta Hello World en tu máquina local

  1. Inicia el servidor web local de Tomcat con el complemento Spring Boot Maven.

    mvn spring-boot:run
    
  2. En el navegador web, ingresa la siguiente dirección:

    http://localhost:8080

El mensaje de Hello World de la aplicación de muestra se ve en la página. En la ventana de la terminal, presiona Ctrl + C para salir del servidor web.

Implemente y ejecute Hello World en App Engine

Para implementar la app en el entorno de App Engine Flexible, haz lo siguiente:

  1. Para implementar la app de Hello World, ejecuta los siguientes comandos desde el directorio helloworld:

    gcloud config set project YOUR_PROJECT_ID
    mvn appengine:deploy
  2. Inicia tu navegador para ver la aplicación en http://YOUR_PROJECT_ID.appspot.com

    gcloud app browse
    en la que YOUR_PROJECT_ID representa el ID de tu proyecto de GCP.

Esta vez, la página que muestra el mensaje Hello World se envía mediante un servidor web que se ejecuta en una instancia de App Engine.

¡Felicitaciones! implementaste tu primera app de Java en el entorno de App Engine Flexible.

Consulta las secciones siguientes para obtener información sobre limpieza y vínculos a los siguientes pasos que podrías realizar.

Limpieza

Para evitar que se apliquen cargos a la cuenta, puedes borrar el proyecto de GCP y detener la facturación de todos los recursos que usa.

  1. En la GCP Console, dirígete a la página Proyectos.

    Ir a la página Proyectos

  2. En la lista de proyectos, selecciona el proyecto que deseas borrar y haz clic en Borrar.
  3. En el cuadro de diálogo, escribe el ID del proyecto y, luego, haz clic en Cerrar para borrar el proyecto.

Pasos siguientes

Conoce toda la plataforma

Ahora que sabes cómo es el desarrollo y la implementación de aplicaciones de App Engine, puedes explorar el resto de GCP. Ya tienes instalado el SKD de Google Cloud y eso te brinda las herramientas para interactuar con productos como Cloud SQL, Cloud Storage, Cloud Firestore y más.

Si deseas ver un instructivo guiado que te enseñe cómo crear una app que utilice toda la plataforma, no solo App Engine, revisa nuestra guía de inicio rápido sobre la creación de la app de Bookshelf.

Aprende sobre el entorno flexible de App Engine

Aquí hay algunos temas para ayudarte a continuar tu aprendizaje sobre App Engine.

Revisión del código de Hello World

Hello World es la aplicación de App Engine más simple que pueda existir, dado que solo contiene un servicio, una versión y todo el código se ubica dentro del directorio raíz de la app. En esta sección, se describe cada archivo de la app en detalle.

HelloServlet.java

El archivo HelloServlet.java especifica un patrón URL que describe dónde la app detectará solicitudes y responde a todas ellas con el mensaje “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

El archivo app.yaml describe la configuración de implementación de una app:

runtime: java
env: flex

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

runtime_config:  # Optional
  jdk: openjdk8
  server: jetty9

manual_scaling:
  instances: 1

Aquí, app.yaml especifica el entorno de ejecución que usa la aplicación y configura env: flex para especificar que esta aplicación usa el entorno flexible.

pom.xml

Hello World también incluye un archivo pom.xml, que contiene información sobre el proyecto, como sus dependencias y el destino de la compilación.

<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>
¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Entorno flexible de App Engine para documentos de Java