Aplikacja WWW, dwa frameworki i tani hosting

· 392 słów · do przeczytania, w minut 2

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.