Funkcja jako usługa (FaaS) to kategoria usług przetwarzania w chmurze, która zapewnia platformę umożliwiającą klientom opracowywanie i uruchamianie funkcji aplikacji oraz zarządzanie nimi bez konieczności tworzenia i utrzymywania infrastruktury typowo związanej z tworzeniem i uruchamianiem aplikacji. Ten wzorzec architektoniczny jest powszechnie kojarzony z przetwarzaniem bezserwerowym, gdzie programiści mogą skupić się na pisaniu kodu swojej aplikacji, a dostawca chmury zarządza środowiskiem wykonawczym.
Śledzenie historii i początków funkcji jako usługi (FaaS)
Powstanie funkcji jako usługi (FaaS) jest silnie powiązane z ewolucją przetwarzania w chmurze. Narodziny przetwarzania w chmurze na początku XXI wieku skierowały uwagę na infrastrukturę jako usługę (IaaS) i platformę jako usługę (PaaS). Jednak programiści nadal musieli zarządzać serwerami w obu modelach, choć w mniejszym stopniu w przypadku PaaS.
Przełom nastąpił w 2014 roku, kiedy Amazon Web Services (AWS) wprowadził AWS Lambda jako pierwszą platformę FaaS. Wyeliminowało to potrzebę całkowitego martwienia się programistów o serwery. Lambda umożliwiła programistom uruchomienie kodu w odpowiedzi na zdarzenia, takie jak zmiany danych w zasobniku Amazon S3 lub aktualizacje w tabeli Amazon DynamoDB. Oznaczało to rewolucyjną zmianę w sposobie tworzenia i dostarczania aplikacji.
Bardziej szczegółowe podejście do funkcji jako usługi (FaaS)
FaaS to bezserwerowa metoda wykonywania modułowych fragmentów kodu na krawędzi. Zamiast wdrażać całą aplikację lub usługę, programiści mogą uruchamiać małe fragmenty funkcji, które wykonują jedno, określone zadanie. Funkcje te są „bezstanowe”, ponieważ zostały zaprojektowane tak, aby działały krótko i były wykonywane w środowisku bezstanowym. Dostawca chmury automatycznie zarządza zasobami niezbędnymi do działania i skalowania.
Funkcje są wyzwalane przez zdarzenia, takie jak żądania HTTP, operacje na bazach danych, kolejki, pamięć masowa i tak dalej. Dostawca wykonuje funkcję i zwraca wynik po pomyślnym zakończeniu. Kluczową cechą FaaS jest to, że płacisz tylko za rzeczywisty czas przetwarzania funkcji, a nie za infrastrukturę bazową.
Odkrywanie wewnętrznej struktury i mechanizmu działania FaaS
W modelu FaaS logika aplikacji jest podzielona na osobne funkcje. Są one zarządzane przez podstawową platformę i zazwyczaj są bezstanowe. Po otrzymaniu zdarzenia platforma szybko uruchamia zasoby w celu uruchomienia funkcji, przetwarza zdarzenie, a następnie wyłącza zasoby po zakończeniu przetwarzania.
- Wyzwalacz zdarzenia: Zdarzenie takie jak żądanie HTTP, przesłanie pliku lub operacja na bazie danych wyzwala tę funkcję.
- Inicjalizacja funkcji: Dostawca chmury przygotowuje funkcję do wykonania. Może to obejmować uruchomienie kontenera i załadowanie do niego kodu funkcji.
- Wykonanie: Funkcja jest uruchamiana z dostarczonymi danymi zdarzenia.
- Odpowiedź: Funkcja przetwarza dane zdarzenia i zwraca wynik. W ramach tego przetwarzania może również wchodzić w interakcję z innymi usługami lub bazami danych.
- Zamknięcie: Po zakończeniu działania funkcji dostawca usług w chmurze wyłączy zasoby używane do uruchamiania tej funkcji.
Kluczowe cechy funkcji jako usługi (FaaS)
- Oparte na zdarzeniach: Funkcje są wykonywane w odpowiedzi na zdarzenia lub wyzwalacze.
- Bezpaństwowiec: Funkcje nie przechowują informacji pomiędzy wykonaniami.
- Skalowalne: Dostawca chmury automatycznie zarządza skalowaniem funkcji.
- Krótkotrwały: Oczekuje się, że funkcje będą uruchamiane szybko, będą działać przez krótki czas, a następnie zatrzymają się.
- Płać za użycie: Ceny opierają się na rzeczywistym czasie obliczeń wykorzystywanym przez funkcję.
Różne typy funkcji jako usługi (FaaS)
Chociaż podstawowa koncepcja FaaS pozostaje taka sama, różni dostawcy usług w chmurze oferują nieco inne produkty FaaS. Do najpopularniejszych należą:
Dostawca | Produkt FaaS |
---|---|
AWS | lambda |
Chmura Google | Funkcje chmury |
Microsoft Azure | Funkcje platformy Azure |
IBM-a | Funkcje chmury |
Wyrocznia | Projekt Fn |
Sposoby wykorzystania funkcji jako usługi (FaaS), problemy i rozwiązania
FaaS jest szczególnie przydatny w aplikacjach, które muszą reagować na informacje w czasie rzeczywistym lub sporadyczne żądania. Można go na przykład wykorzystać do przetwarzania plików w czasie rzeczywistym, transformacji danych lub przetwarzania strumienia zdarzeń. Istnieją jednak potencjalne wyzwania związane z limitami czasu wykonania, zarządzaniem stanem, testowaniem i debugowaniem. Rozwiązania obejmują staranne zaprojektowanie kodu funkcji w celu dotrzymania terminów wykonania oraz wykorzystanie dodatkowych usług w chmurze do zarządzania stanem.
Porównanie z podobnymi koncepcjami
Pojęcie | Opis |
---|---|
FaaS | Programiści udostępniają kod funkcji. Platforma automatycznie obsługuje całą infrastrukturę. |
IaaS | Programiści zarządzają aplikacjami, danymi, środowiskiem wykonawczym i oprogramowaniem pośredniczącym. Dostawca obsługuje wirtualizację, serwery, pamięć masową i sieci. |
PaaS | Programiści zarządzają aplikacjami i danymi. Dostawca obsługuje środowisko wykonawcze, oprogramowanie pośrednie, system operacyjny, wirtualizację, serwery, pamięć masową i sieci. |
Perspektywy i technologie przyszłości związane z FaaS
FaaS prawdopodobnie będzie nadal ewoluować wraz z szerszym ekosystemem bezserwerowym. Postęp w przetwarzaniu brzegowym może sprawić, że FaaS stanie się coraz bardziej powszechny na obrzeżach sieci, bliżej źródeł danych. Co więcej, możemy zaobserwować więcej hybrydowych środowisk bezserwerowych, w których FaaS jest używany w połączeniu z innymi modelami obliczeniowymi dla różnych części aplikacji.
Rola serwerów proxy w funkcjonowaniu jako usługa (FaaS)
Serwery proxy mogą odgrywać rolę w FaaS, działając jako pośrednicy dla żądań klientów poszukujących zasobów z innych serwerów. Mogą poprawić wydajność, zapewnić bezpieczeństwo i zachować anonimowość. W kontekście FaaS serwer proxy może służyć do obsługi żądań uruchamiających funkcje, oferując dodatkowe możliwości kontroli, rejestrowania i modyfikacji.