Spring Boot-Anwendung in der App Engine-Standardumgebung bereitstellen

1. Hinweis

App Engine-Anwendungen lassen sich einfach erstellen, verwalten und skalieren, wenn sich Traffic und Datenspeicheranforderungen ändern. Und bei App Engine müssen keine Server verwaltet werden. Sie laden einfach Ihre App hoch und schon kann es losgehen.

App Engine-Anwendungen skalieren automatisch basierend auf dem eingehenden Traffic. Load-Balancing, Mikrodienste, Autorisierung, SQL- und NoSQL-Datenbanken, Arbeitsspeicher-Caching, Traffic-Aufteilung, Logging, Suche, Versionsverwaltung, Rollouts und Rollbacks sowie Sicherheitsscans werden nativ unterstützt und sind individuell anpassbar.

Die App Engine-Standardumgebung und die flexible App Engine-Umgebung unterstützen zahlreiche Programmiersprachen, darunter Java, Python, PHP, NodeJS und Go. Beide Umgebungen bieten Entwicklern maximale Flexibilität beim Verhalten ihrer App. Jede Umgebung hat bestimmte Stärken. Weitere Informationen finden Sie unter App Engine-Umgebung auswählen.

Sie erfahren, wie Sie eine Spring Boot-Anwendung in der App Engine-Standardumgebung bereitstellen. Die Standardumgebung skaliert auf null Instanzen herunter, wenn niemand sie verwendet, und skaliert sie automatisch hoch.

Voraussetzungen

  • Vertrautheit mit der Programmiersprache und -tools von Java
  • Kenntnisse in standardmäßigen Linux-Texteditoren wie vim, emacs und nano

Aufgabe

  • Spring Boot-Java-Anwendung in App Engine erstellen

Voraussetzungen

2. Einrichtung und Anforderungen

Umgebung für das selbstbestimmte Lernen einrichten

  1. Melden Sie sich in der Google Cloud Console an und erstellen Sie ein neues Projekt oder verwenden Sie ein vorhandenes Projekt. Wenn Sie noch kein Gmail- oder Google Workspace-Konto haben, müssen Sie eines erstellen.

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • Der Projektname ist der Anzeigename für die Projektteilnehmer. Es handelt sich um eine Zeichenfolge, die von Google APIs nicht verwendet wird. Sie können sie jederzeit aktualisieren.
  • Die Projekt-ID ist für alle Google Cloud-Projekte eindeutig und unveränderlich. Sie kann nach dem Festlegen nicht mehr geändert werden. Die Cloud Console generiert automatisch einen eindeutigen String. ist Ihnen meist egal, was es ist. In den meisten Codelabs musst du auf deine Projekt-ID verweisen, die üblicherweise als PROJECT_ID bezeichnet wird. Wenn Ihnen die generierte ID nicht gefällt, können Sie eine weitere zufällige ID generieren. Alternativ können Sie einen eigenen verwenden und nachsehen, ob er verfügbar ist. Sie kann nach diesem Schritt nicht mehr geändert werden und bleibt für die Dauer des Projekts erhalten.
  • Zur Information gibt es noch einen dritten Wert, die Projektnummer, die von manchen APIs verwendet wird. Weitere Informationen zu allen drei Werten finden Sie in der Dokumentation.
  1. Als Nächstes müssen Sie in der Cloud Console die Abrechnung aktivieren, um Cloud-Ressourcen/APIs verwenden zu können. Dieses Codelab ist kostengünstig. Sie können die von Ihnen erstellten Ressourcen oder das Projekt löschen, um Ressourcen herunterzufahren, um zu vermeiden, dass über diese Anleitung hinaus Kosten anfallen. Neue Google Cloud-Nutzer haben Anspruch auf das kostenlose Testprogramm mit 300$Guthaben.

Cloud Shell

Sie verwenden Cloud Shell, eine Befehlszeilenumgebung, die in Google Cloud ausgeführt wird.

Cloud Shell aktivieren

  1. Klicken Sie in der Cloud Console auf Cloud Shell aktivieren 853e55310c205094.png.

55efc1aaa7a4d3ad.png

Wenn Sie Cloud Shell zum ersten Mal starten, wird ein Zwischenbildschirm mit einer Beschreibung der Funktion angezeigt. Wenn ein Zwischenbildschirm angezeigt wird, klicken Sie auf Weiter.

9c92662c6a846a5c.png

Die Bereitstellung und Verbindung mit Cloud Shell dauert nur einen Moment.

9f0e51b578fecce5.png

Diese virtuelle Maschine verfügt über alle erforderlichen Entwicklertools. Es bietet ein Basisverzeichnis mit 5 GB nichtflüchtigem Speicher und wird in Google Cloud ausgeführt. Dadurch werden die Netzwerkleistung und die Authentifizierung erheblich verbessert. Viele, wenn nicht sogar alle Arbeiten in diesem Codelab können mit einem Browser erledigt werden.

Sobald Sie mit Cloud Shell verbunden sind, sollten Sie sehen, dass Sie authentifiziert sind und das Projekt auf Ihre Projekt-ID eingestellt ist.

  1. Führen Sie in Cloud Shell den folgenden Befehl aus, um zu prüfen, ob Sie authentifiziert sind:
gcloud auth list

Befehlsausgabe

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

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
  1. Führen Sie in Cloud Shell den folgenden Befehl aus, um zu prüfen, ob der gcloud-Befehl Ihr Projekt kennt:
gcloud config list project

Befehlsausgabe

[core]
project = <PROJECT_ID>

Ist dies nicht der Fall, können Sie die Einstellung mit diesem Befehl vornehmen:

gcloud config set project <PROJECT_ID>

Befehlsausgabe

Updated property [core/project].

3. Neue Spring Boot-Webanwendung erstellen

Nach dem Start von Cloud Shell können Sie die Befehlszeile verwenden, um mit Spring Initializr eine neue Spring Boot-Anwendung zu generieren.

$ 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. Maven pom.xml aktualisieren

Es gibt zwei Möglichkeiten, eine Java-Serveranwendung bereitzustellen – entweder mithilfe des Maven App Engine-Plug-ins oder des Gradle App Engine-Plug-ins oder durch Bereitstellen des Paketverzeichnisses war. Die Anwendung wird mit dem Maven App Engine-Plug-in bereitgestellt.

Maven App Engine-Plug-in hinzufügen

Aktualisieren Sie pom.xml und fügen Sie ein Google Cloud-Plug-in hinzu, das den Bereitstellungsprozess vereinfacht. Sie können die Datei mit Vim, Nano oder Emacs bearbeiten.

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. App Engine-Deskriptor hinzufügen

  1. Zum Bereitstellen der Anwendung in der App Engine-Standardumgebung müssen Sie eine neue src/main/appengine/app.yaml-Deskriptordatei erstellen.
$ mkdir -p src/main/appengine/
$ touch src/main/appengine/app.yaml
  1. Bearbeiten Sie die Datei src/main/appengine/app.yaml und fügen Sie den folgenden Inhalt hinzu:

src/main/appengine/app.yaml

runtime: java17
instance_class: F1

6. Controller hinzufügen

Fügen Sie einen neuen Controller hinzu, der "hello world!" in DemoApplication.java zurückgibt.

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. App lokal ausführen

  1. Prüfen Sie, ob für JAVA_HOME die richtige JDK-Version festgelegt ist:
$ export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64/
  1. Sie können die Spring Boot-Anwendung mit dem Spring Boot-Plug-in starten:
$ ./mvnw -DskipTests spring-boot:run
  1. Klicken Sie nach dem Start der Anwendung in der Cloud Shell-Symbolleiste auf Webvorschau1a94d5bd10bfc072.png und wählen Sie Vorschau auf Port 8080 aus.

3aca52f76c6c22a3.png

In Ihrem Browser wird ein Tab geöffnet und eine Verbindung zum gestarteten Server hergestellt.

7b0d8494f647822a.png

8. Die Anwendung in App Engine bereitstellen

  1. Initialisieren Sie zuerst das Projekt, damit App Engine-Anwendungen ausgeführt werden können. Initialisieren Sie außerdem das Projekt, das in der zentralen Region der USA ausgeführt werden soll.
$ 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. Stellen Sie dann Ihre Anwendung mit dem Befehl mvn appengine:deploy in der App Engine-Standardumgebung bereit.
$ ./mvnw -DskipTests package appengine:deploy
... first time deploy may take a couple of minutes
  1. Nachdem die Anwendung bereitgestellt wurde, können Sie sie aufrufen, indem Sie http://<project-id>.appspot.com in Ihrem Webbrowser öffnen oder den folgenden Befehl in Cloud Shell verwenden:
$ gcloud app browse
... [It may print out the URL for your app]

9. Bereinigen

Sie können eine App Engine-Anwendung nicht löschen, aber Sie können sie deaktivieren.

Rufen Sie in der Google Cloud Console App Engine und Settings auf und wählen Sie Disable Application aus:

8052c1e4ad73d70e.png

Alternativ können Sie das gesamte Projekt löschen:

$ gcloud projects delete YOUR-PROJECT-ID

10. Glückwunsch

Sie haben gelernt, Ihre erste App Engine-Webanwendung zu schreiben.

Weitere Informationen