encyklopedia.space

Serverless

Serverless (z ang. serverless computing) – model chmury obliczeniowej, w którym dostawca usług zarządza całym środowiskiem uruchomieniowym, a programiści skupiają się wyłącznie na logice aplikacji. W praktyce oznacza to uruchamianie fragmentów kodu (funkcji) w odpowiedzi na zdarzenia, bez konieczności konfigurowania, skalowania ani utrzymywania serwerów.

Historia i rozwój

Początki koncepcji pojawiły się w drugiej dekadzie XXI wieku wraz z rozwojem chmury obliczeniowej. Termin serverless został po raz pierwszy użyty w 2012 r., kiedy firma Amazon Web Services zaprezentowała platformę AWS Lambda, określaną jako „Funkcje jako Usługa” (FaaS). W kolejnych latach do grona wiodących dostawców dołączyły Microsoft Azure (Azure Functions) oraz Google Cloud (Google Cloud Functions). Model serverless stał się kluczowym elementem nowoczesnych architektur mikrousług i DevOps.

Podstawowe zasady

  • Brak stałych zasobów serwerowych – zasoby przydzielane są dynamicznie w momencie wywołania funkcji.
  • Model rozliczeń „pay‑as‑you‑go” – płacimy wyłącznie za rzeczywisty czas wykonania oraz zużyte zasoby (CPU, pamięć, I/O).
  • Skalowalność automatyczna – platforma może uruchomić setki tysięcy równoległych instancji funkcji w odpowiedzi na zwiększone obciążenie.
  • Event‑driven architecture – funkcje są wyzwalane przez zdarzenia, takie jak zmiana w bazie danych, wiadomość w kolejce, żądanie HTTP czy zdarzenie systemowe.

Kluczowe komponenty

Funkcja (Function)
Jednostka kodu, zwykle krótka i jednofunkcyjna, uruchamiana w odpowiedzi na konkretne zdarzenie.
Wyzwalacz (Trigger)
Mechanizm wywołujący funkcję – może to być API, zmiana w przechowywaniu obiektów, wiadomość w kolejce itp.
Środowisko wykonawcze (Runtime)
Warstwa abstrakcji udostępniana przez dostawcę, zawierająca języki programowania (np. Node.js, Python, Java) oraz biblioteki systemowe.
Warstwa infrastruktury (Infrastructure layer)
Wszystkie elementy zarządzane przez dostawcę: serwery, sieci, systemy plików, kontenery (Docker), orkiestracja (Kubernetes) itp.

Główni dostawcy i platformy

Zalety

  • Redukcja kosztów operacyjnych – brak konieczności utrzymywania serwerów i infrastruktury.
  • Szybkość wprowadzania zmian – deweloperzy mogą wdrażać małe fragmenty kodu w ciągu kilku minut.
  • Automatyczna skalowalność – aplikacje rosną i maleją wraz z zapotrzebowaniem, bez ingerencji administratora.
  • Skupienie na logice biznesowej – programiści nie muszą zajmować się konfiguracją środowiska wykonawczego.

Wady i ograniczenia

  • Cold start – opóźnienie pierwszego wywołania funkcji po okresie bezczynności, szczególnie przy dużych pakietach zależności.
  • Limity zasobów – maksymalny rozmiar pakietu, czas wykonywania (np. 15 min w AWS Lambda), dostępna pamięć.
  • Trudności w debugowaniu i monitoringu – wymagają specjalnych narzędzi (AWS X-Ray, Azure Monitor).
  • Vendor lock‑in – różnice w interfejsach API i modelach płatności utrudniają migrację pomiędzy dostawcami.

Typowe scenariusze użycia

  • Przetwarzanie zdarzeń w czasie rzeczywistym (np. przetwarzanie strumieni danych z Kinesis lub Pub/Sub).
  • Tworzenie API backendu (tzw. API‑gateway + functions).
  • Automatyzacja zadań administracyjnych (np. czyszczenie zasobów, generowanie raportów).
  • Obsługa webhooków i integracji z usługami zewnętrznymi.
  • Skalowanie mikroserwisów na żądanie, szczególnie w architekturze event‑driven.

Porównanie z innymi modelami

Cecha Serverless (FaaS) Kontenery (CaaS) Maszyny wirtualne (IaaS)
Model rozliczeń Za wywołanie i czas wykonania Za zasoby przydzielone (CPU, RAM) Za przydzielone zasoby (VM)
Skalowanie Automatyczne, na poziomie funkcji Automatyczne, zwykle przy pomocy Kubernetes Ręczne lub przy pomocy narzędzi automatyzacji
Zarządzanie infrastrukturą Całkowicie przez dostawcę Pośrednie – zarządzanie kontenerami Pełna kontrola nad VM
Granice czasowe Ograniczone (np. 15 min) Brak (do limitu kontenera) Brak (do wyłączania VM)

Przyszłość i trendy

Rozwój edge computing oraz sztucznej inteligencji powoduje, że coraz częściej funkcje serverless są uruchamiane bliżej źródła danych, co zmniejsza opóźnienia. Wdrażane są koncepcje serverless containers (AWS Fargate, Azure Container Instances) łączące zalety kontenerów z modelami pay‑as‑you‑go.

Powiązane pojęcia

Źródła

  1. „Serverless Architectures” – Amazon Web Services (2023).
  2. „Serverless Computing: Economic and Architectural Impact” – Microsoft Azure Blog (2022).
  3. „Function as a Service – Overview” – Google Cloud Documentation (2021).