1. Antes de começar
Os aplicativos do App Engine são fáceis de criar, manter e escalonar de acordo com as mudanças necessárias no tráfego e no armazenamento de dados. Com o App Engine, você não precisa se preocupar com a manutenção dos servidores. Basta fazer upload do app.
Os aplicativos 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, reversões e verificações de segurança têm suporte nativo e são altamente personalizáveis.
Os ambientes padrão e flexível do App Engine oferecem suporte a várias linguagens de programação, incluindo Java, Python, PHP, NodeJS e Go. Com esses dois ambientes, os desenvolvedores têm o máximo de flexibilidade no comportamento dos apps. Cada ambiente tem certos pontos fortes. Para mais informações, consulte Como escolher um ambiente do App Engine.
Você vai aprender a implantar um app Spring Boot no ambiente padrão do App Engine. Quando ninguém está usando o ambiente padrão, ele escalona verticalmente para zero, e o escalonamento é feito de forma automática.
Pré-requisitos
- Conhecer a linguagem de programação e as ferramentas Java
- Conhecimento sobre 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
- um projeto do Google Cloud;
- Um navegador, como o Google Chrome
2. Configuração e requisitos
Configuração de ambiente autoguiada
- Faça login no Console do Google Cloud e crie um novo projeto ou reutilize um existente. Crie uma conta do Gmail ou do Google Workspace, se ainda não tiver uma.
- O Nome do projeto é o nome de exibição para os participantes do projeto. É uma string de caracteres não usada pelas APIs do Google e pode ser atualizada quando você quiser.
- O ID do projeto precisa ser exclusivo em todos os projetos do Google Cloud e não pode ser mudado após a definição. O console do Cloud gera automaticamente uma string exclusiva. Em geral, não importa o que seja. Na maioria dos codelabs, é necessário fazer referência ao ID do projeto, normalmente identificado como
PROJECT_ID
. Se você não gostar do ID gerado, crie outro aleatório. Se preferir, teste o seu e confira se ele está disponível. Ele não pode ser mudado após essa etapa e permanece durante o projeto. - Para sua informação, há um terceiro valor, um Número do projeto, que algumas APIs usam. Saiba mais sobre esses três valores na documentação.
- Em seguida, ative o faturamento no console do Cloud para usar os recursos/APIs do Cloud. A execução deste codelab não vai ser muito cara, se tiver algum custo. Para encerrar os recursos e evitar cobranças além deste tutorial, exclua os recursos criados ou exclua o projeto. Novos usuários do Google Cloud estão qualificados para o programa de US$ 300 de avaliação sem custos.
Cloud Shell
Você vai usar o Cloud Shell, um ambiente de linha de comando em execução no Google Cloud.
Ativar o Cloud Shell
- No Console do Cloud, clique em Ativar o Cloud Shell.
Se você estiver iniciando o Cloud Shell pela primeira vez, verá uma tela intermediária com a descrição dele. Se aparecer uma tela intermediária, clique em Continuar.
Leva apenas alguns instantes para provisionar e se conectar ao Cloud Shell.
Essa máquina virtual tem 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. Grande parte do trabalho neste codelab, se não todo, pode ser feito em um navegador.
Depois de se conectar ao Cloud Shell, você verá sua autenticação e o projeto estará configurado com o ID do seu projeto.
- Execute o seguinte comando no Cloud Shell para confirmar se a conta está autenticada:
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`
- Execute o seguinte comando no Cloud Shell para confirmar que o comando gcloud sabe sobre seu projeto:
gcloud config list project
Resposta ao comando
[core] project = <PROJECT_ID>
Se o projeto não estiver configurado, configure-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=3.0.5 \ -d dependencies=web \ -d type=maven-project \ -d baseDir=gae-standard-example | tar -xzvf - $ cd gae-standard-example
4. Atualizar o pom.xml do Maven
Há duas maneiras de implantar um app de servidor Java: usando o plug-in do Maven para App Engine ou para o Gradle ou com a implantação do diretório de pacotes war
. Você vai usar o Maven App Engine Plugin para implantar o app.
Adicionar o plug-in do Maven App Engine
Atualize o pom.xml
para incluir um plug-in do Google Cloud que simplifique o processo de implantação. Você pode usar o Vim, nano ou 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.4.4</version>
<configuration>
<version>1</version>
<projectId>GCLOUD_CONFIG</projectId>
</configuration>
</plugin>
...
</plugins>
</build>
</project>
5. Adicionar descritor do App Engine
- Para implantar o app no ambiente padrão do App Engine, é preciso criar um novo arquivo descritor
src/main/appengine/app.yaml
.
$ mkdir -p src/main/appengine/ $ touch src/main/appengine/app.yaml
- Edite o arquivo
src/main/appengine/app.yaml
e adicione o seguinte conteúdo:
src/main/appengine/app.yaml
runtime: java17
instance_class: F1
6. Adicionar um controlador
Adicione um novo controle que retorne "hello world!"
em 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. Executar o app localmente
- Verifique se JAVA_HOME está definido como a versão correta do JDK:
$ export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64/
- É possível iniciar o aplicativo Spring Boot com o plug-in Spring Boot:
$ ./mvnw -DskipTests spring-boot:run
- Depois que o app for iniciado, clique em Visualização na Web na barra de ferramentas do Cloud Shell e selecione Visualizar na porta 8080.
Uma guia será aberta no navegador, conectando você ao servidor iniciado.
8. Implantar o aplicativo no App Engine
- Primeiro, inicialize o projeto para executar aplicativos 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
- Em seguida, implante o app 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
- Após a implantação do app, abra http://<project-id>.appspot.com no navegador da Web ou use o comando a seguir no Cloud Shell:
$ gcloud app browse ... [It may print out the URL for your app]
9. Limpeza
Não é possível excluir um aplicativo do App Engine, mas é possível desativá-lo.
Acesse App Engine
e Settings
no console do Google Cloud e selecione Disable Application
:
Se preferir, exclua todo o projeto:
$ gcloud projects delete YOUR-PROJECT-ID
10. Parabéns
Você aprendeu a criar seu primeiro app da Web no App Engine.