
Состояние Интернета: Практическое руководство по бессерверным функциям
Что такое бессерверные функции, почему они важны и как они в настоящее время используются для серверного JavaScript?
Бессерверные функции (также известные как функция как услуга) выполняют код без сохранения состояния в облаке. Это означает, что они могут делать такие вещи, как бесконечное масштабирование и запуск в любом месте. Существует множество различных поставщиков бессерверных функций, таких как AWS Lambda, Cloudflare Workers и Vercel.
Предыстория бессерверных функций
Google создал первую бессерверную модель в своем продукте Google App Engine, которая предлагала автоматическое масштабирование выполнения кода без сохранения состояния. App Engine отличался от большинства последних поставщиков бессерверных функций, но это был первый продукт, в котором была реализована эта идея. Однако, хотя он использовался такими компаниями, как Snapchat, он не прижился в сообществе разработчиков в целом.
Первым провайдером функций как услуг (FaaS), который действительно завоевал популярность, был AWS Lambda. AWS Lambda — это бессерверный сервис функций, выпущенный Amazon в ноябре 2014 года. Lambda позволяет функциям, написанным на разных языках, автоматически масштабироваться менее чем за секунду, позволяя пользователям не беспокоиться о базовом оборудовании. Такие компании, как Google, Microsoft и Oracle, также создали свои собственные службы для бессерверных функций. Хотя по сей день Lambda является самым популярным поставщиком бессерверных функций, и с момента своего выпуска он стал быстрее, гибче и проще в использовании.
Однако это не конец истории. С тех пор многие сервисы улучшили модель AWS Lambda в таких аспектах, как простота использования и производительность. Первым заметным провайдером FaaS был Vercel (в то время ZEIT Now), который был выпущен в апреле 2016 года и был намного проще в использовании, чем Lambda. Еще одним преимуществом было то, что он хорошо интегрировался с Next.js, фреймворком React, созданным Vercel. Другие, более новые сервисы, например, Начало, также стараются быть намного проще, хотя Vercel по-прежнему остается самым популярным в этой группе.
Вторым важным нововведением в бессерверных функциях были граничные вычисления с облегченными изолятами. Это было впервые реализовано в Cloudflare Workers, бессерверном продукте, выпущенном в сентябре 2017 года. Он обещал, что ваш код будет работать в любой из множества точек присутствия Cloudflare по всему миру, и он использовал изоляты V8, чтобы сократить время запуска до несколько миллисекунд, а позже и вовсе ноль.
Почему важны бессерверные функции
Производительность
Многие поставщики бессерверных функций предлагают высокоскоростные услуги. Как уже упоминалось ранее, граничные вычисления произвели революцию в бессерверных функциях. Поскольку бессерверные функции не имеют состояния, их не обязательно всегда запускать в одном и том же месте. Это означает, что они могут работать как CDN и автоматически доставлять контент из центров обработки данных, близких к пользователям (периферия), а не из одного централизованного места. Обслуживание с периферии может иметь огромную разницу в задержке для больших сетей, таких как Cloudflare. Не все поставщики бессерверных функций поддерживают это, но их число растет, например, Netlify, Cloudflare Workers, Vercel, AWS [email protected] и другие.
Масштабируемость
В отличие от виртуальных машин, бессерверные функции обычно можно масштабировать от нуля до бесконечности. Это означает, что вы никогда не будете перегружены запросами, и вам не придется тратить деньги на вычислительную мощность, которую вы не используете. Всякий раз, когда пользователи запрашивают конечную точку HTTP, большинство поставщиков бессерверных функций автоматически определяют, есть ли уже запущенные функции, которые могут обработать запрос. Если их нет, создается новая функция. Кроме того, если экземпляры функций ничего не обрабатывают, они автоматически останавливаются. Некоторые службы виртуальных машин и контейнеров также предлагают автоматическое масштабирование, но, поскольку запуск виртуальной машины/контейнера занимает больше времени, он гораздо менее детализирован.
Простота настройки
Бессерверные функции обычно абстрагируются от аппаратного обеспечения (отсюда и бессерверные). Вместо того, чтобы беспокоиться о настройке серверов и операционных систем, провайдер позаботится обо всем. Это не обязательно уникально для бессерверных функций, поскольку контейнеры и виртуальные машины обычно делают то же самое, но с бессерверными функциями вам даже не нужно беспокоиться об операционной системе или программном обеспечении, выполняющем ваш код. Преимущество отказа от управления оборудованием и операционной системой заключается в том, что вы можете приступить к работе намного быстрее и не беспокоиться об этом.
Состояние бессерверных функций
Языковая поддержка
Вы можете использовать практически любой язык с бессерверными функциями. Независимо от того, используете ли вы JavaScript, Go или C, большинство поставщиков бессерверных функций поддерживают их. Однако если вы используете бессерверную функцию на основе V8 (большинство пограничных бессерверных функций делают это), языковая поддержка может быть более ограниченной. Поскольку V8 — это прежде всего движок JavaScript, наиболее поддерживаемым языком является JavaScript. Однако иногда вы хотите использовать языки, которые не поддерживают компиляцию в JavaScript. Решением часто является WebAssembly, переносимый язык, похожий на ассемблер, который большинство современных языков поддерживает в качестве цели компиляции. WebAssembly также имеет другие преимущества, например, то, что он часто может работать быстрее. Для получения дополнительной информации о WebAssembly вы можете посмотреть нашу статью о WebAssembly.
Производственная готовность
Бессерверные функции используются многими различными компаниями и поддерживаются некоторыми из крупнейших имен в веб-хостинге, такими как AWS и Cloudflare. Хотя бессерверные функции несколько новы, они все еще очень готовы к работе.
Бег на грани
Пограничные бессерверные функции по большей части все еще являются экспериментальными. Однако некоторые сервисы проверены в бою, а именно AWS [email protected] и Cloudflare Workers. Эти сервисы существуют уже несколько лет и используются такими компаниями, как NPM и Amazon. Есть и другие более свежие услуги, предлагаемые такими компаниями, как Vercel, Netlify и Fastly.
Заключение
Вот оно! Надеюсь, теперь вы понимаете бессерверные функции, чем они полезны и в каком состоянии они сейчас находятся. Если вам понравилась эта статья, обязательно подпишитесь на рассылку здесь. Я надеюсь, что вы узнали что-то, и спасибо за чтение.
Первоначально опубликовано на https://byteofdev.com 16 января 2022 г.
Больше контента на plainenglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Получите эксклюзивный доступ к возможностям написания и советам в нашем сообществе Discord.