Przetwarzanie bezserwerowe (ang. serverless computing, pot. serverless) – model przetwarzania w chmurze obliczeniowej, w którym uruchamia się kod bez konieczości samodzielnego konfigurowania i utrzymywania serwerów. W tym modelu dostawca chmury przejmuje większość zadań operacyjnych związanych z infrastrukturą (m.in. przydział zasobów, skalowanie, utrzymanie środowiska uruchomieniowego), a użytkownik koncentruje się na logice aplikacji i konfiguracji wyzwalaczy zdarzeń. Nazwa jest skrótem myślowym: serwery nadal istnieją, lecz są „ukryte” za abstrakcją usługową, a odpowiedzialność za ich zarządzanie jest w większym stopniu przeniesiona na dostawcę chmury. Charakterystyka Do często wskazywanych cech przetwarzania bezserwerowego należą: uruchamianie kodu „na żądanie”, zwykle w reakcji na zdarzenia (np. żądanie HTTP, komunikat z kolejki, zmiana danych w magazynie); automatyczne skalowanie liczby uruchomień/instancji wykonawczych zależnie od obciążenia (w tym możliwość zejścia do zera instancji w okresach braku ruchu w części platform i frameworków); opłaty są naliczane za faktyczne użycie (najczęściej za czas wykonania i/lub liczbę wywołań), a nie za stałe, ciągle zarezerwowane zasoby; ograniczenia środowiska uruchomieniowego (m.in. limity czasu wykonania, pamięci, połączeń sieciowych, rozmiaru pakietu, zasady bezpieczeństwa); typowa bezstanowość jednostek wykonawczych i przeniesienie stanu do zewnętrznych usług (bazy danych, magazyny obiektowe, kolejki).

Modele usług W literaturze i praktyce przetwarzanie bezserwerowe bywa opisywane jako połączenie dwóch klas usług: FaaS (Function as a Service) – uruchamianie krótkotrwałych funkcji wyzwalanych zdarzeniami, które stanowią podstawową jednostkę wdrożenia i skalowania. BaaS (Backend as a Service) – zarządzane usługi zaplecza (np. magazyny danych, uwierzytelnianie, komunikacja), wykorzystywane przez funkcje i inne komponenty aplikacji.

Architektura i działanie Typowa architektura obejmuje: źródła zdarzeń (np. brama API, system publikacji/subskrypcji, kolejka komunikatów, harmonogram zadań), warstwę uruchomieniową (runtime) do wykonywania funkcji, usługi pomocnicze do przechowywania stanu i integracji (bazy danych, magazyny obiektowe, cache, systemy kolejkowe). W takim podejściu funkcje są zwykle krótkotrwałe i wywoływane na podstawie reguł (triggers), a platforma automatycznie zarządza rozmieszczeniem i skalowaniem wykonania.

Historia Współczesne platformy bezserwerowe rozwinęły się w ekosystemie usług chmurowych w połowie lat 2010.: w listopadzie 2014 ogłoszono usługę AWS Lambda jako jedną z pierwszych szeroko dostępnych ofert FaaS dużego dostawcy chmury; W marcu 2016 ogłoszono publiczną wersję zapoznawczą Azure Functions, a w listopadzie 2016 – udostępnienie usługi w wersji ogólnodostępnej; W marcu 2017 ogłoszono publiczną betę , a w sierpniu 2018 – ogólną dostępność usługi. Równolegle powstawały rozwiązania open source i implementacje dostawców oparte na projektach otwartych (np. ).

Zastosowania W praktyce przetwarzanie bezserwerowe jest stosowane m.in. do: implementacji prostych usług i endpointów API (np. zaplecze dla aplikacji mobilnych i internetowych), przetwarzania zdarzeń i integracji systemów (event processing, automatyzacje), zadań wsadowych i okresowych (harmonogramowane joby), przetwarzania danych (ETL, strumienie zdarzeń) i obsługi IoT.

Ograniczenia i wyzwania Wskazywane w literaturze ograniczenia obejmują m.in.: opóźnienia startu (cold start) i zmienność wydajności w zależności od sposobu inicjalizacji środowiska uruchomieniowego, trudności w budowie aplikacji stanowych i długotrwałych procesów (konieczność utrzymywania stanu poza funkcją), obserwowalność i diagnostykę w systemach rozproszonych (logowanie, śledzenie żądań, korelacja zdarzeń), ryzyko uzależnienia od dostawcy (vendor lock-in) wynikające z użycia specyficznych usług i mechanizmów integracji.

Zobacz też Chmura obliczeniowa Platforma jako usługa (PaaS)

Przypisy

Kategoria:Chmura obliczeniowa Kategoria:Architektura oprogramowania Kategoria:Obliczenia rozproszone