Wybierz region
pl
  • PL
  • EN
Wydrukuj

Czy powinienem przejść na serverless?

Serverless jest nową technologią i ciągle rozwijającym się trendem. Czy będzie on rozwiązaniem idealnym dla naszego projektu? Czy może stanie się kulą u nogi? Postaram się pomóc w decyzji czy implementacja w tej technologii będzie słusznym rozwiązaniem w konkretnej aplikacji.

Co to jest serverless

Serverless jest to technologia chmurowa pozwalająca na tworzenie aplikacji bez posiadania i zarządzania serwerami. W ostatnich latach staje się ona coraz bardziej popularna, a wiele firm korzysta z jej zalet i szuka pracowników, którzy są w stanie jej używać.

Jest to kolejna faza ewolucji chmury. W tym modelu klient korzysta tylko z dostępnej mocy obliczeniowej, ale nie musi jej rezerwować. Serverless pozwala uciąć koszt bezczynnych serwerów oraz pozbyć się wielu problemów związanych z infrastrukturą i przy tym oszczędzić pracy administratorów. Ale czy zawsze?

Czy ta technologia jest odpowiednia dla mojego projektu

Tak jak często w naszej branży bywa odpowiedzią na to pytanie jest ulubione “to zależy”. Przede wszystkim od: od użytej technologii, języka programowania, częstotliwości i długości zadań. Aby znaleźć odpowiedź dla swojego projektu należałoby rozpatrzyć następujące kwestie:

Koszty

W klasycznych rozwiązaniach serwery muszą być włączone nieustannie. Cały czas gotowe do obsłużenia naszych klientów.

W serverless funkcje włączą się kiedy będzie to potrzebne. Nie będą one uruchomione w tle. W tym modelu zapłacimy za faktycznie zużyte zasoby, a nie za samą rezerwację. Taki model nazywany jest często pay-as-you-go. Jeżeli nasz system nie wymaga działania 24 godziny na dobę. Na przykład poza godzinami pracy jest on nieużywany warto zastanowić się nad implementacją w technologii serverless. Co więcej serverless sprawdzi się idealnie w architekturach typu event-driven (np. obsługa urządzeń IoT) lub w aplikacjach uruchamianych w regularnych odstępach czasowych (np. cron joby).

Wraz z oszczędnościami wynikającymi z opłat za samo zużycie należy przeliczyć również odzyskane części etatu administratorów. Odpowiedzialność za infrastrukturę leżąca po stronie dostawcy pozwoli ograniczyć ich pracę. Kalkulacja oszczędności będzie różna dla każdej firmy. Wiele z nich zgłosiło zmniejszenie rachunków o dziesiątki procent.

Opóźnienie

Nieużywane funkcje zostają dezaktywowane przez dostawcę po pewnym czasie nieaktywności, aby minimalizować niewykorzystane zasoby serwera. Kiedy próbujemy wywołać taką funkcję musi ona zostać ponownie zainicjalizowana co przekłada się na dłuższy czas odpowiedzi. Tego typu problem nazywany jest cold start.

Jeżeli problem cold start’u jest dla nas znaczący, należy mieć na uwadze, że istnieją sposoby aby go niwelować:

utrzymywanie funkcji w cieple przez uderzanie do niej w regularnych odstępach czasowych (proces ten może nie być tak prosty przy skomplikowanych, dużych serwisach) tworzenie małych funkcji o pojedynczej odpowiedzialności używanie języków o krótszym czasie startu jak np. python

Skalowalność

Aplikacje tworzone w technologii serverless będą z założenia gotowe do automatycznego skalowania. Jeżeli dostawca wykryje zwiększony ruch w naszym rozwiązaniu, przeskaluje funkcje biorąc pod uwagę obecne obciążenie. Niektórzy dostawcy zapewnią również kopiowanie jak najbliżej użytkownika aby skrócić czasy odpowiedzi do minimum. Dodatkowo w serverless możemy manipulować maksymalną ilością pamięci przydzieloną do naszej funkcji. Prędkość aplikacji można dostosowywać za pomocą jednego suwaka w panelu administracyjnym!

Wskutek nie trafnych oszacowań czy błędów programistycznych może okazać się, że zużyjemy więcej zasobów niż było to założone. Trzeba mieć na uwadze, że w modelu pay-as-you-go będziemy musieli za to zapłacić.

Brak kontroli nad serwerem

Zarządzanie infrastrukturą może spędzać sen z powiek. W technologii serverless serwery nie są problemem ponieważ odpowiedzialność za nie ponosi dostawca. Nigdy więcej aktualizacji sytemu operacyjnego czy konfiguracji sieci. I o ile pozwala to zaoszczędzić koszty operacyjne i czas pracy przeznaczony na konserwację serwerów to będziemy musieli dostosować się w niektórych momentach do dostawcy.

Od strony dostawcy otrzymamy zamknięty set wspieranych środowisk uruchomieniowych. Jeżeli nie będzie tam dostępnej interesującej nas wersji to my będziemy musieli dostosować się pod jedną z tych wspieranych. Dodatkowo mogą pojawić się ograniczenia na współbieżność i maksymalne zasoby dostępne dla pojedynczej funkcji. Wypadałoby sprawdzić te wartości zanim pochłonie nas ta technologia. Należy mieć na uwadze ewentualne dynamiczne ceny które za miesiąc mogą być inne niż obecnie.

Problemy gdzie dostawca dyktuje nam zasady gry i uzależniamy się od niego nazywane są vendor lock-in. Zmiana dostawcy usług chmurowych może być procesem kosztownym i skomplikowanym. Jeżeli vendor lock-in jest znacznym problemem, warto zapoznać się z open source’owym frameworkiem Serverless (https://serverless.com/), który jest warstwą abstrakcji ponad usługami serverless.

Podsumowanie

Serverless jest nową technologią i wydaje się zapełniać niszę gdzie serwery nie muszą być nieustannie uruchomione. Jest to spełnienie metodyki DevOps gdzie granica pomiędzy programistą i administratorem jest zatarta. Developerzy są bliżej środowiska i mają oni na nie większy wpływ. W zależności od konkretnego rozwiązania, serverless może pozwolić na znaczne oszczędności czasu i pieniędzy, a także przy niskim koszcie wytwórczym zapewnić aplikacji skalowalność. Przed decyzją o jej używaniu należy wyważyć czy potencjalne zalety mogą przewyższyć wady i ile będzie kosztowało nas przejście na tego typu rozwiązanie.

 

 


Tomasz Rutkowski

Współzałożyciel NavySol, firmy która powstała jako startup przy Asseco Innovation Hub, absolwent Politechniki Gdańskiej. W NavySol wytwarza oprogramowanie służące cyfryzacji dokumentów. Pasjonat technologii, uwielbia podróże.


Wydrukuj