Odpowiedź Dawny33 jest dobra, ale chciałbym zacząć wcześniej w procesie programowania.
Śledzenie środowiska chmury w celu upewnienia się, że funkcje zachowują się zgodnie z oczekiwaniami (w tym funkcje „produkcyjne”, które mogą działać na innym zbiorze danych), ma kluczowe znaczenie, ponieważ może ujawnić rzeczy, których nie można odtworzyć lokalnie lub za pomocą zestaw danych testowych.
Niemniej jednak powiedziałbym, że testy wydajności przeprowadzane w celu optymalizacji powinny rozpoczynać się bezpośrednio od komputera programisty. Lub przynajmniej z lokalnego środowiska przed przejściem do chmury.
Mówię tak, ponieważ chociaż AWS Lambdas są niesamowite pod wieloma względami, fakt, że nie masz pełnej kontroli nad serwerem, ograniczy twoje możliwości instrumentacyjne. Nie mówię, że to niemożliwe, gdy oprzyrządowanie w Serverless, ale spróbuj dowiedzieć się, ile masz CPU przerwań (i ile spowodowane są Twoim kodzie) tylko dla zabawy;)
Radzę więc, aby profilowanie rozpocząć wcześnie. Profilowanie NodeJS może być wykonane za pomocą wielu różnych narzędzi, NewRelic, dynatrace i AppDynamic to jedne z największych graczy. Jest też mniejszy odtwarzacz, niektóre z nich to tylko pakiet NPM do zainstalowania (jak Nodefly). Możliwe jest również wykonanie niektórych NodeJS bez dodatkowego narzędzia, ponieważ w silniku V8 jest wbudowany profiler. Ta dokumentacja od NodeJS pomoże Ci zacząć.
Niezależnie od wybranego narzędzia, chcesz je zainstalować lokalnie i gromadzić dane profilowania. Może to obejmować uruchomienie agenta lub dołączenie pakietu do pliku package.json. Instrukcje Twojego narzędzia podpowiedzą, jak je zainstalować. Dobry profiler poinformuje Cię, ile pamięci i procesora używasz. Lepsze narzędzia dadzą ci wgląd w to, ile połączeń zdalnych wykonano i ile czasu to zajęło.
Skorzystaj z danych profilowania dostarczonych przez narzędzie, aby zidentyfikować wąskie gardła i rozwiązać je. Nie ma ograniczeń co do wielkości profilowania. Niektórzy ludzie (szaleni?) Spojrzą na wywołania systemowe swoich najbardziej krytycznych funkcji. Być może będziesz musiał zrobić coś takiego, jeśli chcesz ogolić nanosekundy swojej funkcji (ale może AWS Lambda nie jest najlepszym wyborem na początek).
Warto również zauważyć w tym miejscu, że nie wspominałem nic konkretnego o AWS Lambda. To dlatego, że twoje optymalizacje najprawdopodobniej nie będą specyficzne dla AWS Lambda (w końcu w trybie bez serwera nie powinieneś martwić się o serwer / środowisko).
Upewnij się, że nie tylko Twój kod działa, ale działa tak, jak tego oczekujesz. Nie przesadnie optymalizuj, ale miej krytyczne oko na użycie procesora i pamięci. Czy tablica 2 MB naprawdę powinna wzrosnąć do 10 MB podczas sortowania? Prawdopodobnie nie.
Następnie będziesz mógł użyć narzędzi wymienionych przez Dawny33 lub innych narzędzi, aby potwierdzić, że twoje funkcje działają podobnie po wdrożeniu na Lambda. Będziesz jednak mieć bardzo wysoki poziom zaufania do swojej funkcji i będziesz musiał jedynie zweryfikować, czy zachowują się prawidłowo, a nie w pełni je profilować.