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

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

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.

Comments are closed.