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

1. Zanim zaczniesz

Aplikacje App Engine można łatwo tworzyć i utrzymywać oraz skalować wraz ze zmianami potrzeb związanych z ruchem i przechowywaniem danych. W App Engine nie ma żadnych serwerów, które trzeba utrzymywać. Wystarczy przesłać aplikację i gotowe.

Aplikacje App Engine automatycznie skalują się na podstawie ruchu przychodzącego. Równoważenie obciążenia, mikroserwisy, autoryzacja, bazy danych SQL i NoSQL, buforowanie pamięci, podział ruchu, logowanie, wyszukiwanie, obsługa wersji, wdrożenia i przywracanie oraz skanowanie zabezpieczeń są obsługiwane natywnie i można je w dużym stopniu dostosowywać.

Standardowe środowisko App Engine i elastyczne środowisko App Engine obsługują wiele języków programowania, w tym Java, Python, PHP, NodeJS i Go. Te 2 środowiska dają deweloperom maksymalną elastyczność w zakresie działania aplikacji. Każde środowisko ma swoje mocne strony. Więcej informacji znajdziesz w artykule na temat wybierania środowiska App Engine (w języku angielskim).

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

Wymagania wstępne

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

Co trzeba zrobić

  • Jak utworzyć w App Engine aplikację Spring Boot w Javie

Czego potrzebujesz

  • Projekt Google Cloud
  • przeglądarki, na przykład Google Chrome;

2. Konfiguracja i wymagania

Samodzielne konfigurowanie środowiska

  1. Zaloguj się w konsoli Google Cloud i utwórz nowy projekt lub wykorzystaj już istniejący. Jeśli nie masz jeszcze konta Gmail ani Google Workspace, musisz je utworzyć.

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • Nazwa projektu jest wyświetlaną nazwą uczestników tego projektu. To ciąg znaków, który nie jest używany przez interfejsy API Google. W każdej chwili możesz ją zaktualizować.
  • Identyfikator projektu jest unikalny we wszystkich projektach Google Cloud i nie można go zmienić (po jego ustawieniu nie można go zmienić). Cloud Console automatycznie wygeneruje unikalny ciąg znaków. zwykle nieważne, co ona jest. W większości ćwiczeń w Codelabs musisz podać swój identyfikator projektu (zwykle identyfikowany jako PROJECT_ID). Jeśli nie podoba Ci się wygenerowany identyfikator, możesz wygenerować kolejny losowy. Możesz też spróbować własnych sił i sprawdzić, czy jest dostępna. Po wykonaniu tej czynności nie można jej już zmienić. Pozostanie ona przez cały czas trwania projektu.
  • Jest jeszcze trzecia wartość, numer projektu, z którego korzystają niektóre interfejsy API. Więcej informacji o wszystkich 3 wartościach znajdziesz w dokumentacji.
  1. Następnie musisz włączyć płatności w Cloud Console, aby korzystać z zasobów Cloud/interfejsów API. Ukończenie tego ćwiczenia z programowania nic nie kosztuje. Aby wyłączyć zasoby w celu uniknięcia naliczania opłat po zakończeniu tego samouczka, możesz usunąć utworzone zasoby lub projekt. Nowi użytkownicy Google Cloud mogą skorzystać z programu bezpłatnego okresu próbnego o wartości 300 USD.

Cloud Shell

Użyjesz Cloud Shell – środowiska wiersza poleceń działającego w Google Cloud.

Aktywowanie Cloud Shell

  1. W konsoli Cloud kliknij Aktywuj Cloud Shell 853e55310c205094.png.

55efc1aaa7a4d3ad.png

Jeśli uruchamiasz Cloud Shell po raz pierwszy, zobaczysz ekran pośredni z opisem tej usługi. Jeśli wyświetlił się ekran pośredni, kliknij Dalej.

9c92662c6a846a5c.png

Uzyskanie dostępu do Cloud Shell i połączenie się z nim powinno zająć tylko kilka chwil.

9f0e51b578fecce5.png

Ta maszyna wirtualna ma 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ść zadań w ramach tego ćwiczenia z programowania można wykonać w przeglądarce.

Po nawiązaniu połączenia z Cloud Shell powinno pojawić się potwierdzenie, że użytkownik jest uwierzytelniony, a projekt jest ustawiony na identyfikator Twojego projektu.

  1. Uruchom to polecenie w Cloud Shell, aby potwierdzić, że jesteś uwierzytelniony:
gcloud auth list

Dane wyjściowe polecenia

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

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
  1. Uruchom to polecenie w Cloud Shell, aby sprawdzić, czy polecenie gcloud zna Twój projekt:
gcloud config list project

Dane wyjściowe polecenia

[core]
project = <PROJECT_ID>

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

gcloud config set project <PROJECT_ID>

Dane wyjściowe polecenia

Updated property [core/project].

3. Tworzenie nowej aplikacji internetowej Spring Boot

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=3.0.5 \
  -d dependencies=web \
  -d type=maven-project \
  -d baseDir=gae-standard-example | tar -xzvf -
$ cd gae-standard-example

4. Zaktualizuj plik pom.xml Maven

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

Dodaj wtyczkę Maven App Engine

Zaktualizuj pom.xml, aby dodać wtyczkę Google Cloud, która upraszcza proces wdrażania. Plik możesz edytować za pomocą 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.4.4</version>
        <configuration>
          <version>1</version>
          <projectId>GCLOUD_CONFIG</projectId>
        </configuration>
      </plugin>
      ...
    </plugins>
  </build>
</project>

5. Dodaj deskryptor App Engine

  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 tę treść:

src/main/appengine/app.yaml

runtime: java17
instance_class: F1

6. Dodaj kontroler

Dodaj nowy kontroler, który zwraca wartość "hello world!" w zasadzie DemoApplication.java.

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. Uruchamianie aplikacji lokalnie

  1. Sprawdź, czy JAVA_HOME ma prawidłową wersję JDK:
$ export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64/
  1. Aplikację Spring Boot możesz uruchomić, korzystając z wtyczki Spring Boot:
$ ./mvnw -DskipTests spring-boot:run
  1. Po uruchomieniu aplikacji kliknij Podgląd w przeglądarce1a94d5bd10bfc072.png na pasku narzędzi Cloud Shell i wybierz Podejrzyj na porcie 8080.

3aca52f76c6c22a3.png

W przeglądarce otworzy się karta i nawiążesz połączenie z uruchomionym serwerem.

7b0d8494f647822a

8. Wdrożenie aplikacji w App Engine

  1. Najpierw zainicjuj projekt, aby móc uruchamiać aplikacje App Engine. Zainicjuj też projekt tak, aby został uruchomiony w centralnym regionie USA.
$ 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óż swoją 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 otworzyć ją, otwierając http://<identyfikator-projektu>.appspot.com w przeglądarce lub używając tego polecenia w Cloud Shell:
$ gcloud app browse
... [It may print out the URL for your app]

9. Czyszczenie

Nie możesz usunąć aplikacji App Engine, ale możesz ją wyłączyć.

Otwórz App Engine i Settings w konsoli Google Cloud, a następnie wybierz Disable Application:

8052c1e4ad73d70e.png

Możesz też usunąć cały projekt:

$ gcloud projects delete YOUR-PROJECT-ID

10. Gratulacje

Udało Ci się nauczyć, jak napisać swoją pierwszą aplikację internetową App Engine.

Więcej informacji