Implantar um aplicativo Spring Boot no ambiente padrão do App Engine

Implantar um aplicativo Spring Boot no ambiente padrão do App Engine

Sobre este codelab

subjectÚltimo abr. 22, 2020 atualizado
account_circleEscrito por um Googler

1. Antes de começar

Os apps do App Engine são fáceis de criar, manter e escalonar à medida que seu tráfego e o armazenamento de dados precisam mudar. Com o App Engine, não há servidores para fazer manutenção, basta fazer upload do seu app e pronto.

Os apps do App Engine são escalonados automaticamente com base no tráfego de entrada. Balanceamento de carga, microsserviços, autorização, bancos de dados SQL e NoSQL, armazenamento em cache de memória, divisão de tráfego, geração de registros, pesquisa, controle de versões, lançamentos e reversões e verificação de segurança são compatíveis nativamente e são altamente personalizáveis.

O ambiente padrão do App Engine e o ambiente flexível do App Engine são compatíveis com várias linguagens de programação, como Java, Python, PHP, NodeJS e Go. Os dois ambientes oferecem aos desenvolvedores maior flexibilidade no comportamento do app. Cada ambiente tem pontos fortes. Para mais informações, consulte Como escolher um ambiente do App Engine.

Você aprenderá a implantar um aplicativo Spring Boot no ambiente padrão do App Engine. O ambiente padrão reduz o escalonamento vertical para zero instâncias quando ninguém estiver usando e o escalonamento automático será automático.

Pré-requisitos

  • Familiaridade com uma linguagem de programação Java e ferramentas
  • Conhecimento sobre os editores de texto padrão do Linux, como Vim, Emacs e nano

O que você aprenderá

  • Como criar um app Java do Spring Boot no App Engine

O que é necessário

2. Configuração e requisitos

Configuração de ambiente personalizada

  1. Faça login no Console do Cloud e crie um novo projeto ou reutilize um existente. Se você ainda não tem uma conta do Gmail ou do G Suite, crie uma.

Lembre-se do código do projeto, um nome exclusivo em todos os projetos do Google Cloud. O nome acima já foi escolhido e não servirá para você. Faremos referência a ele mais adiante neste codelab como PROJECT_ID.

  1. Em seguida, você precisará ativar o faturamento no Console do Cloud para usar os recursos do Google Cloud.

A execução por este codelab não deve custar mais do que alguns dólares, mas pode ser mais se você decidir usar mais recursos ou se deixá-los em execução.

Novos usuários do Google Cloud estão qualificados para um teste sem custo financeiro de US$ 300.

Cloud Shell

Você usará o Cloud Shell, um ambiente de linha de comando executado no Google Cloud.

Ativar o Cloud Shell

  1. No Console do Cloud, clique em Ativar o Cloud Shell .

Se você nunca tiver iniciado o Cloud Shell, verá uma tela intermediária (abaixo da dobra) com a descrição do que ele é. Se esse for o caso, clique em Continuar e você não o verá novamente. Esta é uma tela única:

Leva apenas alguns instantes para provisionar e se conectar ao Cloud Shell.

Essa máquina virtual contém todas as ferramentas de desenvolvimento necessárias. Ela oferece um diretório principal persistente de 5 GB, além de ser executada no Google Cloud. Isso aprimora o desempenho e a autenticação da rede. Praticamente todo o seu trabalho neste codelab pode ser feito em um navegador ou no seu Chromebook.

Depois de se conectar ao Cloud Shell, você já estará autenticado e o projeto já estará configurado com seu ID do projeto.

  1. Execute o seguinte comando no Cloud Shell para confirmar que você está autenticado:
gcloud auth list

Resposta ao 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

Resposta ao comando

[core]
project = <PROJECT_ID>

Se o projeto não estiver configurado, faça a configuração usando este comando:

gcloud config set project <PROJECT_ID>

Resposta ao comando

Updated property [core/project].

3. Criar um novo app da Web do Spring Boot

Depois que o Cloud Shell for iniciado, você poderá usar a linha de comando para gerar um novo aplicativo Spring Boot com o 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

4. Atualizar pom.xml do Maven

Há duas maneiras de implantar um app de servidor Java: usando o Maven App Engine Plugin ou o Gradle App Engine Plugin, ou implantando o diretório do pacote war. Você usará o plug-in Maven App Engine para implantar o aplicativo.

Adicionar plug-in Maven App Engine

Atualize o pom.xml para incluir um plug-in do Google Cloud que simplifica o processo de implantação. Você pode usar o Vim, o nano ou o Emacs para editar o arquivo.

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>

5. Adicionar descritor do App Engine

  1. Para implantar o aplicativo no ambiente padrão do App Engine, crie um novo arquivo descritor do src/main/appengine/app.yaml.
$ mkdir -p src/main/appengine/
$ touch src/main/appengine/app.yaml
  1. Edite o arquivo src/main/appengine/app.yaml e adicione o seguinte conteúdo:

src/main/appengine/app.yaml

runtime: java11
instance_class
: F4

6. Adicionar um controlador

Adicione um novo controlador que retorne "hello world!" em DemoApplication.java.

src/main/java/com/example/demo/DemoApplication.java (em inglês)

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!";
 
}
}

7. Executar o app localmente

  1. É possível iniciar o app Spring Boot com o plug-in Spring Boot:
$ ./mvnw -DskipTests spring-boot:run
  1. Depois que o aplicativo for iniciado, clique em Visualização na Web na barra de ferramentas do Cloud Shell e selecione Visualizar na porta 8080.

Uma guia no navegador será aberta e se conectará ao servidor que você iniciou.

8. Implantar o aplicativo no App Engine

  1. Primeiro, inicialize o projeto para poder executar apps do App Engine. Além disso, inicialize o projeto para ser executado na região central dos EUA.
$ 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. Em seguida, implante o aplicativo no ambiente padrão do App Engine executando mvn appengine:deploy.
$ ./mvnw -DskipTests package appengine:deploy
... first time deploy may take a couple of minutes
  1. Depois de implantar o aplicativo, acesse-o abrindo http://<project-id>.appspot.com no navegador da Web ou use o seguinte comando no Cloud Shell:
$ gcloud app browse
... [It may print out the URL for your app]

9. Parabéns

Você aprendeu a criar seu primeiro app da Web do App Engine.

Saiba mais