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
- 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ć.
- 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.
- 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
- W konsoli Cloud kliknij Aktywuj Cloud Shell .
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.
Uzyskanie dostępu do Cloud Shell i połączenie się z nim powinno zająć tylko kilka chwil.
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.
- 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`
- 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
- 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
- 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
- Sprawdź, czy JAVA_HOME ma prawidłową wersję JDK:
$ export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64/
- Aplikację Spring Boot możesz uruchomić, korzystając z wtyczki Spring Boot:
$ ./mvnw -DskipTests spring-boot:run
- 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 i nawiążesz połączenie z uruchomionym serwerem.
8. Wdrożenie aplikacji w App Engine
- 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
- 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
- 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
:
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.