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

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

Informazioni su questo codelab

subjectUltimo aggiornamento: apr 22, 2020
account_circleScritto da un Googler

1. Prima di iniziare

Le app App Engine sono facili da creare e da gestire, nonché facili da scalare in base alle variazioni del traffico e dell'archiviazione di dati. Con App Engine, non ci sono server da gestire. Ti basta caricare l'app e l'app è pronta.

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 in memoria, suddivisione del traffico, logging, ricerca, controllo delle versioni, implementazioni e rollback e analisi della sicurezza sono tutti supportati in modo nativo e sono altamente personalizzabili.

L'ambiente standard di App Engine e l'ambiente flessibile di App Engine supportano numerosi linguaggi di programmazione, tra cui Java, Python, PHP, NodeJS e Go. I due ambienti offrono agli sviluppatori la massima flessibilità sul comportamento dell'app. Ogni ambiente ha determinati punti di forza. Per ulteriori informazioni, consulta Scegliere un ambiente App Engine.

Imparerai a eseguire il deployment di un'app di avvio in primavera nell'ambiente standard di App Engine. L'ambiente standard esegue lo scale down fino a zero istanze quando nessuno lo utilizza e fa automaticamente lo scale up!

Prerequisiti

  • Dimestichezza con gli strumenti e il linguaggio di programmazione Java
  • Conoscenza degli editor di testo standard di Linux, ad esempio 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 automatica dell'ambiente

  1. Accedi a Cloud Console e crea un nuovo progetto o riutilizzane uno esistente. Se non hai ancora un account Gmail o G Suite, devi crearne uno.

Ricorda l'ID progetto, un nome univoco in tutti i progetti Google Cloud (il nome sopra riportato è già stato utilizzato e non funzionerà per te). Vi verrà fatto riferimento più avanti in questo codelab come PROJECT_ID.

  1. Il prossimo passaggio consiste nell'attivare la fatturazione in Cloud Console per poter utilizzare le risorse Google Cloud.

L'esecuzione di questo codelab non dovrebbe costare più di qualche euro, ma potrebbe essere di più se decidi di utilizzare più risorse o se le lasci in esecuzione.

I nuovi utenti di Google Cloud sono idonei per una prova senza costi di 300$.

Cloud Shell

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

Attiva Cloud Shell

  1. In Cloud Console, fai clic su Attiva Cloud Shell .

Se non hai mai avviato Cloud Shell prima d'ora, ti verrà proposto uno schermo intermedio (below the fold) che descrive quello che è. In tal caso, fai clic su Continua (e non lo vedrai più). Ecco come si presenta la schermata una tantum:

Bastano pochi istanti per eseguire il provisioning e connettersi a Cloud Shell.

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

Una volta eseguita la connessione a Cloud Shell, dovresti vedere che il tuo account è già autenticato e il progetto è già 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`
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. Creare una nuova applicazione web Spring Boot

Una volta avviato 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=2.1.8.RELEASE \
  -d dependencies=web \
  -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 del server Java: utilizzando il plug-in Maven App Engine o il plug-in Gradle App Engine oppure eseguendo il deployment della directory dei pacchetti war. Utilizzerai il plug-in Maven App Engine per eseguire il deployment dell'app.

Aggiungi plug-in Maven App Engine

Aggiorna pom.xml per includere un plug-in Google Cloud che semplifichi la procedura di deployment. Puoi utilizzare 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.1.0</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: java11
instance_class
: F4

6. Aggiungere 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
@RestController
public class DemoApplication {
 
public static void main(String[] args) {
   
SpringApplication.run(DemoApplication.class, args);
 
}

 
@GetMapping("/")
 
public String hello() {
   
return "hello world!";
 
}
}

7. Esegui l&#39;app localmente

  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 nella barra degli strumenti di Cloud Shell e seleziona Anteprima sulla porta 8080.

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

8. Eseguire il deployment dell&#39;applicazione su App Engine

  1. Inizializza il progetto per poter eseguire le app di App Engine. Inoltre, inizializza il progetto per l'esecuzione nell'area geografica 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. Quindi, esegui il deployment della tua 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>.spotspot.com nel browser web o usando il comando seguente in Cloud Shell:
$ gcloud app browse
... [It may print out the URL for your app]

9. Complimenti

Hai imparato a scrivere la tua prima applicazione web su App Engine.

Scopri di più