8080, 4040, 4000, 9080 – mnożą się byty na portach localhostu ostatnio dosyć często. Dlatego dziś stwierdziłem – basta! Chcę mieć działającą apkę wystawioną na serwerze zewnętrznym. Najlepiej od razu w chmurze. Chmury są intrygującymi bytami w świecie dev – od ich stosunkowo świeżego debiutu przed kilkoma laty mocno przeobraziły świat aplikacji, programowania i – w szerszym wymiarze – samą sieć. Chmury są wciąż nowinką, do spółki z nauczaniem maszynowym, Big Data i AI stanowią trzon innowacji – to tu lądują najmocniejsze mózgi, to tu najlepiej się płaci i to tu jest największe ssanie na rynku. Wracając jednak do rzeczy…

Po szybkim riserczu zdecydowałem się na opcję chmury Google’a – Google Cloud Platform. Nie, nie ze względów racjonalnych – nie porównywałem dogłębnie GCP vs AWS (Amazon Web Service). Po prostu już kiedyś założyłem konto na GCP i mniej więcej znałem interfejs. To co mnie kusi – a co oferuje zarówno Amazon – to roczny okres bezpłatny, w trakcie którego mamy 300 USD do wykorzystania. To bardzo mały kredyt, jeśli myślimy o aplikacji, która nie będzie tylko skromną, testową apką chowaną do szuflady, ale wystarczy, gdy chcemy po prostu zapoznać się z narzędziem.

Krok 1 – Założenie konta i … tutorial

Ekscytujący to moment, w którym po przeklikaniu się przez godzinę przez tutorial, mamy to COŚ! Działający przykład, nawet niech to będą dwa zdania printowane do terminala. Radość wielka. No dobra, przynajmniej ja tak mam. W przypadku stawiania apki na GCP sprawa jest podobna – na początek tutorial. Pośród wielu istniejących polecam ten – Bookshelf, który u podstawy wykorzystuje Servlety i JSP. A że servlety to nasz obecny temat na kursie, to tym chętniej sięgnąłem po ten właśnie przykład. Zanim rzecz jasna odpalicie tutorial musie założyć konto w GCP. Nie ma wyjścia – trzeba podać numer karty. Co istotne – hajs nigdy nie zejdzie z waszego konta bez waszej wiedzy.

Krok 2 – JSP i Servlety

Zanim jednak wypuścimy aplikację Bookshelf do chmury odpalcie ją na … localhoście (od pewnych rzeczy nie ma ucieczki).


Tak, wiem – Lem się w grobie przewraca widząc kotki na swych okładkach. Swoją drogą – czytaliście już nową biografię Lema pióra Orlińskiego – Życie nie z tej ziemi?

Zerknięcie w kod źródłowy to prawdziwa lekcja o czystym kodzie, o JSP, Servletach i o Javie jako takiej. Lubię patrzeć na taki kod, którego architektoniczne założenia są klarowne już po kilku minutach:
– U podstawy leżą POJO – plain old java objects – w postaci klas Book i Result. Od tych klasy zaczęło się modelowanie świata rzeczywistego na program w Javie. Pola klas są rzecz jasna zablokowane modyfikatorem dostępu private, są gettery i settery wystawione jako pośredniczący element w modyfikowaniu danych. Cała klasa Book jest związana Builderem – klasą, która standaryzuje tworzenie instancji klasy. Ten wzorzec projektowy pasuje tu jak ulał.
– funkcje CRUD’owe są wyseparowane w pakiecie basiactions zgodnie z założeniami KISS i SRP. Każda z funkcji obsługiwana jest przez Servlety – czyli biblioteki do wystawiania aplikacji po stronie serwera. Servlety dynamicznie generują strony i są podstawowym narzędziem do obsługi komunikacji klient – serwer.
– jest wreszcie pakiet ‚daos’, który odpowiada za zbudowanie na klasie Books DAO – Database Access Object – abstrakcji, która pozwoli komunikować się z bazą danych i wykonywać na niej operacje mapowania.

Sporo tu dobra. Warto do takiego kodu wracać, czerpać z niego inspirację. Uczyć się.

Krok 3 – odpalenia na chmurze
I już – to wszystko. Mechanika chmury – to co dzieje się pod spodem – to jeszcze nie moja bajka, ale wiem, że będę to zgłębiał. Jest to niesłychanie intrygujące. Aplikacja działa pod tym linkiem. Czad, prawda? 🙂

Mimo iż to tutorial Google’a odwalił za nas lwią część pracy, to warto wynieść z tego kilka elementów, które wynikają z samego kodu. Prosty, czysty, klarowny kod, nawet jeżeli oznacza to mnożenie pakietów, to złoto. Programistyczny święty Graal. Do tego należy dążyć.
Dwa, chmura to przyszłość – NoSQL bazujący na Cloud Datastore, szybka skalowalność, kontrola. Jeżeli macie dwie godziny – zróbcie podobny tutorial, ja zaś biorę się za lekkie manipulacje na kodzie od Google’a 🙂