Na deser przedstawię architekturę opartą o rozwiązania chmurowe, czyli serverless. Jest to dosyć świeża koncepcja tworzenia oprogramowania, która powstała z myślą o tym nie przejmować się w ogóle infrastrukturą. Zespół deweloperski odpowiedzialny jest tylko za to, aby stworzyć aplikację oraz ją wdrożyć. Nie musi kompletnie przejmować się konfiguracją serwera. To dostawca rozwiązania chmurowego musi zadbać o to, aby wszystko uruchomiło się zgodnie z założeniem. Dodatkowo może także zajmować się skalowaniem aplikacji jeżeli sytuacja będzie tego wymagała.

Początkowo rozwiązanie serverless powstało na potrzeby systemów IoT. Powodem był fakt, że nie wymagają one, aby serwery były cały czas aktywne. Dodatkowo czujniki wysyłają żądania rzadko i nieregularnie. Dopiero nie tak dawno powstała myśl, aby wykorzystać to rozwiązanie do tworzenia aplikacji biznesowych.

Specyfika działania architektury serverless

Na system serverless składa się wiele powiązanych ze sobą usług zewnętrznych (Backend-as-a-Service). Są to Auth0 (Single Sign-On), chmurowa baza danych taka jak np. Firebase oraz bezpośrednio wdrażane funkcje na serwer (Function-as-a-Service). W tej architekturze funkcje są wywoływane w oparciu o zdarzenia. Serwery znajdują się w stanie czuwania i dopiero, gdy trafi do nich żądanie wybudzają się. Może to nastąpić na skutek np. wywołania REST bądź odebranego komunikatu. Warto przyjrzeć się jednym z bardziej popularnych rozwiązań tego typu jakim są AWS Lambda czy też Microsoft Azure Functions.

Schemat architektury serverless
Schemat architektury serverless

Zagadnienie serverless oczywiście nie oznacza, że nie ma żadnych serwerów. Są one po prostu niewidoczne dla użytkownika tego typu usługi. Istnieje jednak możliwość stworzenia własnej platformy w oparciu o gotowe rozwiązania takie jak np. OpenWhisk. Jednak jest to zadanie dla devopsów, deweloperzy w dalszym ciągu nie widzą o istnieniu serwerów.

W przypadku, gdy decydujemy się na infrastrukturę dostarczoną przez publicznych dostawców (takich jak Google Functions, AWS Lambda czy Microsoft Azure) musimy liczyć się z tym, że w pewnym sensie uzależniamy się od nich. Możemy co prawda skorzystać z usług zewnętrznych dostarczających np. bazę danych jednak będzie to trudne w implementacji i odbije się znacząco na wydajności. Preferowanym sposobem jest korzystanie z usług dostarczanych przez wybranego dostawcę, ale to rozwiązanie może być droższe i coraz bardziej popadamy w uzależnienie od rozwiązań producenta.

Warto także mieć świadomość ograniczeń jakie wiążą się z korzystaniem z funkcji modelu FaaS. Są nimi na pewno: ograniczony czas wykonania żądania oraz praktycznie brak stanowości. Oczywiście istnieje możliwość przechowywania stanu, ale trzeba zakupić dodatkowe usługi ofertujące taką możliwość. Warto dodatkowo zwrócić uwagę, że podstawową jednostką wdrożeniową są funkcje. System staje się wtedy po prostu zbiorem funkcji, co składa się na design aplikacji.

Za i przeciw

Plusem przemawiającym za architekturą serverless jest brak konieczności zarządzania infrastrukturą. Dostajemy również możliwość praktycznie natychmiastowego wdrożenia aplikacji na produkcję. Dostawcy zachęcają do skorzystania z ich usług BaaS przez co nie trzeba tracić czasu na implementację powtarzających się rozwiązań takich jak autentykacja, baza danych, zarządzanie systemem plików. Ogromną zaletą są również automatyczne systemy skalowania aplikacji, gdy zajdzie taka potrzeba.

Trzeba jednak uważać, bo istnieje spore ryzyko związania się na stałe z jednym dostawcą. Zawsze wolę mieć jakieś dodatkowe wyjście, więc przeraża mnie wizja uzależnienia się od kogoś widzimisię, a zwłaszcza wielkich korporacji. Testowalność wdrożonego rozwiązania pod względem integracji i funkcjonalności także nie należy do najłatwiejszych zadań.

Podsumowanie

Na tym pora zakończyć przegląd popularnych obecnie rozwiązań architektonicznych aplikacji biznesowych. Mam nadzieję, że i Tobie przydał się taki krótki opis każdej z przedstawionych opcji. W przyszłości mam nadzieję, że ta seria będzie dobrym wstępem do kolejnych artykułów. Chciałbym też spotkać takie rozwiązania w swojej karierze zawodowej, ale na to pewnie jeszcze muszę chwilę poczekać.