Skalowanie i kontrola współbieżności

Serverless Applications with AWS Lambda

Claudio Canales

Senior DevOps Engineer

Skalowanie w jednym obrazku

  • Więcej żądań -> więcej równoległych uruchomień.
  • Każde uruchomienie korzysta ze środowiska wykonawczego.
  • Współbieżność = liczba uruchomień w danej chwili.

Skok popytu -> więcej środowisk

Serverless Applications with AWS Lambda

Czym jest współbieżność?

  • Jedno wywołanie = jedna jednostka pracy.
  • Współbieżność = liczba wywołań działających w danej chwili.
  • Jeśli działa 10 wywołań, współbieżność = 10.

Równoległe wywołania

Serverless Applications with AWS Lambda

Szacowanie wymaganej współbieżności

  • Zasada kciuka: concurrency = rps * duration.
  • Skróć czas wykonania, by obniżyć współbieżność.
  • Stosuj to do bezpiecznego doboru limitów.

Wzór na współbieżność

Serverless Applications with AWS Lambda

Przykład: 50 rps przy 200 ms

  • 200 ms = 0,2 sekundy.
  • 50 * 0,2 = 10 równoległych wykonań.
  • Szybszy kod oznacza mniej równoległych uruchomień.

Przykładowe obliczenie współbieżności

Serverless Applications with AWS Lambda

Limity: pula konta a przydział funkcji

  • Współbieżność jest ograniczona na poziomie konta.
  • Część puli można zarezerwować dla krytycznej funkcji.
  • Pozostałe funkcje dzielą to, co zostało.

Pula współbieżności konta

Serverless Applications with AWS Lambda

Zarezerwowana współbieżność: twardy limit

  • Zawór bezpieczeństwa.
  • Ogranicza równoległą pracę.
  • Po przekroczeniu limitu wywołania są dławione.
  • Nadaktywna funkcja nie wyczerpie całej pojemności.

Limit zarezerwowanej współbieżności

Serverless Applications with AWS Lambda

Dławienie: jak to wygląda?

  • Lambda dławi wywołania po osiągnięciu limitu współbieżności.
  • Wywołujący nie otrzymuje normalnej odpowiedzi.
  • Dławienie widać w monitoringu.

Sygnały dławienia

Serverless Applications with AWS Lambda

Udostępniona współbieżność: ciepła pojemność

  • Pula wstępnie zainicjowanych środowisk.
  • Często ukryta za aliasem.
  • Żądania startują szybciej.

Ciepła pula udostępnionej współbieżności

Serverless Applications with AWS Lambda

Zimny start a udostępniona współbieżność

Zimny start

  • Jednorazowe opóźnienie inicjalizacji.
  • Pierwsze żądanie ponosi koszt konfiguracji.

Udostępniona

  • Inicjalizacja wykonana z wyprzedzeniem.
  • Pierwsze żądanie nie ponosi kosztu konfiguracji.

Oś czasu: zimny start vs udostępniona

Serverless Applications with AWS Lambda

Zarezerwowana vs udostępniona (różne problemy)

  • Zarezerwowana steruje obciążeniem.
  • Udostępniona steruje opóźnieniem startu.
  • Wiele funkcji produkcyjnych korzysta z obu.

Porównanie: zarezerwowana vs udostępniona

Serverless Applications with AWS Lambda

Ochrona systemów poniżej

  • Baza danych obsługuje ograniczoną liczbę połączeń.
  • Limit współbieżności temu zapobiega.
  • Skok ruchu może prowadzić do awarii.

Limit współbieżności chroni bazę danych

Serverless Applications with AWS Lambda

Ruch skokowy a stabilny

  • Skoki tworzą wiele równoległych środowisk.
  • Wolne handlery utrzymują wysoką współbieżność.
  • Limity mogą złagodzić skoki.
  • Skrócenie czasu wykonania to też strategia skalowania.

Ruch skokowy vs stabilny

Serverless Applications with AWS Lambda

Błędy i ponowne próby zwiększają obciążenie

  • Ponowne próby mogą zwielokrotnić ruch.
  • Limity współbieżności ograniczają zasięg awarii.
  • Pętla błędów może przeciążyć zależności.

Ponowne próby mnożą obciążenie

Serverless Applications with AWS Lambda

Prosty proces dostrajania

  • Zacznij od pomiaru.
  • Ustaw limit, gdy pojawi się dławienie lub przeciążenie.
  • Dodaj udostępnioną pojemność, gdy zimne starty zwiększają opóźnienie.

Pomiar -> limit -> podgrzanie

Serverless Applications with AWS Lambda

Najważniejsze wnioski

  • Współbieżność pomaga myśleć o skalowaniu.
  • Szacuj: rps * duration.
  • Zarezerwowana ogranicza obciążenie; obserwuj dławienie.
  • Udostępniona redukuje opóźnienie zimnego startu.

Najważniejsze wnioski o współbieżności

Serverless Applications with AWS Lambda

Czas na praktykę!

Serverless Applications with AWS Lambda

Preparing Video For Download...