Использовать слои или вызвать другую лямбду? - PullRequest
0 голосов
/ 28 февраля 2019

У меня есть модуль, который поддерживает экземпляр подключения к серверу Redis:

const getClient = (() => {
    let client;
    return () => {
        if (!client) client = clientFactory(); // lazy loading of the redis client
        return client;
    }
})();

И этот модуль предназначен для развертывания в AWS Lambda.Согласно рекомендациям , клиент redis в приведенном выше закрытии никогда не будет уничтожен вручную в пользу повторного использования контекста и будет автоматически уничтожен при уничтожении экземпляра лямбда-вызова.

Теперьпроблема в том, что у меня есть некоторые другие модули, которые также будут развернуты в лямбда-выражениях в качестве отдельных лямбда-функций, и мне потребуется использовать клиентский модуль redis.Должен ли я установить модуль redis в качестве слоя многократного использования или я должен развернуть модуль как еще одну отдельную функцию и напрямую вызвать функцию из вызывающих модулей?

Обеспокоенность по поводу использования слоя: будет выполнено создание экземпляра подключения redisдля каждого отдельного вызывающего модуля, что не годится для повторного использования контекста.

Обеспокоенность по поводу вызова другой лямбда-функции: издержки сети.

Как я понимаю, вызов между двумя лямбда-функциями вызывает вызывающую функцию.Запрос API к вызываемому абоненту, создающий дополнительную нагрузку на сеть.Так будет ли это иметь значение больше, чем плохое повторное использование контекста?

...