AWS Lambda
AWS Lambda
AWS Lambda można opisać jako typ „bezserwerowej funkcji jako usługi” (FaaS). FaaS stanowi jedno z podejść w budowaniu systemów obliczeniowych sterowanych zdarzeniami. Opiera się na funkcjach jako jednostkach rozmieszczenia i wykonania. Bezserwerowe FaaS to typ FaaS, gdzie ani wirtualne maszyny, ani kontenery nie są obecne w modelu programowania i gdzie dostawca zapewnia nieodpłatną i wbudowaną niezawodność.
AWS Lambda - wprowadzenie
AWS Lambda to bezserwerowa (serverless) usługa, dostarczająca obliczenia oparte na funkcjach. Zapewnia logiczną warstwę chmury dla Twojej aplikacji. Funkcje Lambdy mogą zostać wywołane różnego rodzaju zdarzeniami, które mają miejsce w Amazon Web Services lub w usługach zewnętrznych. Umożliwiają one tworzenie reaktywnych systemów sterowanych zdarzeniami. W momencie, gdy istnieje wiele jednoczesnych zdarzeń, na które należy odpowiedzieć, AWS Lambda w prosty sposób równolegle uruchamia więcej kopii funkcji. Funkcje Lambdy skalują precyzyjnie, wraz z wielkością obciążenia, aż do indywidualnego żądania. Stąd prawdopodobieństwo posiadania bezczynnego serwera jest bardzo niskie. Architektury, które wykorzystują funkcje AWS Lambda, zostały zaprojektowane tak, aby zredukować zmarnowaną pojemność.
AWS Lambda uruchamia określony kod. Może to być kod stworzony w jakimkolwiek języku obsługiwanym przez AWS Lambda (Java, Node, js. Python lub C#). Można bez przeszkód przenosić biblioteki, artefakty lub skompilowane natywne pliki binarne, które mogą być uruchamiane w środowisku wykonawczym jako element pakietu kodu funkcji. Można nawet uruchamiać kod napisany w innym języku programowania (PHP, Go, SmallTalk, Ruby, itp.), jeśli tylko zostanie on przygotowany i przywołany z jednego z języków obsługiwanych przez środowisko uruchomieniowe AWS Lambda. Środowisko uruchomieniowe AWS Lambda jest oparte na Amazon Linux AMI.
Dzięki funkcji Lambda można uruchomić kod dla praktycznie każdego typu aplikacji lub usługi backendu. Lambda obsługuje i skaluje kod z wysoką dostępnością. Każda utworzona funkcja Lambdy zawiera kod, który można wykonać, konfigurację definiującą w jaki sposób kod jest wykonywany oraz opcjonalnie jedno lub więcej źródeł zdarzeń, które wykrywają zdarzenia i wywołują funkcję w momencie ich wystąpienia. Przykładowym źródłem zdarzeń jest API Gateway, które może wywołać funkcję Lambdy za każdym razem, gdy metoda API, utworzona z API Gateway, otrzymuje żądanie HTTPS. Innym przykładem jest Amazon SNS, który posiada możliwość wywoływania funkcji Lambda za każdym razem, kiedy nowa wiadomość zostaje opublikowana w temacie SNS.
Dodatkowo AWS Lambda zapewnia również API usługę RESTful, która obejmuje możliwość bezpośredniego wywołania funkcji Lambda. Możesz użyć API do bezpośredniego wykonywania kodu bez konfigurowania innego źródła zdarzeń.
Nie trzeba przy tym pisać żadnego kodu, aby integrować źródło zdarzenia z funkcją AWS Lambda, zarządzać dowolną infrastrukturą, która wykrywa zdarzenia i dostarcza je do funkcji lub zarządzać skalowaniem funkcji AWS Lambda w celu dopasowania jej do liczby dostarczanych zdarzeń. Dzięki temu, możesz skupić się na logice aplikacji i skonfigurować źródła zdarzeń, które powodują uruchomienie logiki.
Schemat działania AWS Lambda:
Zalety AWS Lambda
Do najważniejszych zalet AWS Lambda możemy zaliczyć:
- brak konieczności zarządzania serwerem – nie musisz zaopatrywać ani utrzymywać żadnych serwerów. Nie ma żadnego oprogramowania ani środowiska wykonawczego do zainstalowania, utrzymywania czy zarządzania;
- elastyczne skalowanie – możesz skalować aplikację automatycznie;
- wysoka dostępność – aplikacje bezserwerowe typu AWS Lambda mają wbudowaną dostępność oraz tolerancję błędów. Nie musisz nadzorować tych wydajności, ponieważ usługi, które obsługują aplikację, zapewniają je w sposób domyślny;
- brak niewykorzystanych mocy produkcyjnych – nie musisz płacić za niewykorzystane moce produkcyjne. Nie ma także potrzeby wstępnego planowania, jak i tworzenia rezerwowych bloków pojemnościowych na potrzeby obliczeń czy magazynowania. Nie ma dodatkowej opłaty, jeśli kod nie jest uruchomiony.
Ile właściwie kosztuje AWS Lambda?
Jedną z najważniejszych zalet usługi AWS Lambda jest jej model rozliczeniowy. AWS Lambda działa w modelu Pay-as-you-go. Co to właściwie znaczy? Że płacimy tylko i wyłącznie za to, z czego korzystamy. W tym wypadku chodzi o liczbę żądań funkcji i ich czas trwania, czyli jednostki czasu, w której nasza funkcja jest wykonywana. Co ciekawe, „free tier” AWS Lambda obejmuje 1 mln żądań miesięcznie i 400 000 GB-sekund czasu obliczeniowego miesięcznie. Konkretna cena za czas trwania zależy od ilości pamięci przydzielonej do funkcji. Szczegóły na temat cennika AWS Lambda: https://aws.amazon.com/lambda/pricing/