Zrób z dowolnej aplikacji usługę chmurową – Jerverless

Aplikacje chmurowe przechodzą ewolucję z architektury monolitycznej do serverless. Pierwsza forma polegała na tym, że każdy element aplikacji pakowano do jednego modułu, który następnie był wgrywany na serwer bądź VM. Takie rozwiązanie przynosiło spore wady m.in utrudnioną konserwację, rozbudowę oraz niską odporność na nieoczekiwane błędy. Z wymienionych powodów, w społeczności IT ciepło przyjęto nową architekturę (serverless), bazującą na mikroserwisach. Logika biznesowa aplikacji została podzielona na możliwie jak najmniejsze elementy, a każdy z nich stanowił jeden suwerenny mikroserwis, który dokowany w kontenerze trafnie zwalczał wady poprzedniego rozwiązania. Przy wykorzystaniu narzędzi, jakie dostarczają nam usługodawcy chmurowi, z monolitu podzielonego na mniejsze fragmenty jesteśmy w stanie tworzyć usługi odpowiedzialne za poszczególne zadania w logice biznesowej. Wtedy wszystkie zadania związane z zarządzaniem serwerami (aktualizacja systemów operacyjnych, konfiguracja sieci, skalowanie aplikacji ) zrzucamy na usługodawcę (Amazon, Microsoft, Googlee), a my możemy w pełni poświęcić się kodowaniu i rozwijaniu aplikacji. W przenoszeniu oprogramowania z monolitu na serverless pomoże nam dzisiaj opisywany projekt o nazwie Jerverless.

Jaki problem rozwiązuje projekt ?

Jerverless  (Java Serverless) jest wielowątkowym serwerem, który konwertuje żądania POST w standardowe wejścia w Twojej aplikacji, a następnie standardowe wyjście zwraca jako odpowiedź HTTP. Dzięki temu możesz komunikować się zarówno ze skryptami Bash, jak i dowolnymi plikami wykonywalnymi.

Schemat komunikacji użytkownika z dowolną aplikacją przez jerverless

Oprogramowanie to można przygotować na wirtualnej maszynie w pięciu prostych krokach :

A. Ściagamy plik .jar

 $ curl --ssl -L https://github.com/jerverless/jerverless/releases/download/v0.1.0/org.jerverless-0.1.0.jar > jerverless.jar

B. Tworzymy plik z właściwościami jerverless.properties

exec = python helloworld.py
port = 8080
cors = true

C. Tworzymy program z jakim ma się jerverless komunikować

name = raw_input()
print "Hello %s!" % name

D. Uruchamiamy serwer

$ java -jar org.jerverless-0.1.0.jar 

E. Testujemy

 $ curl -d OpenHero http://localhost:8080/function

W odpowiedzi otrzymamy komunikat Hello OpenHero!
Oprogramowanie to możemy uruchomić także w Dockerze i Kubernetes, gdzie procedura ta przebiega jeszcze szybciej i prościej.

Jak zacząć kontrybuować ?

Ten projekt posiada tylko 6 kontrybutorów, spośród których zaledwie 3 jest aktywnych. Aktualnie w zakładce Issues znajdziecie 9 utworzonych błędów, jednak myślę, że jest to dobry projekt dla początkujących kontrybutorów, ponieważ nie przytłoczy wielkością. W momencie pisania artykułu zgłoszone błędy polegają między innymi na dodaniu przykładowych kodów źródłowych do README.md, wymuszeniu zaprzestania pracy aplikacji po wciśnięciu ctrl + c bądź dodaniu przykładowego kodu hello world dla .net core. Także łatwo możecie dołączyć do Jerverless Team.

Na jakim etapie jest projekt i z jakich technologii korzysta ?

Jerverless jest młodym projektem, który cały czas nabiera kształtów. Niewielkim wkładem jesteś w stanie wpłynąć na przyszłość tego oprogramowania. Autorzy ze Sri Lanki w całości oparli swój projekt na technologii Java.

Podsumowanie

Po przedstawieniu korzyści, jakie daje serverless nic dziwnego, że architektura ta cieszy się coraz większą popularnością. Dzięki aplikacjom takim jak Jerverless, będziesz w stanie łatwiej przenieść swój produkt do chmury, a początkujących programistów zachęcam do zainteresowania się tym projektem.

Edit 1:

Po opublikowaniu artykułu pojawiło się pytanie ” jak to ma się różnić od Function-as-a-Service jak w Azure Functions / AWS Lambda? “. Skontaktowałem sie z autorami projektu w celu osiągnięcia najcelniejszej odpowiedzi :

AWS Lambda i podobne przechowują źródło Twojej funkcji na swoich serwerach za co musisz płacić. Więc musisz napisać funkcję używając zależności AWS Lambda i wgrać to na ich infrastrukturę. A co jeżeli posiadasz własny serwer i potrzebujesz funkcjonalności podobnych do tych jakie oferuje AWS Lambda ? Jerverless oferuje rozwiązanie takiego scenariusza. Twoim zadaniem jest napisanie programu używającego standardowe strumienie wejścia i wyjścia, po czym będziesz mógł komunikować się z nim przy pomocy żądań HTTP wykorzystując Jerverless. Jerverless transformuje żądania POST w standardowe wejścia i vice versa. Więc Jeverless jest jak aws lambda ,na Twoim sprzęcie. Jerverless może być także zainstalowany w kontenerze, VM oraz fizycznym komputerze – Shalitha Suranga

daxter
marcinek44@windowslive.com

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *