Esegui il deployment di un'app Spring Boot nell'ambiente standard di App Engine

1. Prima di iniziare

Le app di App Engine sono facili da creare e da gestire e da scalare, man mano che cambiano le esigenze di traffico e archiviazione dei dati. Con App Engine, non ci sono server da mantenere. Devi solo caricare la tua app ed è pronta all'uso.

Le app di App Engine scalano automaticamente in base al traffico in entrata. Bilanciamento del carico, microservizi, autorizzazione, database SQL e NoSQL, memorizzazione nella cache della memoria, suddivisione del traffico, logging, ricerca, controllo delle versioni, implementazioni e rollback e analisi della sicurezza sono tutti supportati in modo nativo e altamente personalizzabili.

L'ambiente standard di App Engine e l'ambiente flessibile di App Engine supportano una serie di linguaggi di programmazione, tra cui Java, Python, PHP, NodeJS e Go. I due ambienti offrono agli sviluppatori la massima flessibilità di comportamento delle app. Ogni ambiente presenta determinati punti di forza. Per ulteriori informazioni, vedi Scelta di un ambiente App Engine.

Imparerai a eseguire il deployment di un'app Spring Boot nell'ambiente standard App Engine. L'ambiente standard fa lo scale down a zero istanze quando nessuno lo utilizza ed esegue automaticamente lo scale up.

Prerequisiti

  • Familiarità con il linguaggio di programmazione e gli strumenti Java
  • Conoscenza degli editor di testo standard Linux, quali Vim, Emacs e nano

Attività previste

  • Come creare un'app Java Spring Boot su App Engine

Che cosa ti serve

2. Configurazione e requisiti

Configurazione dell'ambiente da seguire in modo autonomo

  1. Accedi alla console Google Cloud e crea un nuovo progetto o riutilizzane uno esistente. Se non hai ancora un account Gmail o Google Workspace, devi crearne uno.

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • Il Nome progetto è il nome visualizzato dei partecipanti del progetto. Si tratta di una stringa di caratteri non utilizzata dalle API di Google. Puoi sempre aggiornarla.
  • L'ID progetto è univoco in tutti i progetti Google Cloud ed è immutabile (non può essere modificato dopo essere stato impostato). La console Cloud genera automaticamente una stringa univoca. di solito non ti importa cosa sia. Nella maggior parte dei codelab, dovrai fare riferimento al tuo ID progetto (in genere identificato come PROJECT_ID). Se l'ID generato non ti soddisfa, potresti generarne un altro casuale. In alternativa, puoi provarne una personalizzata per verificare se è disponibile. Non può essere modificato dopo questo passaggio e rimane per tutta la durata del progetto.
  • Per informazione, c'è un terzo valore, un numero di progetto, utilizzato da alcune API. Scopri di più su tutti e tre questi valori nella documentazione.
  1. Successivamente, dovrai abilitare la fatturazione nella console Cloud per utilizzare risorse/API Cloud. L'esecuzione di questo codelab non ha alcun costo. Per arrestare le risorse ed evitare di incorrere in fatturazione dopo questo tutorial, puoi eliminare le risorse che hai creato o eliminare il progetto. I nuovi utenti di Google Cloud sono idonei al programma prova senza costi di 300$.

Cloud Shell

Utilizzerai Cloud Shell, un ambiente a riga di comando in esecuzione su Google Cloud.

Attiva Cloud Shell

  1. Dalla console Cloud, fai clic su Attiva Cloud Shell 853e55310c205094.png.

55efc1aaa7a4d3ad.png

Se è la prima volta che avvii Cloud Shell, ti verrà mostrata una schermata intermedia che descrive di cosa si tratta. Se ti è stata presentata una schermata intermedia, fai clic su Continua.

9c92662c6a846a5c.png

Il provisioning e la connessione a Cloud Shell dovrebbero richiedere solo qualche istante.

9f0e51b578fecce5.png

Questa macchina virtuale viene caricata con tutti gli strumenti di sviluppo necessari. Offre una home directory permanente da 5 GB e viene eseguita in Google Cloud, migliorando notevolmente le prestazioni di rete e l'autenticazione. Gran parte, se non tutto, del lavoro in questo codelab può essere svolto con un browser.

Una volta stabilita la connessione a Cloud Shell, dovresti vedere che hai eseguito l'autenticazione e che il progetto è impostato sul tuo ID progetto.

  1. Esegui questo comando in Cloud Shell per verificare che l'account sia autenticato:
gcloud auth list

Output comando

 Credentialed Accounts
ACTIVE  ACCOUNT
*       <my_account>@<my_domain.com>

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
  1. Esegui questo comando in Cloud Shell per confermare che il comando gcloud è a conoscenza del tuo progetto:
gcloud config list project

Output comando

[core]
project = <PROJECT_ID>

In caso contrario, puoi impostarlo con questo comando:

gcloud config set project <PROJECT_ID>

Output comando

Updated property [core/project].

3. Crea una nuova app web Spring Boot

Dopo l'avvio di Cloud Shell, puoi utilizzare la riga di comando per generare una nuova app 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. Aggiorna Maven pom.xml

Esistono due modi per eseguire il deployment di un'app server Java: utilizzando il plug-in Maven App Engine o il plug-in Gradle App Engine oppure il deployment della directory del pacchetto war. Utilizzerai il plug-in Maven App Engine per eseguire il deployment dell'app.

Aggiungi il plug-in Maven App Engine

Aggiorna pom.xml per includere un plug-in Google Cloud che semplifica il processo di deployment. Puoi usare Vim, nano o Emacs per modificare il file.

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. Aggiungi descrittore App Engine

  1. Per eseguire il deployment dell'app nell'ambiente standard di App Engine, devi creare un nuovo file descrittore src/main/appengine/app.yaml.
$ mkdir -p src/main/appengine/
$ touch src/main/appengine/app.yaml
  1. Modifica il file src/main/appengine/app.yaml e aggiungi i seguenti contenuti:

src/main/appengine/app.yaml

runtime: java17
instance_class: F1

6. Aggiungi un controller

Aggiungi un nuovo controller che restituisca "hello world!" in 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. Eseguire l'app in locale

  1. Assicurati che JAVA_HOME sia impostata sulla versione JDK corretta:
$ export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64/
  1. Puoi avviare l'app Spring Boot con il plug-in Spring Boot:
$ ./mvnw -DskipTests spring-boot:run
  1. Dopo l'avvio dell'app, fai clic su Anteprima web 1a94d5bd10bfc072.pngnella barra degli strumenti di Cloud Shell e seleziona Anteprima sulla porta 8080.

3aca52f76c6c22a3.png

Si apre una scheda del browser che si collega al server che hai avviato.

7b0d8494f647822a.png

8. Eseguire il deployment dell'applicazione su App Engine

  1. Inizializza il progetto in modo che sia in grado di eseguire le app di App Engine. Inoltre, inizializza il progetto in modo che venga eseguito nella regione centrale degli Stati Uniti.
$ 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. Poi, esegui il deployment dell'app nell'ambiente standard di App Engine eseguendo mvn appengine:deploy.
$ ./mvnw -DskipTests package appengine:deploy
... first time deploy may take a couple of minutes
  1. Una volta eseguito il deployment dell'app, puoi visitarla aprendo http://<project-id>.appspot.com nel tuo browser web o utilizzando il seguente comando in Cloud Shell:
$ gcloud app browse
... [It may print out the URL for your app]

9. Esegui la pulizia

Non puoi eliminare un'applicazione App Engine, ma puoi disabilitarla.

Vai a App Engine e Settings nella console Google Cloud e seleziona Disable Application:

8052c1e4ad73d70e.png

In alternativa, puoi eliminare l'intero progetto:

$ gcloud projects delete YOUR-PROJECT-ID

10. Complimenti

Hai imparato a scrivere la tua prima app web di App Engine.

Scopri di più