W 2022 r. wartość rynku obliczeń bezserwerowych przekroczyła 9 mln USD i przewiduje się, że w ciągu następnej dekady wzrośnie o kolejne 25%. Ta technologia radykalnie zmienia podejście do tworzenia i wdrażania różnych usług i aplikacji, umożliwiając skupienie się na tym, co najważniejsze — tworzeniu innowacyjnych rozwiązań, a nie zarządzaniu infrastrukturą IT.
Czym jest przetwarzanie bezserwerowe?
Przetwarzanie bezserwerowe to model obliczeniowy, który umożliwia programistom pisanie i wdrażanie kodu bez konieczności zarządzania serwerami. Pomimo swojej nazwy, serwery są nadal wykorzystywane, jednak zarządzanie nimi w całości przejmuje dostawca chmury.
Przetwarzanie bezserwerowe i przetwarzanie w chmurze są ze sobą powiązane, ale różnią się podejściem do wykorzystania zasobów w nowoczesnych systemach IT.
Przetwarzanie w chmurze obejmuje wszystkie usługi dostarczane poprzez chmurę, w tym infrastrukturę jako usługę (IaaS), platformę jako usługę (PaaS) i oprogramowanie jako usługę (SaaS). W chmurze obliczeniowej można zarządzać infrastrukturą, konfigurować maszyny wirtualne, sieci, bazy danych itp. Poziom kontroli nad infrastrukturą zależy od rodzaju modelu chmurowego: od pełnego zarządzania zasobami (IaaS) po całkowity brak potrzeby zajmowania się infrastrukturą (SaaS).
Przetwarzanie bezserwerowe to specjalistyczny model chmury obliczeniowej, w którym użytkownik nie zarządza ani nie widzi infrastruktury. Skupia się na tworzeniu i wykonywaniu funkcji (skryptów), a zarządzanie serwerami, skalowanie oraz inne zadania związane z infrastrukturą są w pełni zautomatyzowane i obsługiwane przez dostawcę chmury. Opłaty naliczane są tylko za zasoby obliczeniowe rzeczywiście wykorzystane podczas wykonywania funkcji, co pozwala uniknąć kosztów związanych z nadmiarowymi zasobami, czyniąc ten model ekonomicznie efektywnym.
Głównym celem przetwarzania bezserwerowego jest uwolnienie programistów od konieczności zarządzania serwerami.
Jak powstało przetwarzanie bezserwerowe
Na początku ery programowania tworzenie aplikacji wymagało zakupu serwera, jego utrzymania i aktualizacji. Był to kosztowny i skomplikowany proces, który wkrótce został uproszczony dzięki technologiom chmurowym. Obecnie można wynająć niezbędną ilość zasobów obliczeniowych na potrzeby projektu.
Jednak programiści korzystający z zasobów chmurowych często zamawiają je w nadmiarze, aby uwzględnić możliwy ruch i szczyty aktywności, co może wpływać na wydajność aplikacji i programów. Często prowadzi to do sytuacji, w której opłacone zasoby nie są w pełni wykorzystywane.
Architektura bezserwerowa pozwala programistom kupować jedynie te usługi zaplecza, które są im potrzebne, i to tylko wtedy, gdy ich potrzebują.
Kluczowe cechy przetwarzania bezserwerowego
- Funkcja — fragment kodu zaprojektowany do realizacji konkretnego zadania, takiego jak przesyłanie plików, przetwarzanie żądań HTTP czy inne operacje. Każda funkcja jest niezależna od pozostałych i działa w odpowiedzi na określone zdarzenie.
- Wywołanie — czynność polegająca na uruchomieniu funkcji w celu wykonania określonego działania, co można również rozumieć jako uruchomienie jej kodu w odpowiedzi na zdarzenie.
- Czas wykonania — czas potrzebny na realizację funkcji, mierzony od momentu jej wywołania do zwrócenia odpowiedzi.
- Zimny start — czas, który platforma bezserwerowa potrzebuje na przydzielenie zasobów przy wywołaniu funkcji, zanim rozpocznie się jej wykonanie.
- Limit współbieżności — maksymalna liczba instancji funkcji, które mogą działać jednocześnie w odpowiedzi na zdarzenia i żądania.
- Limit czasu — maksymalny dopuszczalny czas wykonania funkcji przed jej zakończeniem przez platformę bezserwerową.
Jak działa architektura bezserwerowa
Programiści mogą tworzyć aplikacje bezserwerowe, korzystając z jednego z dwóch modeli: backend jako usługa (BaaS) lub funkcja jako usługa (FaaS).
Backend jako usługa (BaaS). Model ten jest powszechnie używany do budowy zapleczy dla aplikacji webowych i mobilnych. Programiści nie muszą kodować wewnętrznych funkcji, takich jak bazy danych, uwierzytelnianie użytkowników, przechowywanie danych itp., co przyspiesza proces tworzenia aplikacji i pozwala skupić się na warstwie frontendowej. Do popularnych usług BaaS należą Firebase, SupaBase i AWS Amplify.
Funkcja jako usługa (FaaS). Programiści piszą kod, który jest wykonywany przez platformę, bez konieczności martwienia się o zarządzanie zasobami obliczeniowymi i ich skalowanie. Dzięki temu możliwe jest uruchamianie funkcji w odpowiedzi na określone zdarzenia. Dostawcami usług FaaS są m.in. Amazon Web Services (AWS Lambda), Microsoft Azure (Azure Functions) oraz Google Cloud.
Zalety przetwarzania bezserwerowego
- Obniżenie kosztów. Architektura bezserwerowa eliminuje potrzebę posiadania drogiej infrastruktury chmurowej i sprzętu do jej obsługi. Klienci płacą za zasoby tylko wtedy, gdy ich potrzebują, co gwarantuje, że nie ponoszą wysokich opłat licencyjnych za usługi, z których nie korzystają.
- Uproszczenie skalowalności. Programiści nie muszą martwić się o zasady skalowania ich kodu. Za wszystkie aspekty skalowania na żądanie odpowiada architektura bezserwerowa dostawcy chmury.
- Uproszczenie kodu wewnętrznego. Użytkownicy korzystają z uproszczonego kodu, który wykonuje jedną funkcję, taką jak wywoływanie API.
- Skrócenie czasu wprowadzenia produktu na rynek. Tradycyjny rozwój aplikacji wiązał się z czasochłonnymi procesami, które obejmowały naprawę błędów i zapewnienie bezpieczeństwa nowych funkcji. Bezserwerowy model rozwoju skraca liczbę kroków potrzebnych do tworzenia, wdrażania i testowania kodu, umożliwiając programistom szybkie wprowadzanie zmian w czasie rzeczywistym. Dzięki temu czas potrzebny na przejście od koncepcji do uruchomienia aplikacji może skrócić się z miesięcy do kilku dni.
- Zwiększenie bezpieczeństwa. Przetwarzanie bezserwerowe wymusza na programistach korzystanie z kodu działającego w określonym kontekście, co zwiększa prawdopodobieństwo tworzenia kodu zgodnego z najlepszymi praktykami organizacji oraz wymaganiami dotyczącymi bezpieczeństwa i zarządzania.
Gdzie stosuje się przetwarzanie bezserwerowe
Strony internetowe i API
Aplikacje tworzone w oparciu o infrastrukturę bezserwerową, która automatycznie dopasowuje skalowanie do zmieniających się potrzeb użytkowników, oferują im lepsze doświadczenia.
Chatboty
Programiści mogą wdrażać chatboty do odpowiadania na zapytania klientów przy użyciu architektury bezserwerowej, płacąc jedynie za zasoby, które są faktycznie wykorzystywane przez chatbota. Na przykład Slack wykorzystuje ją do obsługi różnych zapytań do swoich botów, co pozwala uniknąć nieefektywnego wykorzystania przepustowości spowodowanego codziennymi zmianami w zapotrzebowaniu klientów.
IoT
Coca-Cola wykorzystuje architekturę bezserwerową w swoich automatach Freestyle, umożliwiając klientom zamawianie napojów, dokonywanie płatności oraz otrzymywanie powiadomień o transakcjach. Firma podaje, że przed wdrożeniem przetwarzania bezserwerowego roczne koszty utrzymania automatów wynosiły około 13 tysięcy USD. Po przejściu na przetwarzanie bezserwerowe koszty spadły do 4500 USD rocznie.
Przetwarzanie danych
Firma Major League Baseball Advanced Media stworzyła produkt Statcast, który dostarcza użytkownikom dokładne statystyki sportowe w czasie rzeczywistym, wykorzystując architekturę bezserwerową do przetwarzania danych i przekazywania informacji o meczach baseballowych.
Podsumowanie
Przetwarzanie bezserwerowe ma przed sobą dynamiczny rozwój. Przewiduje się, że technologia ta stanie się jeszcze bardziej wszechstronna, bezpieczna i zintegrowana z różnymi aspektami przetwarzania w chmurze oraz rozwoju oprogramowania. Przetwarzanie bezserwerowe może stać się standardem dla wielu typów aplikacji, szczególnie przy nieprzewidywalnych obciążeniach, które wymagają elastyczności, skalowalności oraz optymalizacji kosztów.
Wcześniej omówiliśmy, czym jest przetwarzanie neuromorficzne i czy może ono zmienić sposób przetwarzania informacji.