Co to jest serverless computing (przetwarzanie bezserwerowe) / FaaS?

Definicja serverless computing

Serverless computing (przetwarzanie bezserwerowe) to model architektury i wykonywania aplikacji w chmurze, w którym dostawca chmury dynamicznie zarządza alokacją i udostępnianiem zasobów serwerowych, a twórcy aplikacji nie muszą martwić się o zarządzanie infrastrukturą (serwerami, systemami operacyjnymi, skalowaniem). Aplikacje są zazwyczaj budowane jako zbiór małych, niezależnych funkcji (Functions as a Service – FaaS), które są uruchamiane tylko wtedy, gdy są potrzebne (w odpowiedzi na zdarzenia), a płatność następuje wyłącznie za faktyczny czas ich wykonania i zużyte zasoby. Nazwa „serverless” jest nieco myląca – serwery oczywiście istnieją, ale są one całkowicie abstrakcyjne dla dewelopera.

Funkcje jako usługa (Functions as a Service – FaaS)

FaaS jest podstawowym budulcem architektury serverless. Polega na uruchamianiu małych fragmentów kodu (funkcji) w odpowiedzi na określone zdarzenia (eventy), takie jak żądanie HTTP (np. wywołanie API), przesłanie pliku do magazynu obiektów, wiadomość w kolejce czy zmiana w bazie danych. Platforma FaaS automatycznie skaluje liczbę instancji funkcji w zależności od liczby przychodzących zdarzeń, zapewniając wysoką dostępność i efektywność kosztową. Deweloper dostarcza tylko kod funkcji, a platforma zajmuje się resztą.

Kluczowe cechy architektury serverless/FaaS

  • Abstrakcja serwerów: Brak konieczności zarządzania serwerami, systemami operacyjnymi, łataniem itp.
  • Automatyczne skalowanie: Platforma automatycznie skaluje zasoby w górę i w dół (nawet do zera), dopasowując je do aktualnego obciążenia.
  • Płatność za wykonanie (Pay-per-execution): Płaci się tylko za faktyczny czas obliczeniowy i zasoby zużyte podczas wykonywania funkcji, a nie za bezczynne serwery.
  • Sterowanie zdarzeniami (Event-driven): Funkcje są zazwyczaj uruchamiane w odpowiedzi na zdarzenia pochodzące z różnych źródeł.

Backend as a Service (BaaS)

Oprócz FaaS, architektura serverless często wykorzystuje również usługi Backend as a Service (BaaS). Są to gotowe usługi chmurowe udostępniane przez dostawców, które realizują typowe funkcjonalności backendowe, takie jak uwierzytelnianie użytkowników (np. AWS Cognito, Firebase Authentication), zarządzanie bazami danych (np. AWS DynamoDB, Firestore), przechowywanie plików (np. AWS S3) czy powiadomienia push. Deweloperzy mogą korzystać z tych usług, zamiast budować je samodzielnie.

Korzyści z podejścia serverless

  • Niższe koszty operacyjne: Płatność tylko za faktyczne zużycie zasobów może być znacznie tańsza niż utrzymywanie stale działających serwerów, zwłaszcza przy zmiennym obciążeniu.
  • Szybszy rozwój (time-to-market): Deweloperzy mogą skupić się na logice biznesowej, nie tracąc czasu na zarządzanie infrastrukturą.
  • Automatyczna skalowalność i wysoka dostępność: Platforma sama dba o skalowanie i odporność na awarie.
  • Redukcja złożoności operacyjnej: Mniej zadań związanych z zarządzaniem infrastrukturą.

Wyzwania i ograniczenia serverless

  • Zimny start (Cold start): Pierwsze wywołanie funkcji po okresie bezczynności może trwać dłużej, ponieważ platforma musi zainicjować jej środowisko.
  • Ograniczenia zasobów i czasu wykonania: Funkcje FaaS zazwyczaj mają limity dotyczące czasu wykonania, dostępnej pamięci czy rozmiaru pakietu wdrożeniowego.
  • Złożoność systemów rozproszonych: Debugowanie i monitorowanie aplikacji złożonych z wielu funkcji i usług BaaS może być trudne.
  • Vendor lock-in: Silne uzależnienie od specyficznych usług i mechanizmów danego dostawcy chmury.
  • Zarządzanie stanem: Funkcje FaaS są zazwyczaj bezstanowe, co wymaga stosowania zewnętrznych usług (np. baz danych) do przechowywania stanu.

Przykłady platform FaaS/Serverless

Główni dostawcy chmury oferują swoje platformy serverless: AWS Lambda, Azure Functions, Google Cloud Functions.

Podsumowanie

Serverless computing i FaaS reprezentują kolejny krok w ewolucji chmury obliczeniowej, oferując jeszcze wyższy poziom abstrakcji i efektywności kosztowej. Pozwalają na szybkie budowanie skalowalnych, sterowanych zdarzeniami aplikacji bez konieczności zarządzania serwerami. Choć wiążą się z pewnymi wyzwaniami, stanowią atrakcyjną opcję dla wielu nowoczesnych zastosowań, zwłaszcza mikrousług, przetwarzania danych czy backendów dla aplikacji mobilnych i webowych.


autor

ARDURA Consulting

ARDURA Consulting specjalizuje się w dostarczaniu kompleksowego wsparcia w obszarach: body leasingu, rozwoju oprogramowania, zarządzania licencjami, testowania aplikacji oraz zapewnienia jakości oprogramowania. Nasze elastyczne podejście i doświadczony zespół gwarantują efektywne rozwiązania, które napędzają innowacje i sukces naszych klientów.


ZOBACZ TAKŻE:

Specjaliści IT na żądanie

Specjaliści IT na żądanie to profesjonaliści z branży technologii informacyjnej, którzy są zatrudniani przez organizacje na zasadzie tymczasowej lub projektowej, w celu realizacji określonych zadań lub projektów. Model ten pozwala...

Czytaj więcej...

Specyfikacja techniczna

Specyfikacja techniczna to dokument, który szczegółowo opisuje wymagania techniczne, funkcjonalne i niefunkcjonalne dotyczące systemu lub komponentu oprogramowania. Jest to kluczowy element w procesie wytwarzania oprogramowania, który definiuje, jak system ma...

Czytaj więcej...