Каковы плюсы и минусы наличия одной лямбда-функции с «меньшими функциями» по сравнению с несколькими функциями - PullRequest
0 голосов
/ 15 июня 2019

У меня есть лямбда-функция с 10 «меньшими функциями» внутри той единственной лямбды, к которой получают доступ через конечные точки шлюза 10 API.

Каковы плюсы и минусы проектирования бэкэнда таким образом?Я знаю, что сложнее управлять всеми этими функциями при тестировании, но как бы он сравнился по скорости с 10 отдельными лямбда-функциями?

exports.handler =  (event) => {

    const path = event.path;
    const method = event.httpMethod;

    if(path === '/getmail' && method === 'GET'){
        return mailQuery(event);
    }

   if(path === '/getmessagethread' && method === 'GET'){
        return getMessageThread(event);
    }

   if(path === '/replytomessage' && method === 'POST'){
        return replyToMessage(event);
    }

    if(path === '/sendmessage' && method === 'POST'){
        return sendMessage(event);
    }

    . . .
};

1 Ответ

2 голосов
/ 15 июня 2019

я делаю все, что вам удобно, и это лучше всего подходит для варианта использования. Вот только мои 2 цента по этому вопросу, хотя:

Плюсы :

  • Нужно управлять только одной функцией и ее кодом
  • Это может быть проще протестировать, чем использовать SAM Local , поскольку мы можем иметь несколько объектов событий для тестирования с

Минусы :

  • Если несколько запросов поступают в зарезервированный параллелизм этой функции (если он есть), это может быть исчерпано, поскольку только одна функция обслуживает все эти запросы
  • Максимальное время ожидания шлюза API составляет 30 секунд, поэтому, если эта функция выполняется дольше из-за этого дополнительного кода, запрос не будет выполнен
  • Может также увеличить размер пакета развертывания, который Lambda имеет следующий предел https://docs.aws.amazon.com/lambda/latest/dg/limits.html

    50 МБ (в архиве, для прямой загрузки) 250 МБ (разархивировано, включая слои) 3 МБ (редактор консоли)

Speedwise Я не думаю, что это будет иметь большое значение. Я не верю, что было бы много различий во времени выполнения, если бы была вызвана функция, в отличие от наличия кода непосредственно в функции-обработчике.

НТН

-Джеймс

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...