Czym jest funkcja bezserwerowa?
Published: 2024-02-07 13:46:44

Definiowanie funkcji bezserwerowych
-----------------------------------

Funkcje bezserwerowe to jednofunkcyjne funkcje programistyczne, które są hostowane w zarządzanej infrastrukturze przez [firmy zajmujące się przetwarzaniem w chmurze](https://www.pubnub.com/solutions/enterprise-software/). Funkcje te są wywoływane przez Internet i mają na celu automatyzację przepływów pracy, zmniejszenie opóźnień i zapewnienie możliwości obliczeniowych na żądanie. Te bezserwerowe architektury są utrzymywane przez zespoły inżynierów, aby zapewnić niemal doskonały czas działania, nadmiarowe instancje na całym świecie i skalowalność do dowolnego przychodzącego wolumenu żądań sieciowych.

**Kto tworzy funkcje bezserwerowe?**
------------------------------------

Funkcje bezserwerowe są tworzone przez programistów, którzy przenoszą kod swoich produktów na platformy bezserwerowe, aby wykorzystać zalety obliczeń bezserwerowych. To nie same firmy zajmujące się przetwarzaniem w chmurze tworzą te funkcje; to ich klienci.

**Jakie są zalety funkcji i usług bezserwerowych?**
---------------------------------------------------

Funkcje i usługi bezserwerowe oferują liczne korzyści, w tym lepsze utrzymanie kodu, opłacalny hosting i spokój ducha wynikający z uruchamiania ich w zarządzanej infrastrukturze. Ten paradygmat szybko staje się popularny ze względu na te korzyści, a wdrażanie nowego kodu jest **szybsze, prostsze i łatwe do zautomatyzowania**.

### **Jaki jest przykład funkcji serverless?**

Wszyscy główni dostawcy usług w chmurze oferują funkcje serverless:

-   [PubNub Functions](https://www.pubnub.com/docs/serverless/functions/overview)
    
-   Google Cloud Functions
    
-   AWS Lambda
    
-   Azure Functions
    

**Infrastruktura bezserwerowa: Architektura monolityczna a architektura mikrousługowa**
---------------------------------------------------------------------------------------

Funkcje bezserwerowe można uznać za mikrousługi, popularną koncepcję w środowisku bezserwerowym. Społeczność programistów jest coraz bardziej podekscytowana przejściem od platform monolitycznych do hermetyzowanych mikrousług.

Dlaczego firmy korzystają z funkcji i architektur serverless?
-------------------------------------------------------------

W przeszłości monolity miały duże, ujednolicone bazy kodu, które wymagały pełnego wdrożenia całej platformy w przypadku każdej wysyłki nowego kodu. Obejmuje to nowe funkcje, ale także poprawki pojedynczych błędów.

Monolity mogą być praktyczne w niektórych sytuacjach, ale gdy baza kodu platformy rozrasta się do etapu, w którym zespół programistów jest duży, niektóre zadania stają się uciążliwe.

Architektura mikrousług poprawia łatwość utrzymania baz kodu i zwiększa ogólne doświadczenie programistów w zespołach programistycznych. Mikrousługi umożliwiają dużej organizacji inżynieryjnej podział na luźno powiązane, autonomiczne zespoły. Każdy zespół może skupić swoją uwagę na kilku mikrousługach, które działają niezależnie od reszty platformy. Należy pamiętać, że chociaż mikrousługi mogą być utrzymywane nieco niezależnie, nadal są graczami w zjednoczonym zespole.

Dzięki architekturze mikrousług nowi programiści mogą być szybko wdrażani do projektów inżynieryjnych, ponieważ nie muszą dogłębnie rozumieć całego monolitu, aby zacząć wnosić znaczący wkład. Kolejną zaletą mikrousług jest to, że wdrażanie niewielkich aktualizacji kodu w pojedynczych usługach skutkuje niewielkimi lub żadnymi przestojami dla klientów. Gdy monolit wymaga aktualizacji kodu, może to oznaczać, że wszyscy klienci doświadczają przestojów na czas trwania funkcji wdrażania bezserwerowego.

![](https://www.pubnub.com/cdn/3prze68gbwl1/asset-17suaysk1qa1jko/0d543200d97bf5ea3eb3d71a4ba3037e/monolith-microservices.png)

**Funkcje bezserwerowe i funkcje jako usługa (FaaS)**
-----------------------------------------------------

Magiczne elementy funkcji bezserwerowych to automatyczne skalowanie i redundantne wdrażanie kodu. Oznacza to, że twórca aplikacji może zająć się jedną rzeczą: pisaniem świetnego kodu aplikacji. Dostawcy hostingu w chmurze nazywają ten produkt Functions-as-a-Service, w skrócie [FaaS](https://www.pubnub.com/learn/glossary/what-is-serverless-compute/).

W przypadku konwencjonalnego hostingu aplikacji, twórcy oprogramowania muszą wielokrotnie zadawać sobie te pytania podczas pisania kodu:

-   Czy moje serwery będą reagować na wszystkie żądania klientów, z bardzo małymi opóźnieniami, niezależnie od fizycznej lokalizacji każdego klienta?
    
-   Czy tworzę miejsce na błąd ludzki w moim procesie wdrażania kodu?
    
-   Czy moje serwery poradzą sobie z nagłym wzrostem liczby żądań bez przeciążenia?
    
-   Czy moje serwery są w stanie obsłużyć nagły wzrost liczby żądań bez marnowania dużej ilości pieniędzy?
    
-   Czy muszę stale monitorować infrastrukturę mojej aplikacji? Z pewnością lubię spać 8 godzin na dobę.
    

**Te pytania nie mają zastosowania, gdy system oprogramowania jest zbudowany na platformie z funkcjami bezserwerowymi**.

Kod funkcji bezserwerowych powinien mieć całkowicie bezstanową logikę, więc nadmiarowe instancje nie będą powodować niespójności dla klientów. Dostawcy hostingu w chmurze mają zazwyczaj wiele punktów obecności na całym świecie. Oznacza to, że serwery, na których działa aplikacja, znajdują się najbliżej wszystkich możliwych użytkowników końcowych. Dostawca hostingu w chmurze redundantnie wdroży funkcję bezserwerową w centrach danych na całym świecie w tym samym czasie. Jest to korzystne dla klientów dewelopera, ponieważ ich żądania po stronie klienta będą odpowiadane z jak najmniejszym opóźnieniem. Cała logika sieciowa jest implementowana przez dostawcę chmury.

**Google i AWS Serverless Functions z platformami hostingowymi w chmurze**
--------------------------------------------------------------------------

Dostawcy hostingu w chmurze, którzy oferują Serverless Functions, stosują najlepsze praktyki branżowe w zakresie automatycznego wdrażania kodu. Oznacza to, że nie ma szansy na błąd ludzki, który zepsułby usługę podczas wdrażania i pozwala na szybką wysyłkę nowego kodu, z niewielkim lub żadnym przestojem dla produktu internetowego.

Jedną z najcenniejszych cech hostingu funkcji bezserwerowych jest automatyczne skalowanie po wyjęciu z pudełka. Dostawcy hostingu w chmurze sprawili, że koszty bezczynnych serwerów stały się dla ich klientów przeszłością. Dzięki oprogramowaniu takiemu jak Kubernetes, usługi mogą programowo skalować swoją infrastrukturę w sposób zautomatyzowany. Ten nowy rodzaj "elastycznej" infrastruktury sprawia, że hosting jest bardziej wydajny, co skutkuje dużymi oszczędnościami kosztów dla firm, które kupują hosting w chmurze.

**Dostawcy FaaS i przykłady funkcji bezserwerowych**
----------------------------------------------------

Firmy hostingowe w chmurze oferują najnowocześniejsze platformy FaaS. Koszty serwerów spadają dla konsumentów na całym świecie, ponieważ duże firmy technologiczne budują coraz więcej farm serwerów. Jednak nie wszystkie usługi FaaS są sobie równe. Platformy FaaS nie są jak firma telefoniczna. Każda platforma ma unikalne scenariusze, w których się sprawdza.

### **Funkcje bezserwerowe AWS Lambda**

AWS[Lambda](https://aws.amazon.com/lambda/) to środowisko funkcji bezserwerowych w Amazon Web Services. Obsługiwane języki programowania to Java, Go, PowerShell, Node.js, C#, Python, Ruby, Rust i PHP. Idealnie nadaje się do operacji obliczeniowych na żądanie, takich jak przetwarzanie plików.

### **Funkcje bezserwerowe usługi Azure Functions**

[Azure](https://docs.microsoft.com/en-us/azure/azure-functions/functions-overview) Functions to środowisko funkcji bezserwerowych na platformie Microsoft Azure. Obsługiwane języki programowania to C#, F#, Java, Python, JavaScript i TypeScript. Idealnie nadaje się do tworzenia interfejsów API jednego celu w celu dodania funkcjonalności do platformy, takich jak zapewnienie punktu końcowego do bezpiecznego przechowywania danych aplikacji.

### **Google Cloud Serverless Functions**

Google Cloud[Functions](https://cloud.google.com/functions/) to środowisko funkcji bezserwerowych na Google Cloud Platform. Obsługiwane języki programowania to JavaScript, Python, Go, .NET (C#), Ruby i PHP. Google Cloud Functions zapewnia bezserwerowe obliczenia, które w zwięzły sposób współdziałają z innymi usługami Google Cloud i aplikacjami klienckimi. Jest to idealne rozwiązanie dla scenariuszy, w których przetwarzanie danych jest kluczowe - takich jak pobieranie odpowiednich danych z obrazów i filmów.

### **Funkcje**

[Functions](https://www.pubnub.com/products/functions/) to bezserwerowe środowisko do wykonywania funkcji na brzegu sieci, przekształcania, wzbogacania i filtrowania wiadomości podczas ich przesyłania przez sieć PubNub przy użyciu JavaScript. Ta bezserwerowa platforma różni się zasadniczo od innych, ponieważ obsługa zdarzeń funkcji jest wykonywana w odpowiedzi na zdarzenie z PubNub, na przykład gdy wiadomość jest publikowana za pomocą [Pub/Sub API Pub](https://www.pubnub.com/docs/serverless/functions/overview)Nub.

Deweloper może wykonać kod na wiadomości PubNub w tranzycie po jej opublikowaniu, ale zanim wiadomość dotrze do subskrybenta. Istnieją inne konfiguracje wykonania, w tym nieblokujące po opublikowaniu i punkt końcowy interfejsu API REST, do którego można uzyskać dostęp jak do serwera Node.js. Stanem można zarządzać za pomocą wbudowanego [KV-Store](https://www.pubnub.com/docs/serverless/functions/functions-apis/kvstore-module) w środowisku funkcji. W [PubNub Functions Catalog](https://www.pubnub.com/integrations/) znajduje się również katalog integracji open source innych firm.

**Którego dostawcy bezserwerowego powinienem użyć dla mojej usługi?**
---------------------------------------------------------------------

Odpowiedź na to pytanie zależy od rodzaju usługi, którą należy zbudować. Jak widać na przykładzie dostawców opisanych powyżej, istnieją różne języki programowania, które można wykorzystać w zależności od chmury. Najważniejszą rzeczą do rozważenia przy wyborze dostawcy jest: które atrybuty są krytyczne dla mojej usługi?

Największe firmy chmurowe (AWS, Azure, Google) oferują skalowalne i opłacalne bezserwerowe rozwiązania obliczeniowe zaprojektowane z myślą o szerokiej gamie przypadków użycia z ich ogólnymi produktami chmurowymi. Te bezserwerowe platformy upraszczają zarządzanie infrastrukturą i zapewniają skalowalność aplikacji na żądanie. Jednak firmy takie jak PubNub specjalizują się w rozwiązywaniu konkretnych problemów deweloperów, szczególnie w przypadkach użycia w czasie rzeczywistym. Dzięki unikalnemu środowisku bezserwerowemu, PubNub przewyższa ogólne produkty bezserwerowe wyłącznie w scenariuszach czasu rzeczywistego.

Bezserwerowe funkcje PubNub oferują niewiarygodnie niskie opóźnienia, dzięki czemu idealnie nadają się do aplikacji czasu rzeczywistego, takich jak czat, śledzenie lokalizacji GPS, sygnalizacja IoT, gry wieloosobowe i inne. Funkcje te, które automatyzują wykonywanie kodu aplikacji w odpowiedzi na zdarzenia, są łatwe do zbudowania i wdrożenia, skracając tym samym czas wprowadzenia produktu na rynek. Co więcej, PubNub obsługuje teraz JavaScript i TypeScript do tworzenia funkcji, oferując programistom większą elastyczność.

Jeśli przypadki użycia obejmują ciężkie obliczenia, wymagają języków wymagających dostępu do systemu operacyjnego i nie są wrażliwe na opóźnienia, bardziej odpowiednie mogą być obszerne oferty bezserwerowe dużych firm hostingowych w chmurze, takich jak AWS, Azure i Google. Dostawcy ci obsługują szeroką gamę języków programowania, w tym między innymi Node.js, Python, Java, Rust, PHP, .NET (C#), Ruby i inne.

Aby uzyskać kompleksowe porównanie PubNub Functions i AWS Lambda, zapoznaj się z naszym [wpisem na blogu](https://www.pubnub.com/blog/comparing-pubnub-functions-vs-aws-lambda-functions/), który zawiera szczegółowe informacje na temat wyboru odpowiedniego dostawcy usług serverless dla Twojej firmy.

Warto również zauważyć, że jeśli chodzi o aplikacje serverless, bezpieczeństwo jest kluczowym aspektem, który należy wziąć pod uwagę. Zapewniamy, że środowisko bezserwerowe PubNub nadaje priorytet bezpieczeństwu danych, oferując solidne mechanizmy uwierzytelniania i bezpieczne punkty końcowe API w celu ochrony danych.

Podsumowując, niezależnie od tego, czy jesteś startupem poszukującym opłacalnego rozwiązania bezserwerowego, czy też [przedsiębiorstwem o ugruntowanej pozycji](https://www.pubnub.com/Solutions/Enterprise/), które chce wykorzystać moc architektury bezserwerowej do aplikacji o znaczeniu krytycznym, zrozumienie mocnych stron i możliwości różnych dostawców usług bezserwerowych może pomóc w podjęciu świadomej decyzji.

Jak PubNub może ci pomóc?
=========================

Ten artykuł został pierwotnie opublikowany na [PubNub.com](https://www.pubnub.com/blog/what-is-a-serverless-function/)

Nasza platforma pomaga programistom tworzyć, dostarczać i zarządzać interaktywnością w czasie rzeczywistym dla aplikacji internetowych, aplikacji mobilnych i urządzeń IoT.

Fundamentem naszej platformy jest największa w branży i najbardziej skalowalna sieć przesyłania wiadomości w czasie rzeczywistym. Dzięki ponad 15 punktom obecności na całym świecie obsługującym 800 milionów aktywnych użytkowników miesięcznie i niezawodności na poziomie 99,999%, nigdy nie będziesz musiał martwić się o przestoje, limity współbieżności lub jakiekolwiek opóźnienia spowodowane skokami ruchu.

Poznaj PubNub
-------------

Sprawdź [Live Tour](https://www.pubnub.com/tour/introduction/), aby zrozumieć podstawowe koncepcje każdej aplikacji opartej na PubNub w mniej niż 5 minut.

Rozpocznij konfigurację
-----------------------

Załóż [konto](https://admin.pubnub.com/signup/) PubNub, aby uzyskać natychmiastowy i bezpłatny dostęp do kluczy PubNub.

Rozpocznij
----------

[Dokumenty](https://www.pubnub.com/docs) PubNub pozwolą Ci rozpocząć pracę, niezależnie od przypadku użycia lub [zestawu SDK](https://www.pubnub.com/docs).