Говорят, что основным преимуществом бессерверной архитектуры является то, что таким программам не требуется выделенный сервер для непрерывной работы. Затем вызываются по запросу и останавливаются при выходе из функции.
Это означает, что безсерверная программа должна быстро запускаться, чтобы быть отзывчивой. Как тогда он обрабатывает трудоемкие действия, такие как соединение с базой данных? Он подключается к базе данных каждый раз или управляет подключением к базе данных отдельно для вызова функций, как это делается в серверных приложениях?
источник
Это зависит.
Закулисная реализация лямбда-бегуна повлияет на это. Мы видим, что в AWS контейнер может быть использован повторно.
http://docs.aws.amazon.com/lambda/latest/dg/lambda-introduction.html
Таким образом, мы могли видеть пул / повторное использование соединения по крайней мере для некоторых запросов. Также нам следует рассмотреть саму базу данных и то, как она обрабатывает входящие запросы на соединение.
Этот вопрос для меня подчеркивает некоторые проблемы, связанные с «безсерверным», он все еще очень новый и незрелый, поэтому детали не проработаны.
Мы всегда должны помнить, что отсутствие сервера не означает отсутствие серверов. Если скорость, с которой вы вызываете лямбду, достаточно высока, у вас может быть несколько запущенных серверов или «контейнеров».
На практике время запуска и ресурсы, такие как IP-адреса лямбд, могут быть реальной проблемой. Возможно, когда они созреют, появится консенсус о том, как их запустить, и эти проблемы получат твердые ответы.
источник