Відповідь Dawny33 хороша, але я б почав раніше в процесі розробки.
Слідкувати за своїм хмарним оточенням, щоб переконатися, що ваші функції поводяться так, як ви очікували (включаючи ваші "виробничі" функції, які можуть працювати на іншому наборі даних) є вирішальним, оскільки це може виявити речі, які неможливо відтворити локально чи за допомогою тестовий набір даних.
Тим не менш, я б сказав, що це тестування продуктивності, яке ви робите з метою оптимізації, повинно починатися прямо з машини розробника. Або, принаймні, з якогось місцевого оточення, перш ніж натиснути на хмару.
Причиною тому я є те, що хоча AWS Lambdas вражає багато пунктів, той факт, що у вас немає повного контролю на сервері, обмежить ваші інструментальні можливості. Я не кажу, що інструментарій неможливий, коли без сервера, але спробуйте з’ясувати, скільки у вас переривань процесора (а скільки викликано вашим кодом) просто для задоволення;)
Тож, що я раджу, а це насправді не обмежується безсерверним, - це розпочати профілювання рано. Профілювання NodeJS може бути виконано за допомогою багатьох різних інструментів, NewRelic, dynatrace та AppDynamic - одні з великих гравців. Існує також менший плеєр, деякі з них є лише пакетом NPM для встановлення (наприклад, Nodefly). Можна також зробити деякі NodeJS без будь-якого додаткового інструменту, оскільки в двигун V8 є вбудований профілер. Ця документація від NodeJS допоможе вам розпочати роботу.
Який би інструмент ви не вибрали, ви хочете встановити його локально і збирати дані профілювання. Це може включати запуск агента або включення пакета у ваш package.json. Вказівки вашого інструмента підкажуть, як його встановити. Хороший профілер дасть вам знати, скільки пам'яті та процесора ви використовуєте. Кращі інструменти дадуть вам зрозуміти, скільки віддалених дзвінків було здійснено, скільки часу вони зайняли.
Використовуйте дані профілювання, які інструмент дає вам для виявлення вузьких місць та їх усунення. Немає обмежень у тому, скільки профілювання можна зробити. Деякі люди (божевільні?) Роздивляться системні виклики своєї найважливішої функції. Можливо, вам доведеться робити таку річ, якщо ви хочете поголити наносекунди своєї функції (але тоді, можливо, AWS Lambda - не найкращий вибір для початку).
Тут також варто зазначити, що я не згадав нічого специфічного для AWS Lambda. Це тому, що ваші оптимізації, швидше за все, не будуть специфічними для AWS Lambda (зрештою, без сервера ви не повинні турбуватися про сервер / середовище).
Переконайтеся, що не тільки ваш код працює, але і він працює так, як ви очікуєте. Не надмірно оптимізуйте, але пильно стежте за використанням процесора та пам'яті. Чи повинен масив 2 Мб дійсно зростати до 10 МБ, коли ви сортуєте його? Напевно, ні.
Тоді ви зможете скористатися інструментами, згаданими Dawny33, або деякими іншими інструментами, щоб підтвердити, що ваші функції виконують аналогічно під час розгортання в Lambda. Однак у вас вже буде дуже високий рівень впевненості у своїх функціях, і вам потрібно буде лише підтвердити, що вони поводяться належним чином, а не повністю розглядати їх.