Как безсерверные архитектуры управляют соединениями с базой данных?

10

Говорят, что основным преимуществом бессерверной архитектуры является то, что таким программам не требуется выделенный сервер для непрерывной работы. Затем вызываются по запросу и останавливаются при выходе из функции.

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

зарегистрированный пользователь
источник

Ответы:

9

Поскольку безсерверное приложение не сохраняет состояния между запусками, оно не может поддерживать пул соединений с базой данных. Безсерверные приложения действительно сталкиваются с теми же ограничениями, что и сценарии CGI 90-х годов. В общем случае процесс постоянного сервера сможет превзойти архитектуру «процесс на запрос» или «контейнер на запрос», поскольку сервер выполняет инициализацию один раз, а не один раз за запрос.

Бессерверные программы не очень подходят для чувствительных к задержкам задач, таких как обслуживание веб-сайта. Они лучше подходят для спорадических фоновых задач, которые вы не хотите запускать на своем главном сервере, без необходимости вручную управлять и балансировать нагрузку на дополнительные серверы приложений. Они также могут подходить, если производительность разработчика гораздо важнее, чем ответы с низкой задержкой.

Амон
источник
Отличные баллы. Я бы также предположил, что одним из главных преимуществ, которое приводит людей к безсерверности, является стоимость. Если вы платите провайдеру (например, Amazon), основываясь только на количестве запросов, и не платите за работу бездействующего сервера, вы сэкономите деньги, особенно на этапе запуска.
Пол
2
@Paul Основным преимуществом без сервера является удобство (PaaS против IaaS). Безопасное администрирование сервера - это набор навыков, которого нет у большинства разработчиков (включая меня). Я уверен, что есть некоторые сценарии, когда без сервера заметно дешевле. Но виртуальные частные серверы начинаются с 5 долл. / Мес., Что очень конкурентоспособно, мягко говоря. Особенно учитывая, что VPS имеет гораздо меньше ограничений, что позволяет запускать произвольное программное обеспечение и постоянные службы. Это сравнение яблока с апельсинами. В одной модели вы платите за незанятый сервер, в другой вы платите за повторное время запуска.
Амон
4

Это зависит.

Закулисная реализация лямбда-бегуна повлияет на это. Мы видим, что в AWS контейнер может быть использован повторно.

http://docs.aws.amazon.com/lambda/latest/dg/lambda-introduction.html

Таким образом, мы могли видеть пул / повторное использование соединения по крайней мере для некоторых запросов. Также нам следует рассмотреть саму базу данных и то, как она обрабатывает входящие запросы на соединение.

Этот вопрос для меня подчеркивает некоторые проблемы, связанные с «безсерверным», он все еще очень новый и незрелый, поэтому детали не проработаны.

Мы всегда должны помнить, что отсутствие сервера не означает отсутствие серверов. Если скорость, с которой вы вызываете лямбду, достаточно высока, у вас может быть несколько запущенных серверов или «контейнеров».

На практике время запуска и ресурсы, такие как IP-адреса лямбд, могут быть реальной проблемой. Возможно, когда они созреют, появится консенсус о том, как их запустить, и эти проблемы получат твердые ответы.

Ewan
источник