Google Cloud Platform to jedna z najbardziej znanych platform chmurowych. Posiada ona świetne narzędzia, które ułatwiają wdrożenie i uruchomienie aplikacji napisanej w Spring Boot. Zresztą nie tylko 😉 Jednak wsparcie do Spring jest świetnie przygotowane, a dokumentacja i commmunity są bardzo pomocne.
W tym artykule przedstawię Ci sposób wdrożenia i uruchomienia aplikacji w Google App Engine, czyli praformy developerskiej hostującej aplikacje internetowe. Obsługuje ona wiele języków takich jak Python, Java, JS, PHP czy Go.
App Engine jest tylko z jedną platform, którą można wykorzystać obok bardziej zaawansowanych – Kubernetes Engine czy Compute Engine.
1. Zakładanie projektu w GCP
Gogole Cloud Platform nowym użytkownikom dostarcza $300 na sprawdzenie ich usług przez 12 miesięcy. Wymagana jest jednak konieczność podpięcia karty płatniczej (Prepaidowe takie jak Revolut nie działają – sprawdzałem 😅).
Kiedy utworzymy konto w panelu GCP zakładamy nowy projekt.
Utworzony projekt należy znacjonalizować. Wcześniej GCP robił to automatycznie, natomiast teraz należy przejść do Google Cloud Shell:
A następnie wykonujemy polecenie:
gcloud app create
W kreatorze zostaniemy zapytani o region w którym chcemy, aby była hostowana aplikacja. Polecam wybór europejskiego – chyba, że odbiorców aplikacji mamy w innej lokalizacji.
2. Uwierzytelenie w ramach GCP
Aby wdrożyć aplikacje na Gogole App Engine z poziomu dekstopu, musimy uwierzytelnić się w usłudze GCP. Gogole umożliwia to z wykorzystaniem OAuth2.
Cały proces jest bardzo prosty – wystarczy pobrać i zainstalować Google Cloud SDK Shell, a po uruchomieniu wykonać polecenie:
gcloud auth login
następnie podając konto w ramach którego chcemy się uwierzytelnić:
Teraz na naszym komputerze możemy swobodnie wykonywać autoryzowane operacje w ramach GCP.
Przy okazji podaje kilka przydatnych poleceń do Google Cloud SDK Shell:
- gcloud auth login – uwierzytelnienie w ramach GCP
- gcloud auth revoke – wycofanie poświadczeń użytkownika
- gcloud app deploy <app.jar> – wdrożenie wykonywanego jar’a w ramach GAE
- gcloud projects list – listowanie dostępnych projektów
- gcloud config set project <project-name> – wybór projektu
3. Przygotowanie aplikacji w Spring Boot
Od Ciebie zależy co zawierać będzie aplikacja napisana w Spring Boot. Na potrzeby przykładu tworzę prostą metodę webową:
@SpringBootApplication @RestController public class SpringbootGcpApplication { public static void main(String[] args) { SpringApplication.run(SpringbootGcpApplication.class, args); } @GetMapping public String get() { return "Witaj w akademiaspring.pl!"; } }
Następnie spakuj aplikacje do pliku *.jar
4. Deploy aplikacji
Najprostszym sposobem wdrożenia aplikacji jest przejście do katalogu, gdzie został zbudowany .*jar a następnie wykonanie polecenia
gcloud app deploy app-name.jar
Rezultat działania możesz podziwiać po przejściu pod adres usługi (możesz go sprawdzić w panelu GCP – zakładka App Engine).
5. Bonus – automatyzacja wdrożenia
Aby programista nie musiał za każdy razem korzystać z konsoli, oraz skakać po katalogach można w pliku .pom można zautomatyzować ten proces dodając do sekcji build:
<plugin> <groupId>com.google.cloud.tools</groupId> <artifactId>appengine-maven-plugin</artifactId> <version>2.2.0</version> <configuration> <deploy.projectId>springboot-gcp-275522</deploy.projectId> <deploy.version>springboot-gcp</deploy.version> </configuration> </plugin>
Oczywiście prawidłowo uzupełniając:
- projectId – zgodny z id projektu (dostępny w panelu GCP)
- version – zgodny z naszymi upodobaniami 🙂
Następnie po zbudowaniu paczki wystarczy wykonać polecenie, które automatycznie wdroży ją w ramach usługi GAP:
mvn package appengine:deploy
Szkolenie z Angular + Spring Boot + GCP
Jeśli podoba Ci się temat to zapraszam na fragment mojego szkolenia Angular + Spring Boot + GCP.
W szkoleniu krok po kroku pokazuje jak stworzyć aplikacje backendową do korzystania z usług Storage GCP (magazynowanie plików) oraz frontonową, która umożliwia na interakcje z użytkownikiem. Całość uruchamiamy w ramach GCP ☁️
Czy interesuje Cię tematyka chmury? Jeśli tak to daj znać w komentarzu a takich materiałów będzie więcej 🙂