Skip to content
malak.cloud
  • Kontakt
  • O mnie
  • Search Icon

malak.cloud

Cloud Native na co dzień

Jak działa po zmianach funkcja Lambda wewnątrz VPC?

Jak działa po zmianach funkcja Lambda wewnątrz VPC?

5 października 2019

Kilka tygodni temu AWS ogłosił zmiany w pracy funkcji Lambda wewnątrz VPC. Do tej pory umieszczanie funkcji Lambda wewnątrz sieci było, lekko mówiąc, słabym rozwiązaniem. Lambdy uruchamiały się długo, słabo się skalowały. Co się zmieniło w samej implementacji możesz przeczytać na blogu AWS. Ja sprawdziłem jak działa po zmianach funkcja Lambda wewnątrz VPC.

Poprzednio Lambdy testowałem przy okazji konferencji 4Developers. Więcej o tym tutaj. Teraz jednak zrobiłem to trochę inaczej.

Na środowisko 😉 testowe składały się:

  • VPC (3 AZ),
  • funkcji Lambda,
  • Application Load Balancer,
  • maszyna wirtualna do odpalenia testów obciążeniowych.

Testy obciążeniowe przeprowadzałem za pomocą artillery. Nie było to nic wysublimowanego, akcja była następująca:

artillery quick --count 1000 -n 10 http://loadbalancer.com

W skrócie, 1000 wirtualnych użytkowników wysyłało po 10 requestów do load balancera, a ten oczywiście wywoływał funkcję Lambda.

Sama Lambda była także bardzo prosta. W zasadzie nie robiła nic. Zapisywała do logów unikalny id dla każdej instancji funkcji, oraz zwracała prosty html.

Dodatkowo przetestowałem także jej działanie z dodanym wewnątrz funkcji jej uśpieniem na 0,5 sekundy.

Za każdym razem wywoływałem więc Lambdę 10000 razy. Każdy test był powtórzony 3 razy. W sumie wykonałem 6 testów:

  • Lambda bez VPC, bez opóźnienia,
  • Lambda bez VPC, z opóźnieniem 0,5s,
  • Lambda wewnątrz VPC, bez opóźnienia (3 availability zony),
  • Lambda wewnątrz VPC, z opóźnieniem 0,5s (3 availability zony),
  • Lambda wewnątrz VPC, bez opóźnienia (1 availability zona),
  • Lambda wewnątrz VPC, z opóźnieniem 0,5s (1 availability zona).

Nie przedłużając, wyniki:

TestCzas wykonania [s]Ilość utworzonych instancji funkcji
bez VPC1063
bez VPC - 0,5s28446
VPC (3AZ)2144
VPC (3AZ) - 0,5s27441
VPC (1AZ)2182
VPC (1AZ) - 0,5s28442

Poprzednie testy wykonałem trochę inaczej, funkcja była wywoływana za pomocą kolejki SQS. Nie można więc bezpośrednio porównać wyników. Ale jest duuuuużo lepiej 🙂 Nie trzeba już będzie rezygnować z Lambdy, np. na rzecz kontenerów, w przypadku konieczności uruchamiania Lambdy w VPC. A nieraz trzeba to robić.

Zostawiam Was, wyciągnijcie wnioski. Zróbcie swoje testy.

Ja lecę pisać maile do klientów. Będą zmiany w architekturach.


AWS
AWS, serverless

Post navigation

PREVIOUS
Jak mikroserwisy dockerowe dogadują się w AWS
NEXT
Cloudyna 2019
Comments are closed.
Cześć. Nazywam się Przemek Malak. Dzięki za wizytę. Mam nadzieję, że to o czym piszę Cię zainteresowało. Jeżeli chcesz ze mną pogadać, najłatwiej będzie przez LinkedIn.

Losowe wpisy

  • Serverless API – Jak postawić API bez serwera

    13 sierpnia 2017
  • AWS Lambda – nowy edytor

    1 grudnia 2017
  • Step Functions i obsługa błędów

    22 października 2022
  • Czyścimy Dockera

    12 sierpnia 2017
  • Jak wykryć aktywność roota na koncie AWS

    5 kwietnia 2021
  • Apps
  • AWS
  • CloudNative
  • Cookbook
  • Data
  • DEV
  • GCP
  • IoT
  • Istio
  • k8s
  • Security
  • Social
  • GitHub
  • LinkedIn
© 2023   All Rights Reserved.