Serverless – czym jest oraz czy warto wdrożyć ten model w firmie?
Rewolucja technologiczna ostatnich, pandemicznych lat to nie tylko cyfryzacja rynku pracy. Wiele firm rozważa również migrację do Chmury czy outsourcing usług z wykorzystaniem technologii cloudowych. Kusi je przede wszystkim możliwość zdalnego zarządzania projektami, aspekt ekologiczny tego rozwiązania i perspektywa oszczędności. Biorąc pod uwagę te czynniki, szczególnie atrakcyjnie prezentuje się zaś przetwarzanie bezserwerowe.
Czym jest przetwarzanie bezserwerowe (serverless)?
Serverless to model programowania oparty na natywnych technologiach cloudowych. Umożliwia on tworzenie i uruchamianie aplikacji bez konieczności zarządzania serwerami. Kod przechowywany jest wówczas w systemach zwanych kontenerami. Rutynowa praca związana z udostępnianiem, konserwacją i skalowaniem infrastruktury serwerowej spoczywa zaś na barkach dostawcy Chmury i jest zupełnie oderwana od procesu tworzenia oprogramowania.
Po wdrożeniu, aplikacje bezserwerowe mogą być skalowane zgodnie z zapotrzebowaniem, co stanowi część outsourcowanej usługi. Co więcej, możliwe jest pobranie wtyczek typu serverless offline, które umożliwiają dostęp do najważniejszych funkcji z poziomu maszyn lokalnych. Istnieje również szereg rozwiązań open-source (takich jak np. Serverless Framework), dzięki którym można je dowolnie konfigurować. Możliwe jest np. stworzenie aplikacji składającej się zarówno z tradycyjnych, jak i bezserwerowych komponentów.
Warto wiedzieć też, że oferty usług serverless computing zazwyczaj dzielą się na dwie grupy: Backend-as-a-Service (BaaS) i Function-as-a-Service (FaaS). Pierwsza opcja zapewnia programistom dostęp do szerokiego wachlarza usług. Dla przykładu, dostawca Chmury może również zająć się uwierzytelnianiem, dodatkowym szyfrowaniem czy bazami danych. W przypadku BaaS funkcje bezserwerowe są zwykle wywoływane za pośrednictwem interfejsów API.
Jeśli zaś chodzi o model FaaS, to programiści nadal są w nim odpowiedzialni za stworzenie niestandardowej logiki po stronie serwera, lecz działa ona w obrębie kontenerów, które są w pełni zarządzane przez dostawcę Chmury. Większość z nich ma przynajmniej jedną opcję tego typu usługi w swojej ofercie (np. AWS Lambda, Azure Functions czy IBM Cloud Functions).
Czy przetwarzanie chmurowe jest drogie? Ile kosztuje wdrażanie przetwarzania bezserwerowego?
Dostawcy public Cloud proponują najczęściej usługi on-demand (tzw. event-driven model), co oznacza, że użytkownik płaci tylko za to, z czego aktualnie korzysta. Jest to jedna z podstawowych różnic pomiędzy serverless computing a innymi opcjami przetwarzania w Chmurze.
W przypadku standardowego modelu (Infrastructure-as-a-Service), użytkownicy określają i wykupują pożądaną zdolność obliczeniową z wyprzedzeniem. Płacą zatem dostawcy rozwiązania za to, że elementy serwera, które są potrzebne do uruchomiania danych aplikacji będą zawsze aktywne. To do użytkownika należy zaś skalowanie jego pojemności w zależności od zapotrzebowania.
Z kolei w przypadku architektury bezserwerowej, aplikacje są uruchamiane tylko w razie potrzeby. Gdy zdarzenie uruchamia kod, dostawca Chmury publicznej (np. AWS Serverless Computing) automatycznie przydziela mu zasoby. Po tym, jak zostanie on wykonany, użytkownik przestaje ponosić opłaty.
Różne czynniki będą miały wpływ na to, ile ostatecznie kosztować będzie wdrożenie przetwarzania bezserwerowego i czy okaże się ono tańsze od rozwiązanie on-premise. Dla wielu organizacji jest ono jednak często bardziej opłacalne z uwagi na brak wydatków związanych z dodatkowym sprzętem i licencjami oraz niższe koszty użytkowania, konserwacji, energii elektrycznej i chłodzenia. Należy przy tym zaznaczyć, że aby to potwierdzić konieczna byłaby szczegółowa estymacja.
Zalety przetwarzania bezserwerowego
- Przetwarzanie bezserwerowe może obniżyć koszty operacyjne i zwiększyć produktywność programistów. Odciążeni od rutynowych zadań (udostępnianie serwerów, wprowadzanie poprawek do zabezpieczeń, skalowanie i zarządzanie pojemnością oraz wiele innych), developerzy mają więcej czasu na tworzenie i rozwój aplikacji.
- Serverless ułatwia również wdrożenie rozwiązań DevOps. Programiści nie muszą bowiem szczegółowo opisywać niezbędnej do tego infrastruktury.
- W przypadku modelu BaaS możliwe jest także skorzystanie z usprawnień aplikacji i innych komponentów z oferty dostawców.
- Wreszcie, w modelu bezserwerowym dostawca chmury obsługuje serwery fizyczne i dynamicznie przydziela zasoby w imieniu użytkowników, którzy mogą wdrażać kod bezpośrednio do środowiska produkcyjnego, co oznacza optymalizację cyklu rozwoju oprogramowania.
Wady przetwarzania bezserwerowego
- Brak obsługi własnego serwera (i kontrolowania logiki po jego stronie) może jednak powodować trudności. Dla przykładu, dostawcy Chmury mogą mieć ograniczenia dotyczące interakcji z ich komponentami, co z kolei negatywnie wpłynie na elastyczność i integracje z istniejącymi systemami.
- W przypadku środowisk BaaS, programiści mogą zaś nie mieć żadnej kontroli nad kodem oferowanych usług.
- Serverless to także model, który naraża na uzależnienie się od jednego dostawcy. Decydując się na jego zmianę, prawdopodobnie będzie trzeba liczyć się z kosztami modernizacji systemów i dostosowania ich do nowej specyfikacji.
Do jakich projektów warto stosować podejście serverless?
Architektura bezserwerowa jest idealna dla asynchronicznych, bezstanowych aplikacji, które mogą być uruchamiane w trybie natychmiastowym. Będzie też dobrym rozwiązaniem w przypadku nieprzewidywalnych (aczkolwiek dość rzadkich) wzrostów zapotrzebowania. Idealnie obsłuży więc zadania takie jak np. przetwarzanie wsadowe plików graficznych czy sprawdzanie wprowadzanych w bazie danych zmian pod kątem standardów jakości. Sprawdzi się także w przypadku aplikacji webowych, chatbotów, integracji wielosystemowych czy automatyzacji procesów biznesowych.
W tym ostatnim mamy szczególnie duże doświadczenie, którym chętnie się dzielimy. Zapraszamy zatem serdecznie do kontaktu i rozmowy!
Porozmawiajmy!
a my pomożemy Ci wdrożyć najnowsze rozwiązania!