Konfiguracja AWS Lambda na potrzeby produkcji

Wdrażanie aplikacji na AWS

Dunieski Otano

Amazon Web Services Solutions Architect

W testach działało

  • Funkcja przeszła wszystkie testy
  • W środowisku produkcyjnym przekracza limity czasu i ulega throttlingowi
  • Kod był poprawny — problem leżał w konfiguracji

Funkcja serverless, która przeszła testy, ale ma problemy w środowisku produkcyjnym — widoczne pokrętła pamięci i limitu czasu w trakcie dostrajania

Wdrażanie aplikacji na AWS

Kluczowe ustawienia Lambda w produkcji

Logo Lambda pośrodku z czterema polami konfiguracji produkcyjnej: pamięć z pokrętłem skalowania CPU, limit czasu z zegarem, pamięć efemeryczna oraz współbieżność pokazująca równoległe instancje funkcji

  • Pamięć: skaluje też CPU i sieć
  • Limit czasu: maks. czas w sekundach przed wymuszoną obsługą
  • Pamięć efemeryczna: tymczasowe miejsce w /tmp
  • Współbieżność: liczba jednoczesnych uruchomień
Wdrażanie aplikacji na AWS

Dobór pamięci a powiązanie z CPU

  • Więcej pamięci = proporcjonalnie więcej CPU
  • Funkcja intensywna obliczeniowo działa szybciej przy wyższej pamięci
  • Krótszy czas wykonania może oznaczać niższy koszt
  • Dobieraj rozmiar przez testowanie, nie zgadywanie

Wykres pamięci vs. koszt: czas wykonania gwałtownie spada wraz ze wzrostem pamięci, a łączny koszt tworzy krzywą U z zaznaczonym optymalnym punktem w środku

Wdrażanie aplikacji na AWS

Współbieżność: zarezerwowana a aprowizowana


Zarezerwowana współbieżność

  • Ogranicza maksymalną liczbę jednoczesnych wywołań
  • Chroni systemy downstream i inne funkcje

Aprowizowana współbieżność

  • Wstępnie rozgrzewa instancje — eliminuje zimny start
  • Przeznaczona dla funkcji użytkownika wrażliwych na opóźnienia
Wdrażanie aplikacji na AWS

Pakowanie konfiguracji i współdzielenie kodu

  • Zmienne środowiskowe: konfiguracja per środowisko
  • Warstwy: współdzielenie kodu i zależności między funkcjami
  • Rozszerzenia: działają obok funkcji, obsługując narzędzia
  • Trzymaj konfigurację poza pakietem wdrożeniowym

Opcje pakowania Lambda: zmienne środowiskowe przechowujące konfigurację zewnętrzną, warstwy współdzielące wspólne biblioteki między funkcjami oraz rozszerzenia działające obok handlera do monitorowania lub zarządzania sekretami

Wdrażanie aplikacji na AWS

Łączenie Lambda z VPC

Lambda połączona z prywatnym VPC przez ENI w prywatnych podsieciach, z grupą zabezpieczeń kontrolującą ruch wychodzący i bramą NAT zapewniającą dostęp do internetu

  • Podłącz Lambda do prywatnych podsieci, aby korzystać z zasobów wewnętrznych
  • Lambda tworzy ENI w twoim VPC
  • Grupy zabezpieczeń kontrolują dostępne zasoby
  • Dostęp zewnętrzny wymaga bramy NAT lub punktu końcowego VPC
Wdrażanie aplikacji na AWS

Obsługa błędów: destinations i DLQ

  • Wywołania asynchroniczne ponawiane automatycznie po błędzie
  • Lambda Destinations: przekierowuje onSuccess i onFailure
  • Kolejka utraconych wiadomości (DLQ): przechwytuje zdarzenia, które nigdy się nie powiodły
  • Nigdy nie pozwól, by nieudane zdarzenie przepadło bez śladu

Obsługa błędów asynchronicznych Lambda: pętla ponowień prowadząca do Lambda Destinations z gałęziami onSuccess i onFailure oraz kolejka DLQ przechwytująca zdarzenia, które wyczerpały wszystkie próby

Wdrażanie aplikacji na AWS

Czas na praktykę!

Wdrażanie aplikacji na AWS

Preparing Video For Download...