Wdrażanie aplikacji Spring Boot w standardowym środowisku App Engine

Aplikacje App Engine są łatwe w tworzeniu, utrzymaniu i skalowaniu w miarę zmian w ruchu i potrzebach związanych z przechowywaniem danych. W przypadku App Engine nie musisz utrzymywać serwerów. Wystarczy przesłać aplikację, aby była gotowa do użycia.

Aplikacje App Engine automatycznie skalują się na podstawie ruchu przychodzącego. Równoważenie obciążenia, mikrousługi, autoryzacja, bazy danych SQL i NoSQL, buforowanie w pamięci, dzielenie ruchu, rejestrowanie, wyszukiwanie, wersjonowanie, wdrażanie i wycofywanie zmian oraz skanowanie zabezpieczeń są obsługiwane natywnie i w dużym stopniu konfigurowalne.

Standardowe środowisko App Engineelastyczne środowisko App Engine obsługują wiele języków programowania, w tym Java, Python, PHP, NodeJS i Go. Oba środowiska zapewniają programistom maksymalną elastyczność w zakresie działania aplikacji. Każde środowisko ma określone zalety. Więcej informacji znajdziesz w artykule Wybór środowiska App Engine.

Dowiesz się, jak wdrożyć aplikację Spring Boot w standardowym środowisku App Engine. Środowisko standardowe jest skalowane w dół do zera instancji, gdy nikt z niego nie korzysta, i automatycznie skalowane w górę.

Wymagania wstępne

  • Znajomość języka programowania Java i narzędzi
  • Znajomość standardowych edytorów tekstu systemu Linux, takich jak Vim, Emacs i nano

Co musisz zrobić

  • Tworzenie aplikacji Spring Boot w Javie w App Engine

Czego potrzebujesz

Samodzielne konfigurowanie środowiska

  1. Zaloguj się w konsoli Google Cloud i utwórz nowy projekt lub użyj istniejącego. (Jeśli nie masz jeszcze konta Gmail lub G Suite, musisz je utworzyć).

Zapamiętaj identyfikator projektu, czyli unikalną nazwę we wszystkich projektach Google Cloud (podana powyżej nazwa jest już zajęta i nie będzie działać w Twoim przypadku). W dalszej części tego laboratorium będzie on nazywany PROJECT_ID.

  1. Następnie musisz włączyć płatności w Cloud Console, aby móc korzystać z zasobów Google Cloud.

Wykonanie tego samouczka nie powinno kosztować więcej niż kilka dolarów, ale może okazać się droższe, jeśli zdecydujesz się wykorzystać więcej zasobów lub pozostawisz je uruchomione.

Nowi użytkownicy Google Cloud mogą skorzystać z bezpłatnego okresu próbnego, w którym mają do dyspozycji środki w wysokości 300 USD.

Cloud Shell

Będziesz używać Cloud Shell, czyli środowiska wiersza poleceń działającego w Google Cloud.

Aktywowanie Cloud Shell

  1. W konsoli Cloud kliknij Aktywuj Cloud Shell .

Jeśli nigdy wcześniej nie uruchamiałeś(-aś) Cloud Shell, zobaczysz ekran pośredni (poniżej linii podziału) z opisem tego środowiska. W takim przypadku kliknij Dalej (i nie zobaczysz już tego ekranu). Ekran jednorazowy wygląda tak:

Udostępnienie Cloud Shell i połączenie się z nim powinno zająć tylko kilka chwil.

Ta maszyna wirtualna zawiera wszystkie potrzebne narzędzia dla programistów. Zawiera stały katalog domowy o pojemności 5 GB i działa w Google Cloud, co znacznie zwiększa wydajność sieci i uwierzytelnianie. Większość, jeśli nie wszystkie, zadań w tym laboratorium możesz wykonać za pomocą przeglądarki lub Chromebooka.

Po połączeniu z Cloud Shell zobaczysz, że jesteś już uwierzytelniony, a projekt jest już ustawiony na Twój identyfikator projektu.

  1. Aby potwierdzić, że masz autoryzację, uruchom w Cloud Shell to polecenie:
gcloud auth list

Wynik polecenia

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

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
gcloud config list project

Wynik polecenia

[core]
project = <PROJECT_ID>

Jeśli nie, możesz ustawić go za pomocą tego polecenia:

gcloud config set project <PROJECT_ID>

Wynik polecenia

Updated property [core/project].

Po uruchomieniu Cloud Shell możesz użyć wiersza poleceń, aby wygenerować nową aplikację Spring Boot za pomocą 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

Aplikację serwera Java można wdrożyć na 2 sposoby: za pomocą wtyczki Maven App Engine lub wtyczki Gradle App Engine albo przez wdrożenie katalogu pakietu war. Do wdrożenia aplikacji użyjesz wtyczki Maven App Engine.

Dodawanie wtyczki Maven App Engine

Zaktualizuj pom.xml, aby uwzględnić wtyczkę Google Cloud, która upraszcza proces wdrażania. Do edycji pliku możesz użyć edytora Vim, nano lub Emacs.

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. Aby wdrożyć aplikację w standardowym środowisku App Engine, musisz utworzyć nowy plik deskryptora src/main/appengine/app.yaml.
$ mkdir -p src/main/appengine/
$ touch src/main/appengine/app.yaml
  1. Edytuj plik src/main/appengine/app.yaml i dodaj do niego tę treść:

src/main/appengine/app.yaml

runtime: java11
instance_class: F4

Dodaj nowy kontroler, który zwraca wartość "hello world!" w sekcji 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. Aplikację Spring Boot możesz uruchomić za pomocą wtyczki Spring Boot:
$ ./mvnw -DskipTests spring-boot:run
  1. Po uruchomieniu aplikacji kliknij Podgląd w przeglądarce na pasku narzędzi Cloud Shell i wybierz Podejrzyj na porcie 8080.

W przeglądarce otworzy się karta, która połączy się z uruchomionym serwerem.

  1. Najpierw zainicjuj projekt, aby móc uruchamiać aplikacje App Engine. Zainicjuj też projekt, aby działał w centralnym regionie Stanów Zjednoczonych.
$ 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. Następnie wdróż aplikację w standardowym środowisku App Engine, uruchamiając mvn appengine:deploy.
$ ./mvnw -DskipTests package appengine:deploy
... first time deploy may take a couple of minutes
  1. Po wdrożeniu aplikacji możesz ją otworzyć, wpisując w przeglądarce adres http://<project-id>.appspot.com lub używając tego polecenia w Cloud Shell:
$ gcloud app browse
... [It may print out the URL for your app]

Napisano pierwszą aplikację internetową App Engine.

Więcej informacji