Lambda, флагманский бессерверный сервис AWS, позволяет запускать код в различных средах выполнения. Однако PHP явно не указан в официальном описании продукта. Означает ли это, что вы не можете запускать PHP-код на Lambdas? Нет, это не так!
В этой серии (взято из доклада, который я провел для группы пользователей AWS в Пуатье) мы обсудим, что такое бессерверное управление и как заставить PHP (если это ваш любимый язык) работать на Lambda.
Бессерверный хостинг — это парадигма хостинга, при которой облачный провайдер динамически масштабирует ресурсы, выделенные для рабочей нагрузки клиента, управляя при этом не только физической инфраструктурой (серверы, электроохлаждение), но и средой выполнения (исправления и т. д.).
В строгом смысле вычислительные ресурсы выделяются для каждого запроса, что приводит к модели ценообразования «масштабируемого к нулю» (никакие ресурсы не оплачиваются по часам, а только пропорционально фактическому спросу), обеспечивая при этом встроенную высокую -доступность.
Это добавляет к другим преимуществам облака, в первую очередь, тот факт, что все поставляется с API, что делает возможной автоматизацию.
Совокупность этих преимуществ позволяет создавать практически бесплатные эфемерные среды с функциональными ветвями, повышая производительность разработчиков и сокращая время выполнения заказов.
В бессерверной экосистеме существует множество решений. Когда в 2014 году появились бессерверные вычисления (Lambda), управляемые очереди (SQS) существовали уже десять лет, а S3 — восемь лет.
Обратите внимание, что на слайде выше Aurora не соответствует нашему строгому определению бессерверной технологии, поскольку она не масштабируется до нуля (версия 1 масштабируется до нуля, но запуск может занять несколько минут, а для версии 2 вам необходимо иметь не менее 0,5 ACU на экземплярах записи и чтения, чтобы база данных была готова обслуживать запросы.
Ниже вы найдете типичную архитектуру для размещения веб-приложения, включающую только бессерверные службы. Хостинг такого приложения может стоить менее 1 доллара в год для ограниченного числа пользователей.
Да.. и нет. Он был разработан с учетом микросервисов, но вы все равно можете развернуть монолитную архитектуру (если у вас нет длительной последовательности запуска каждый раз при запуске новой среды).
Архитектура микросервисов позволяет уменьшить связь между компонентами приложений (с использованием разных языков, с помощью асинхронных шаблонов, улучшения масштабируемости за счет устранения связи на уровне инфраструктуры).
Однако, если у нас есть несколько одноцелевых функций, реализация бизнес-логики может потребовать координации между функциями. Эту координацию можно реализовать с помощью двух фундаментальных паттернов.
Lambda — это решение AWS «Функция как услуга». С помощью Lambda вы можете развернуть свой код и получить мгновенную высокую доступность и масштабируемость, не беспокоясь о развертывании экземпляров и исправлении ОС или среды выполнения.
Lambda может использоваться с синхронными вызовами (через шлюз API, балансировщик нагрузки приложения или URL-адрес функции Lambda) или асинхронными вызовами (в ответ на события, генерируемые AWS или пользователем).
При развертывании Lambda вы выбираете, сколько памяти ей нужно для работы. Выделенный процессор пропорционален. Затем вы платите в зависимости от количества использованных миллисекунд. Например, Lambda объемом 128 МБ стоит 1,7*10^-9$/мс. Это 164 часа вычислений, прежде чем вы потратите свой первый доллар.
И лямбда-шкалы. Быстрый. Гораздо быстрее, чем что-либо еще. Больше никаких ошибок 429 (или 500, если ваша рабочая нагрузка недостаточно защищена) из-за сильного изменения трафика.
Среды выполнения Lambda обрабатывают только один запрос в определенный момент времени и повторно используются для последующих запросов. Это означает, что для масштабирования функции Lambda или если функция Lambda не вызывалась какое-то время, Lambda придется запустить новую среду выполнения: это холодный старт.
Если холодный запуск вреден для вашего приложения (опять же, это, вероятно, лучше, чем если весь трафик будет медленным или попадет в 429), то есть несколько вариантов. У AWS есть хорошая статья об использовании подогревателей Lambda или настройке параллелизма для решения этой проблемы. В дополнение к этому, для пользователей Java функции Lambda SnapStart позволяют обеспечить хорошую производительность при холодном запуске путем создания моментальных снимков microVM после инициализации JVM.
Официальный FAQ по продукту гласит, что он «встроенно поддерживает код Java, Go, PowerShell, Node.js, C#, Python и Ruby и предоставляет API среды выполнения, который позволяет использовать любые дополнительные языки программирования для создания функций».
В следующих сообщениях этой серии мы объясним, как можно запускать PHP на Lambda, используя две разные платформы: Bref и Lambda Web Adaptor, и сравним возможности, предлагаемые каждой из них.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3