Komputery bezserwerowe
Co to jest AWS Lambda?
Co to jest AWS Lambda?
AWS Lambda to usługa bezserwerowa (serverless computing), która umożliwia programistom uruchamianie kodu w odpowiedzi na zdarzenia – a wszystko to bez konieczności zarządzania serwerami, co czyni ją ważnym elementem współczesnej architektury serverless. AWS oferuje ponad 220 natywnych integracji oprócz innych swoich usług. Lambda działa poprzez wykonywanie kodu w środowisku obliczeniowym i zarządza wszystkimi aspektami zasobów obliczeniowych, takimi jak zarządzanie serwerami, system operacyjny, moc obliczeniowa, skalowanie i logowanie.
Ta platforma dostosowuje swoją odpowiedź w oparciu o liczbę zdarzeń, co potencjalnie wpływa na wdrażanie aplikacji, wykorzystanie zasobów i skalowanie. Lambda świetnie nadaje się do krótkotrwałej i elastycznej pracy, ale najlepiej nadaje się do krótkich okresów lub zadań z prostymi potrzebami zasobów lub czasu wykonywania.
Jakie są korzyści z korzystania z AWS Lambda?
AWS Lambda oferuje szereg korzyści, ale może być lepszym rozwiązaniem dla niektórych konkretnych aplikacji. Zalety te mogą wpływać na jakość kodu, skalowalność i wydajność, co może również przekładać się na produktywność programistów.
- Zarządzanie infrastrukturą: Lambda ogranicza potrzebę bezpośredniego zarządzania serwerami, co oznacza, że upraszcza środowisko operacyjne i nie wymaga specjalistycznej wiedzy z zakresu infrastruktury.
- Elastyczność: Dostępność wielu języków i środowisk uruchomieniowych w usłudze Lambda przemawia do programistów i odpowiada sposobowi, w jaki budują oni swoje aplikacje.
- Adaptacyjna infrastruktura: Ponieważ Lambda korzysta ze środowiska bezserwerowego, jej funkcje skalują się automatycznie, aby dopasować się do bieżącego obciążenia.
- Opcja płatności za żądanie: Opłaty zależą od dwóch czynników: łącznej liczby żądań oraz czasu wykonania i są naliczane z dokładnością do milisekundy.
- Prostota operacyjna: Automatyczne skalowanie i funkcje samozarządzania w usłudze Lambda ułatwiają zadania operacyjne, eliminując ręczną konfigurację i konserwację serwerów. Wymagają one jednak wstępnej konfiguracji.
- Niestandardowa logika i usługi zaplecza: Lambda umożliwia tworzenie lub modyfikowanie usług backendowych przy użyciu niestandardowej logiki, przy jednoczesnym korzystaniu z infrastruktury, bezpieczeństwa i wydajności AWS.
- Podobne narzędzia i procesy: Lambda integruje kontenery, obrazy i artefakty bezserwerowe używane przez programistów.
Jakie są główne przypadki użycia AWS Lambda?
Głównymi przypadkami użycia AWS Lambda są przetwarzanie danych oparte na zdarzeniach, przetwarzanie plików, zaplecza (back-end) aplikacji internetowych i mobilnych oraz automatyzacja zadań:
- Przetwarzanie danych oparte na zdarzeniach: Usługa Lambda jest połączona z ponad 220 usługami AWS, dzięki czemu kod może być uruchamiany w odpowiedzi na określone zdarzenia. Można to porównać do przetwarzania przychodzących rekordów w locie na potrzeby potoków ETL.
- Przetwarzanie plików w czasie rzeczywistym: Lambda może automatycznie uruchamiać zadania przetwarzania plików, gdy pliki są aktualizowane lub przesyłane.
- Usługi zaplecza dla aplikacji internetowych i mobilnych: Tworzenie interfejsów API, które skutecznie się skalują bez konieczności zarządzania serwerami, za pomocą funkcji Lambda.
- Automatyzacja zadań: Wysyłanie wiadomości e-mail, zapisywanie logów i harmonogramowanie zdarzeń mogą być w pełni zautomatyzowane, aby wyeliminować powtarzalną pracę.
Jakie są ograniczenia AWS Lambda?
Podczas pracy z AWS Lambda głównymi kwestiami, o których należy pamiętać, są zasoby środowiska uruchomieniowego, limit czasu wykonania oraz rozmiar pakietu wdrożeniowego. Ograniczenia te mogą wpływać na to, jakie aplikacje są odpowiednie dla usługi Lambda, i mogą wymagać innych podejść do takich obciążeń. Należy pamiętać o tych ograniczeniach, aby funkcje Lambda działały optymalnie w środowisku AWS.
- Zasoby środowiska wykonawczego: Funkcje Lambda mają wbudowane ograniczenia dotyczące zasobów dostępnych dla środowiska uruchomieniowego funkcji. Dostępna jest konfigurowalna, tymczasowa pamięć masowa /tmp o pojemności od 512 MB do 10 240 MB (AWS) oraz maksymalny przydział pamięci wynoszący 10 240 MB (AWS). Aby zapewnić wydajne działanie, Lambda nakłada ograniczenia zasobów, które wpływają na typy funkcji odpowiednich dla jej środowiska.
- Limit czasu wykonania: Należy pamiętać, że funkcje Lambda mają górny limit 15 minut czasu przetwarzania. To ograniczenie staje się bardziej istotne w przypadku procesów lub zadań wymagających dłuższego przetwarzania. Jeśli Twoja aplikacja wymaga takich operacji, być może będziesz musiał znaleźć inne sposoby ich wykonania lub podzielić proces na mniejsze, bardziej zarządzalne funkcje Lambda w oparciu o czas.
- Rozmiar pakietu wdrożeniowego: Domyślnie bezpośrednie przesyłanie skompresowanego (zip) pakietu wdrożeniowego funkcji Lambda jest ograniczone do 50 MB. Rozmiar pakietów wdrożeniowych staje się kluczową kwestią, szczególnie w przypadku aplikacji z licznymi zależnościami lub złożonym kodem. Aby poradzić sobie z tym ograniczeniem, konieczne może być znalezienie kreatywnych rozwiązań; jednym z nich jest użycie obrazów kontenerów lub podzielenie aplikacji na mniejsze, łatwiejsze do wdrożenia części funkcjonalne.
Oto te informacje uporządkowane w przejrzystej, łatwej do odczytania tabeli:
| Typ ograniczenia | Ograniczenie | Wpływ na rozwój |
| Środowisko wykonawcze (Miejsce na dysku) | Od 512 MB do 10 240 MB (tymczasowa) | Ogranicza tymczasową pojemność pamięci masowej dla operacji wykonawczych i przetwarzania plików |
| Środowisko wykonawcze (Przydział pamięci) | Maksymalnie 10 240 MB | Ogranicza operacje wymagające dużej ilości zasobów i zadania przetwarzania dużych ilości danych |
| Parametry wykonania (Czas przetwarzania) | Maksymalnie 15 minut | Wymaga podzielenia długotrwałych procesów na mniejsze funkcje |
| Parametry wykonania (Współbieżne wykonania) | Różni się w zależności od regionu i konta | Może wymagać mechanizmów dławienia (throttling) lub kolejkowania |
| Szczegóły wdrożenia (Rozmiar pakietu) | 50 MB w formacie zip (bezpośrednie przesłanie) | Wymaga optymalizacji zależności i struktury kodu |
| Szczegóły wdrożenia (Obrazy kontenerów) | Maksymalny rozmiar 10 GB | Wymaga efektywnego zarządzania obrazami kontenerów i ich optymalizacji |
Czego możemy się spodziewać w przyszłości po AWS Lambda?
Rozwój AWS Lambda może być napędzany połączeniem potrzeb klientów i ewoluujących technologii.
Obecnie funkcja Lambda Destinations obsługuje trasowanie dla rekordów wywołań asynchronicznych. (Przewodnik programisty Lambda). Nowszym trendem, na który warto zwrócić uwagę, są funkcje trwałe (durable functions), zaprojektowane do obsługi złożonych, wieloetapowych aplikacji i przepływów pracy AI działających nawet przez rok. (przewodnik po funkcjach trwałych).
Rozwój AWS Lambda wydaje się wskazywać na odgrywanie znaczącej roli w architekturze bezserwerowej, choć dokładny kierunek jego przyszłej ewolucji nie jest jeszcze jasny.
Wniosek
AWS Lambda to usługa obliczeniowa typu serverless, która jest przetwarzanie w chmurzei zapewnia użytkownikom możliwość uruchamiania kodu bez konieczności kontrolowania serwerów.
Oznacza to zminimalizowanie zarządzania infrastrukturą, wysoki poziom elastyczności, dostępności i skalowalności, opłacalność, łatwość działania oraz możliwość tworzenia niestandardowej logiki i usług zaplecza.
Jednak wykorzystanie zasobów środowiska uruchomieniowego, czas wykonywania oraz rozmiar pakietu wdrożeniowego to narzucone ograniczenia, które – jeśli zostaną dostosowane do najlepszych praktyk – mogą pomóc w budowaniu wydajnych, niezawodnych i bezpiecznych obliczeń Lambda.