Я относительно новичок в мире серверов, поэтому простите меня, если некоторые из них являются основными (и первый бит текста будет объяснять мне логику, чтобы убедиться, что это не ошибка). Все мои вопросы будут выделены жирным шрифтом, чтобы облегчить вашу помощь:).
Я изучал и преподавал некоторые из технологий AWS, и я заметил в своем мобильном хабе, если вы хотите облачную логику, они позволяют только "автоматическую" настройку функций лямбда. После прочтения и исследования я нашел несколько ресурсов, которые указывают на "безсерверную" архитектуру (которая включает поддержку Lambda). Раньше я понимал, что Elastic Beanstalk был представлен, чтобы помочь значительно упростить управление серверами (особенно для мобильных).
Для мобильных разработчиков есть два варианта (очевидно, больше, но для простоты мы согласны):
- Настройте эластичный beanstalk, который будет иметь как минимум 1 экземпляр, работающий 24/7, и имеет несколько конечных точек для каждого URL
- С помощью API Gateway мы можем легко перенаправить URL-адреса к определенным функциям лямбда. При этом мы можем обрабатывать любые запросы (так же, как настройка приложения Elastic Beanstalk).
Все это заставляет меня думать, что полный бэкэнд Lambda будет полностью возможен и легко создать за небольшую часть стоимости работы сервера, работающего 24 часа в сутки. Это правильно?
Теперь, если предположить, что это правильно, нам нужно определить, действительно ли использование Lambda выгодно для эластичного бобового стебля.
Для простых серверов мы могли бы настроить несколько функций Lambda и назвать это днем (и, вероятно, намного проще и дешевле (по крайней мере для небольших проектов), чем с использованием эластичного beanstalk).
Однако для более сложных серверов с большим количеством URL-адресов и соединений с базой данных все становится интереснее.
Это проблемы, которые я вижу с использованием Lambda в вышеуказанной ситуации.
- Каждый URL-адрес будет иметь API-шлюз API с собственной функцией Lambda. Если какой-либо код или модули используются в нескольких функциях, нам придется копировать и вставлять их в каждую функцию.
- Управление несколькими лямбда-функциями (и шлюзами API) - это просто больше, чем управление единым проектом/репо/независимо от того, что вы хотите называть своим кодом.
- Каждая функция, требующая подключения к БД, должна подключаться к функции (vs, например, имея постоянное соединение в приложении Node.js).
Единственный способ (я мог подумать), чтобы избежать первых двух проблем, - сделать одну надежную функцию, которая действует как отправка (основная функция принимает параметр из шлюза API и определяет, какой файл должен работать в функции Lambda).
Есть ли какие-то важные моменты, которые мне не хватает, чтобы определить, стоит ли использовать лямбда над эластичным бобовым стеком?