Funkcje AWS Lambda skalują teraz 12 razy szybciej przy obsłudze żądań o dużej objętości

20 lutego 2024

Teraz AWS Lambda skaluje się nawet 12 razy szybciej.

Każda synchronicznie wywoływana funkcja Lambda skaluje się teraz o 1000 współbieżnych uruchomień co 10 sekund, aż łączna współbieżność wszystkich funkcji osiągnie limit współbieżności konta. Ponadto każda funkcja na koncie skaluje się teraz niezależnie od siebie, niezależnie od sposobu wywołania funkcji. Te ulepszenia są dostępne bez dodatkowych kosztów i nie musisz przeprowadzać żadnej konfiguracji istniejących funkcji.

Tworzenie skalowalnych i wydajnych aplikacji może być wyzwaniem w przypadku tradycyjnych architektur i często wymagać nadmiernego udostępnienia zasobów obliczeniowych lub złożonych rozwiązań buforowania w przypadku szczytowych wymagań i nieprzewidywalnego ruchu. Wielu programistów wybiera Lambda, ponieważ skaluje się na żądanie, gdy aplikacje napotykają nieprzewidywalny ruch.

Przed tą aktualizacją funkcje Lambda mogły początkowo skalować się na poziomie konta poprzez 500 –3 000 równoczesnych uruchomień (w zależności od regionu) w ciągu pierwszej minuty, a następnie 500 równoczesnych uruchomień co minutę, aż do osiągnięcia limitu współbieżności konta. Ze względu na to, że ten limit skalowania był współdzielony pomiędzy wszystkimi funkcjami na tym samym koncie i w tym samym regionie, jeśli w jednej z funkcji nastąpił wzrost ruchu, mogło to mieć wpływ na przepustowość innych funkcji na tym samym koncie. Zwiększyło to wysiłki inżynierów mające na celu monitorowanie kilku funkcji, które mogłyby przekroczyć limity konta, wywołując „noisy neighbor scenario” i zmniejszając ogólną współbieżność innych funkcji na tym samym koncie.

Teraz, dzięki tym ulepszeniom skalowania, klienci obserwujący bardzo zmienny ruch mogą osiągać cele współbieżności znacznie szybciej niż do tej pory. Na przykład witryna z wiadomościami publikująca najświeższe wiadomości lub sklep internetowy prowadzący wyprzedaż błyskawiczną odnotuje znaczny napływ odwiedzających. Dzięki tym ulepszeniom można je teraz skalować 12 razy szybciej niż wcześniej.

Ponadto klienci korzystający z usług takich jak Amazon Athena i Amazon Redshift z scalar Lambda-based UDFs w celu wzbogacania lub przekształcania danych, odczują korzyści z tych ulepszeń. Usługi te polegają na grupowaniu danych i przekazywaniu ich „w kawałkach” do Lambdy, jednocześnie wywołując wiele równoległych funkcji. Ulepszone zachowanie skalowania współbieżności zapewnia, że Lambda może szybko skalować i spełniać wymagania umowy dotyczącej poziomu usług (SLA).

Jak to działa w praktyce?

Poniższy wykres przedstawia funkcję odbierającą żądania i przetwarzającą je co 10 sekund. Limit współbieżności konta jest ustawiony na 7000 jednoczesnych żądań i jest współdzielony pomiędzy wszystkimi funkcjami tego samego konta. Szybkość skalowania każdej funkcji jest ustalona na 1000 równoczesnych wykonań co 10 sekund. Ta stawka jest niezależna od innych funkcji na tym samym koncie, dzięki czemu łatwiej jest przewidzieć, w jaki sposób ta funkcja będzie skalować i ograniczać żądania, jeśli zajdzie taka potrzeba.

  • 09:00:00 – Funkcja działa już od jakiegoś czasu i jest już przetwarzanych 1000 równoczesnych uruchomień.
  • 09:00:10 – Dziesięć sekund później następuje nowa seria 1000 nowych żądań. Ta funkcja może je przetworzyć bez problemu, ponieważ może skalować do 1000 równoczesnych uruchomień co 10 sekund.
  • 09:00:20 – To samo dzieje się tutaj: tysiąc nowych żądań.
  • 09:00:30 – Funkcja otrzymuje teraz 1500 nowych żądań. Ze względu na to, że maksymalna pojemność skalowania funkcji wynosi 1000 żądań na 10 sekund, 500 z tych żądań zostanie ograniczonych.
  • 09:01:00 – W tej chwili funkcja przetwarza już 4500 jednoczesnych żądań. Ale nastąpiła seria 3000 nowych żądań. Lambda przetwarza 1000 nowych żądań i ogranicza 2000, ponieważ funkcja może skalować do 1000 żądań co 10 sekund.
  • 09:01:10 – Po 10 sekundach następuje kolejna seria 2000 żądań, a funkcja może teraz przetworzyć jeszcze 1000 żądań. Jednak pozostałe 1000 żądań jest ograniczanych, ponieważ funkcja może skalować do 1000 żądań co 10 sekund.
  • 09:01:20 – Teraz funkcja przetwarza 6500 jednoczesnych żądań i istnieje 1000 żądań przychodzących. Pierwsze 500 z tych żądań zostaje przetworzonych, ale pozostałe 500 zostaje ograniczone, ponieważ funkcja osiągnęła limit współbieżności konta wynoszący 7000 żądań. Warto pamiętać, że limit współbieżności konta możesz zwiększyć, tworząc zgłoszenie do pomocy technicznej w Konsoli AWS Management Console.

Funkcje AWS Lambda skalują teraz 12 razy szybciej przy obsłudze żądań o dużej objętościW przypadku posiadania na koncie więcej niż jednej funkcji, funkcje skalują się niezależnie, aż do osiągnięcia całkowitego limitu współbieżności konta. Następnie wszystkie nowe wywołania zostaną ograniczone.

Dostępność

Omawiane ulepszenia skalowania będą domyślnie włączone dla wszystkich funkcji. Począwszy od 26 listopada do połowy grudnia, AWS stopniowo wprowadza ulepszenia skalowania we wszystkich regionach AWS z wyjątkiem regionów Chin i GovCloud.

Jeśli chcesz dowiedzieć się więcej o nowym zachowaniu skalowania Lambdy, zapoznaj się z dokumentacją.

źródło: AWS

 

Case Studies
Referencje

Jesteśmy ogromnie zadowoleni ze współpracy z firmą Hostersi. Ich specjaliści doradzili nam rozwiązanie, które dało nam stabilną, skalowalną infrastrukturę, która umożliwia obsłużenie ciągle rosnącego ruchu związanego z COVID-19

Jakub Sperczyński
Prezes Zarządu EduNect
W skrócie o nas
Specjalizujemy się w dostarczaniu rozwiązań IT w obszarach projektowania infrastruktury serwerowej, wdrażania chmury obliczeniowej, opieki administracyjnej i bezpieczeństwa danych.