Bezserwerowość - serverless computing

Bezserwerowość (serverless computing) to prawdopodobnie jedno z najpopularniejszych ostatnio haseł w IT. I choć nazwa „technologie bezserwerowe” może być myląca, bo działanie większości rozwiązań serverless jest opartych właśnie o serwery, to jest to jeden z najbardziej gorących tematów w branży. Mowa o usługach i aplikacjach udostępnianych w sposób, w którym użytkownik otrzymuje pożądany efekt bez konieczności zarządzania infrastrukturą technologiczną.

serverless-800x494

Kluczem do rozwiązania bezserwerowego jest w większości model Function as a Service (FaaS), czyli usługi, które sprawiają, że uruchamianie kodu w chmurze jest proste i odbywa się bez udostępniania infrastruktury obliczeniowej. Dzięki FaaS programiści budują architekturę modułową, tworząc bardziej skalowalną bazę kodu bez potrzeby angażowania zasobów na utrzymanie podstawowego zaplecza. Pozwala on programistom wykonywać małe fragmenty kodu na brzegu sieci oraz budować architekturę modułową, tworząc bardziej skalowalną bazę kodu bez potrzeby wydawania zasobów na utrzymanie zaplecza.

Powyższa tabela zawiera krótkie podsumowanie usług FaaS oferowanych przez AWS, Azure i GCP:
Praca GA od Dostępność regionalna
AWS Lambda listopad 2014 Światowy
Funkcje platformy Azure marzec 2016 Światowy
Funkcje Google Cloud luty 2016 Światowy

FaaS zmienił zasady na rynku: przyspieszył możliwość wdrażania usług zaplecza i ułatwił tworzenie aplikacji.

A jakie są jego największe zalety?

  • Uproszczony kod backendu – możemy tworzyć proste funkcje, które niezależnie realizują konkretny cel
  • Uproszczona skalowalność – nie martwimy się o skalowanie kodu
  • Niższe koszty – płacimy mniej niż w przypadku chmury z alokacją serwerów, gdzie często wydajemy pieniądze na niewykorzystane zasoby czy bezczynny czas procesora

Rdzeniem każdej aplikacji jest kod, który tworzy jej logikę i funkcjonalność. Czy jest to gra, aplikacja mobilna, czy oprogramowanie przedsiębiorstw z branży finansowej, istnieją wiersze kodu, które muszą gdzieś działać na serwerze lub grupie serwerów, w których cykle procesora wykonują logikę, która zasila te aplikacje.

Jednak serwery, nawet wirtualne serwery w chmurze, są stosunkowo drogie i trudne w utrzymaniu, często także wymagają wykwalifikowanych i doświadczonych administratorów do ich zabezpieczania i zarządzania. Ponadto, gdy nikt nie korzysta z oprogramowania, serwery te pozostają bezczynne.

Tradycyjna infrastruktura obliczeniowa może być więc nieefektywna i właśnie to sprawia, że FaaS jest tak atrakcyjny.

Zamiast stawiać na złożoną infrastrukturę (serwery, systemy równoważenia obciążenia itp.), FaaS umożliwia uruchamianie kodu na zarządzanej puli zasobów obliczeniowych, pobierając opłątę tylko za czas wykonywania.

Kiedy możemy skorzystać z opcji serverless?

Event-driven Data Processing

Jednym z popularnych użyć może być obsługa zdarzenia wykonywanego w trybie “on-demand”. Jest to popularne wykorzystanie chmury w rozwiązaniach hybrydowych, gdzie część procesu jest przekazywana ze środowiska on-premise do chmury.

Web apps

Kolejnym przykładem wykorzystania technologii serverless, w szczególności Azure Functions, będzie budowa backend dla aplikacji Web działającej w chmurze.

Serverless Application Ecosystems

Co roku praktycznie na całym świecie obserwowany jest dynamiczny wzrost popularności różnego rodzaju asystentów głosowych takich jak Apple Home Pod, czy Amazon Echo. Dzięki wykorzystaniu chmury i Azure Functions możemy budować systemy reagujące i informujące o zaistniałych zdarzeniach.

Przeciwnicy rozwiązania natomiast głównie mówią o tzw. zimnych startach.

Biorąc pod uwagę stosunkowo młody wiek FaaS jako technologii, ma ona zarówno zwolenników jak przeciwników. Ci ostatni jako główny minus rozwiązania z reguły definiują tzw. zimny start, czyli dodatkowy czas potrzebny na odpowiedź na żądanie w stanie nieaktywnym.

Podsumowanie

Dzięki takim rozwiązaniom jak FaaS programiści nie będą musieli spędzać wielu godzin nad konfiguracją serwerów czy instalacją poprawek. Z punktu widzenia biznesu oznacza to koniec lub znaczące zmniejszenie budżetów na zbędne konfiguracje środowisk czy przygotowanie serwerów.