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. Mit der App Engine müssen keine Server verwaltet werden. Sie laden einfach Ihre Anwendung hoch und sie ist einsatzbereit.

App Engine-Anwendungen werden auf der Grundlage des eingehenden Traffics automatisch skaliert. Load-Balancing, Mikrodienste, Autorisierung, SQL- und NoSQL-Datenbanken, Memory-Caching, Traffic-Aufteilung, Logging, Suche, Versionsverwaltung, Rollouts und Rollbacks sowie Sicherheitsscans werden nativ unterstützt und können individuell angepasst werden.

Die App Engine-Standardumgebung und die flexible App Engine-Umgebung unterstützen eine Vielzahl von Programmiersprachen, darunter Java, Python, PHP, NodeJS und Go. Die beiden Umgebungen bieten Entwicklern maximale Flexibilität bei der Funktionsweise ihrer Anwendung. Jede Umgebung hat bestimmte Stärken. Weitere Informationen finden Sie unter App Engine-Umgebung auswählen.

Sie lernen, eine Spring Boot-Anwendung in der App Engine-Standardumgebung bereitzustellen. Die Standardumgebung wird auf null Instanzen heruntergescalt, wenn sie nicht verwendet wird, und automatisch wieder hochgescalt.

Voraussetzungen

  • Kenntnisse der Programmiersprache Java und der zugehörigen Tools
  • Kenntnisse von standardmäßigen Linux-Texteditoren wie Vim, Emacs und nano

Aufgaben

  • Erstellen einer Spring Boot-Java-Anwendung in der App Engine

Voraussetzungen

2. Einrichtung und Anforderungen

Umgebung zum selbstbestimmten Lernen einrichten

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

b35bf95b8bf3d5d8.pnga99b7ace416376c4.pngbd84a6d3004737c5.png

  • Der Projektname ist der Anzeigename für die Teilnehmer dieses Projekts. Er ist ein String, der nicht von Google APIs verwendet wird. Sie können ihn jederzeit aktualisieren.
  • Die Projekt-ID ist für alle Google Cloud-Projekte eindeutig und unveränderlich. Sie kann also nicht geändert werden, nachdem sie festgelegt wurde. Die Cloud Console generiert automatisch einen eindeutigen String. In den meisten Fällen ist es nicht wichtig, wie dieser String aussieht. In den meisten Codelabs müssen Sie auf Ihre Projekt-ID verweisen (in der Regel als PROJECT_ID angegeben). Wenn Ihnen die generierte ID nicht gefällt, können Sie eine andere zufällige ID generieren. Alternativ können Sie eine eigene ID ausprobieren und prüfen, ob sie verfügbar ist. Sie kann nach diesem Schritt nicht mehr geändert werden und bleibt für die Dauer des Projekts bestehen.
  • Zur Information: Es gibt einen dritten Wert, die Projektnummer, die von einigen APIs verwendet wird. Weitere Informationen zu diesen drei Werten finden Sie in der Dokumentation.
  1. Als Nächstes müssen Sie die Abrechnung aktivieren in der Cloud Console, um Cloud-Ressourcen/APIs verwenden zu können. Die Durchführung dieses Codelabs kostet wenig oder gar nichts. Wenn Sie Ressourcen herunterfahren möchten, um zu vermeiden, dass Ihnen nach Abschluss dieser Anleitung Kosten in Rechnung gestellt werden, können Sie die erstellten Ressourcen oder das Projekt löschen. Neue Google Cloud-Nutzer können das kostenlose Testprogramm im Wert von 300 $ nutzen.

Cloud Shell

Sie verwenden die 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 die Cloud Shell zum ersten Mal starten, wird ein Fenster mit einer Beschreibung eingeblendet. Klicken Sie in diesem Fall einfach auf Weiter.

9c92662c6a846a5c.png

Das Herstellen der Verbindung mit der Cloud Shell sollte nur wenige Augenblicke dauern.

9f0e51b578fecce5.png

Auf dieser virtuellen Maschine sind alle erforderlichen Entwicklungstools installiert. Sie bietet ein Basisverzeichnis mit 5 GB nichtflüchtigem Speicher und läuft in Google Cloud, was die Netzwerkleistung und Authentifizierung erheblich verbessert. Die meisten, wenn nicht sogar alle Aufgaben in diesem Codelab können mit einem Browser erledigt werden.

Sobald die Verbindung mit der Cloud Shell hergestellt ist, sehen Sie, dass Sie authentifiziert sind und für das Projekt Ihre Projekt-ID eingestellt ist.

  1. Führen Sie in der 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 der 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 der Cloud Shell können Sie mit der Befehlszeile eine neue Spring Boot-Anwendung mit Spring Initializr 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-Datei „pom.xml“ aktualisieren

Es gibt zwei Möglichkeiten, eine Java-Serveranwendung bereitzustellen: entweder mit dem Maven App Engine-Plug-in oder dem Gradle App Engine-Plug-in oder durch Bereitstellung des war-Paketverzeichnisses. Sie verwenden das Maven App Engine-Plug-in, um die Anwendung bereitzustellen.

Maven App Engine-Plug-in hinzufügen

Aktualisieren Sie pom.xml, um ein Google Cloud-Plug-in einzufügen, 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. Wenn Sie die Anwendung in der App Engine-Standardumgebung bereitstellen möchten, müssen Sie eine neue Deskriptordatei src/main/appengine/app.yaml 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 in DemoApplication.java einen neuen Controller hinzu, der "hello world!" 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. Anwendung lokal ausführen

  1. Prüfen Sie, ob JAVA_HOME auf 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. Nach dem Start der Anwendung klicken Sie in der Cloud Shell-Symbolleiste auf Web Preview 1a94d5bd10bfc072.pngund wählen Sie Preview on port 8080 aus.

3aca52f76c6c22a3.png

Im 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, um App Engine-Anwendungen ausführen zu können. Initialisieren Sie das Projekt außerdem für die Ausführung in der Region „us-central1“.
$ 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 in der App Engine-Standardumgebung bereit, indem Sie mvn appengine:deploy ausführen.
$ ./mvnw -DskipTests package appengine:deploy
... first time deploy may take a couple of minutes
  1. Nachdem die Anwendung bereitgestellt wurde, können Sie sie über die URL http://<project-id>.appspot.com im Webbrowser aufrufen oder den folgenden Befehl in der 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 Ihre erste App Engine-Webanwendung geschrieben.

Weitere Informationen