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
- AWS Lambda – pierwsza i najpopularniejsza usługa tego typu, integruje się z szerokim ekosystemem AWS (S3, DynamoDB, API Gateway).
- Azure Functions – platforma Microsoftu, umożliwiająca m.in. integrację z Event Grid i Logic Apps.
- Google Cloud Functions – rozwiązanie od Google, szczególnie silne w ekosystemie Firebase i Pub/Sub.
- IBM Cloud Functions – oparta na otwartym projekcie OpenWhisk.
- Alibaba Cloud Function Compute – popularna w Azji platforma serverless.
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
- Chmura obliczeniowa
- Funkcje jako usługa (FaaS)
- Mikrousługi
- DevOps
- Architektura oprogramowania
- Kontenery
- Docker
- Kubernetes
Źródła
- „Serverless Architectures” – Amazon Web Services (2023).
- „Serverless Computing: Economic and Architectural Impact” – Microsoft Azure Blog (2022).
- „Function as a Service – Overview” – Google Cloud Documentation (2021).