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

Le app App Engine sono facili da creare, gestire e scalare in base alle esigenze di traffico e spazio di archiviazione dei dati. Con App Engine, non ci sono server da mantenere. Ti basta caricare l'app e sarà pronta all'uso.

Le app App Engine vengono scalate automaticamente in base al traffico in entrata. Il bilanciamento del carico, i microservizi, l'autorizzazione, i database SQL e NoSQL, la memorizzazione nella cache, la suddivisione del traffico, il logging, la ricerca, il controllo delle versioni, i rollout e i rollback e la scansione di 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 una serie di linguaggi di programmazione, tra cui Java, Python, PHP, NodeJS e Go. I due ambienti offrono agli sviluppatori la massima flessibilità nel comportamento della loro app. Ogni ambiente ha determinati punti di forza. Per saperne di più, vedi Scegliere un ambiente App Engine.

Imparerai a eseguire il deployment di un'app Spring Boot nell'ambiente standard di App Engine. L'ambiente standard viene ridotto a zero istanze quando nessuno lo utilizza e viene aumentato automaticamente.

Prerequisiti

  • Familiarità con il linguaggio di programmazione Java e gli strumenti
  • 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

Configurazione dell'ambiente autonoma

  1. Accedi alla console Cloud e crea un nuovo progetto o riutilizzane uno esistente. Se non hai già un account Gmail o G Suite, devi crearne uno.

Ricorda l'ID progetto, un nome univoco per tutti i progetti Google Cloud (il nome riportato sopra è già stato utilizzato e non funzionerà per te, mi dispiace). In questo codelab verrà chiamato PROJECT_ID.

  1. Successivamente, dovrai abilitare la fatturazione in Cloud Console per utilizzare le risorse Google Cloud.

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

I nuovi utenti di Google Cloud possono beneficiare di 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. Nella console Google Cloud, fai clic su Attiva Cloud Shell .

Se non hai mai avviato Cloud Shell, vedrai una schermata intermedia (sotto la piega) che ne descrive le funzionalità. In questo caso, fai clic su Continua (e non la vedrai mai più). Ecco come si presenta la schermata una tantum:

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

Questa macchina virtuale è caricata con tutti gli strumenti di sviluppo di cui avrai bisogno. 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, il lavoro in questo codelab può essere svolto semplicemente 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].

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=2.1.8.RELEASE \
  -d dependencies=web \
  -d baseDir=gae-standard-example | tar -xzvf -
$ cd gae-standard-example

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

Aggiungere il plug-in Maven App Engine

Aggiorna pom.xml in modo da 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>
  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

Aggiungi un nuovo controller che restituisce "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!";
  }
}
  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 nel browser e si connette al server che hai avviato.

  1. Per prima cosa, inizializza il progetto per poter eseguire le app App Engine. Inoltre, inizializza il progetto per l'esecuzione 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. Dopo il deployment dell'app, puoi visitarla aprendo http://<project-id>.appspot.com nel browser web o utilizzando il seguente comando in Cloud Shell:
$ gcloud app browse
... [It may print out the URL for your app]

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

Scopri di più