Google App Engine jest usługą typu PaaS dostarczaną w ramach platformy Google Cloud.
Pozwala ona udostępniać w chmurze aplikacje napisane w praktycznie dowolnej technologii. Uruchamianie własnych serwisów w ramach tej usługi jest bardzo proste, a zarządzanie maksymalnie zautomatyzowane.
Google App Engine oferuje:
-
automatyczne równoważenie obciążenia (load balancing)
-
szybkie skalowanie
-
wersjonowanie wraz z podziałem ruchu między wersje
Serwisy wykorzystujące GAE mogą działać w jednym z dwóch środowisk: domyślnym (STANDARD) lub elastycznym (FLEXIBLE).
Pierwsze z nich pasuje idealnie do uruchamiania aplikacji wymagających z jednej strony błyskawicznego tworzenia nowych instancji w razie skokowego wzrostu obciążenia, a z drugiej potrafiących wygasić się do zera gdy ruch ustanie.
Uruchamianie aplikacji w środowisku standardowym jest szybkie i proste, a biorąc pod uwagę „darmowe minuty” oferowane przez dostawcę, może być również bezpłatne. Powyższe cechy powodują, że znakomicie nadaje się ono do tworzenia „projektów rekreacyjnych” i właśnie na nim oparte będą poniższe przykłady.
Weźmy najprostszą możliwą aplikację przeglądarkową, nadającą się do uruchomienia przy pomocy GAE. Stworzona została przy pomocy znanego i lubianego frameworka Spring Boot. Jej kod źródłowy znajduje się tutaj. Najprostszą, ale będącą czymś więcej niż serwis zwracający datę opakowaną w JSON.
Jedynymi różnicami, które posiada ta „chmurowa” aplikacja w stosunku do typowego „hello world” są:
-
obecność pliku
src/main/appengine/app.yaml
-
wykorzystanie pluginu
com.google.cloud.tools.appengine
Te dwie zmiany powodują, że jeżeli mamy już założone konto GCP wraz z projektem, na którym jest aktywna usługa GAE, jednym poleceniem:
./gradlew appengineDeploy -DGAE_PROJECT_ID=DEMO
budujemy i instalujemy naszą aplikację w chmurze.
Niestety, jedna z zalet środowiska STANDARD – skalowalność „do zera”, może być jego wadą. Przy domyślnych ustawieniach instalowanego serwisu, brak ruchu powoduje, że istniejące w jego ramach instancje zostają wyłączone. Powoduje to, że szczęśliwy użytkownik, który trafi na taką wygaszoną aplikację musi odczekać dłuższą chwilę, potrzebną na jej uruchomienie.
No właśnie, co to znaczy: „dłuższa chwila”? Powyższy przykład, dla minimalnego środowiska GAE (256MB, CPU 600MHz), uruchamia się 3,5 sekundy. Sporo.
Czy da się szybciej? Owszem.
Następnym przykładem jest funkcjonalnie bliźniacza dla poprzedniej aplikacja, z drobną zmianą. Zamiast frameworka Spring Boot wykorzystuje nowszy i „lżejszy” Micronaut.
Robi dokładnie to samo, instalacja i uruchamianie jest równie proste, a uruchamia się w 1,5 sekundy. Jest to dająca się odczuć różnica.
Podsumowując.
Istnieją proste i w miarę tanie środowiska, na których można uruchamiać aplikacje oparte o JVM. Nie wszystkie aplikacje przeglądarkowe pisane w Javie czy innym Kotlinie, wymagają zaprzęgania takiego kombajnu jak Spring Boot. Da się szybciej i taniej.