Облачные вычисления в различных воплощениях — SaaS, PaaS, IaaS — добились больших успехов. Некоторые из нас до сих пор вспоминают покупку Heroku провайдера PaaS за 212 миллионов долларов в 2010 году , которая в то время была — с точки зрения архитектуры — чуть больше, чем уровень развертывания высокого уровня. У него был очень роскошный продукт для плавного и простого развертывания приложений и сред, таких как приложения RoR, Python или Node, работающих в инфраструктуре Amazon. Концепция безсерверных вычислений родился.
С тех пор появилось множество различных моделей облачных продуктов. Различные эксперименты приходили и уходили, когда провайдеры ищут «сладкое пятно» с продолжающимся распространением и новыми терминами, такими как BaaS и MBaaS.
Protocol Labs, крипто-стартап, стремящийся переопределить облачную модель, собрал 257 миллионов долларов в ICO 2017 года, побив все рекорды. Airtable, с его продуктами высокого уровня, таблицами и базами данных и API , достиг оценки в 1,1 млрд. Долл. США в раунде финансирования 2018 года .
Бессерверные вычисления
Бессерверные вычисления — это подмножество «облачных» вычислений, которое лишает смысла отказ от классического серверного продукта, предоставляя разработчикам высокоуровневую среду для выполнения их кода, оплачивая их по мере использования, и освобождая разработчиков от беспокойства о базовый программный стек.
Бессерверные вычисления позволили повысить гибкость при оплате используемой вычислительной мощности, а не платить за заранее выделенные пакеты, как в классическом облаке.
Термин «безсерверный» семантически неверен, поскольку код по-прежнему выполняется на сервере, но концептуально пользователям больше не нужно иметь дело с серверами. При условии соблюдения определенных соглашений базовый стек и все проблемы инфраструктуры и развертывания решаются поставщиками.
Основным типом продукта, который вытекает из этого, является FaaS — облачная среда выполнения или среда выполнения, которая позволяет развертывать код без всякой шаблонной информации. Лямбда Amazon , Oracle Fn и Alibaba Function Compute — вот некоторые примеры.
Cloudflare
Cloudflare — компания из Сан-Франциско, основанная девять лет назад. Это сеть доставки контента, которая обеспечивает доставку статических ресурсов для веб-сайтов из глобальной сети пограничных узлов . Он также обеспечивает брандмауэр и защиту от DDOS, и имеет репутацию самой быстрой службы DNS в Интернете.
Говоря об Cloudflare и о том, что он приносит на арену бессерверных вычислений, необходимо добавить еще один термин в список используемых нами облачных словечек: краевые вычисления .
Как объяснено в Википедии :
Граничные вычисления — это парадигма распределенных вычислений, в которой вычисления в основном или полностью выполняются на узлах распределенных устройств. Пограничные вычисления отодвигают приложения, данные и вычислительную мощность (услуги) из централизованных точек в места, более близкие к пользователю. *
Работники облачных вспышек
Cloudflare Workers — это своеобразное и мощное воплощение FaaS (функция как сервис), код которого мгновенно развертывается в глобальной сети узлов Cloudflare, и выполняется как можно ближе к посетителю.
Как сказал Кентон Варда в блоге Cloudflare :
При ответе пользователю в Новой Зеландии ваш код должен работать в Новой Зеландии. При обработке данных в вашей базе данных ваш код должен выполняться на машинах, на которых эти данные хранятся. При взаимодействии со сторонним API ваш код должен работать везде, где размещен этот API. Когда исследователи достигнут Марса, они не будут рады ждать полчаса, пока ваше приложение ответит. Ваш код должен быть запущен на Марсе.
Cloudflare Workers — это среда выполнения кода, разработанная на V8, движке JavaScript, разработанном для Google Chrome, а также используемом Opera, Node.js, браузером Brave, Electron и другими.
Рабочие используют Service Worker API, но код находится в Cloudflare, а не в браузере.
Они могут «изменять HTTP-запросы и ответы вашего сайта, делать параллельные запросы и даже отвечать прямо с края». Это означает, что, если бы мы были за это, наше приложение могло бы находиться в CDN.
Это также означает, что, хотя мы выполняем динамический код JavaScript, который не является серверным кодом в классическом смысле, и он имеет намного лучшую задержку как по сравнению с серверными приложениями, так и с классическими службами FaaS, наш код все еще не выполняется в браузер, что означает, что он не открыт для публики.
По словам его ведущего разработчика, Workers — это начало чего-то, что в будущем может превратиться в гораздо более изысканные продукты.
Во многих случаях воспринимаемая скорость и эффективность так же хороши, как если бы выполнение происходило в браузере посетителя, но без затрат на обработку. Все это происходит в облаке.
Сопоставимой технологией (которая до сих пор была доступна пользователям NGINX) является сценарий Lua — с той разницей, что Cloudflare выполняет рабочий код в своей сети краевых узлов, ближайших к посетителю.
Работники Cloudflare могут быть протестированы, быстрыми и грязными, на игровой площадке Cloudflare Workers .
Потенциальное использование
Cloudflare загрузил несколько примеров кода в репозиторий GitHub . Среди них бот Slack , который получает цены или криптовалюты от CoinMarketCap и кэширует их в инфраструктуре Cloudflare. Код очень прост и доступен здесь . Это демонстрирует главное преимущество Cloudflare Workers — простоту отказа от работы со всем программным стеком под приложением.
Работники Cloudflare предоставляют разработчикам возможность сосредоточиться на логике приложения.
Тогда есть более продвинутый пример — краевое решение для кеширования для WordPress, которое предоставляет идеальное решение для кеширования и очистки HTML-вывода WordPress, объединяя Cloudflare Workers, Workers KV (хранилище значений ключей) и плагин для WordPress. , которые все работают согласованно, чтобы сделать возможным обход кеша при наличии некоторых файлов cookie, чтобы сделать возможной атомарную очистку кеша и так далее.
Вы можете узнать больше об этом примере здесь .
Далее приведены примеры кода использования пользовательской логики для создания уровня защиты между исходным веб-сайтом и Интернетом.
Существует пример использования рабочей логики для перезаписи сторонних сценариев, включенных в HTML веб-страницы, для создания URL-адресов с хэшем содержимого, а затем расширения кэша браузера и его кэширования на краевых узлах Cloudflare — так что нет необходимости в трех поездки туда и обратно на сторонние серверы для каждого скрипта.
В некоторых случаях это может существенно повлиять на производительность, и прелесть в том, что работники используют JavaScript — это означает, что имеется богатый программируемый интерфейс, позволяющий использовать всю мощь инфраструктуры Cloudflare для выполнения наших ставок.
В их репозитории есть другие примеры кода.
Как это сделано
Когда мы открываем панель инструментов Cloudflare, среди пунктов меню в верхней части есть пункт меню « Рабочие» .
Для начала нам нужно открыть ссылку на панель инструментов Workers вверху, и нам нужно будет настроить поддомен для наших работников:
Затем нам будет представлена панель инструментов для рабочих, где мы сможем развернуть новых сотрудников, отслеживать их использование и так далее.
Также есть редактор, который мы можем использовать для редактирования логики рабочих:
Как мы уже говорили, Workers используют движок JavaScript V8 и, очевидно, синтаксис JavaScript. Документация является твердой и подробной, и имеет ряд шаблонов, чтобы мы могли начать нашу работу.
Подождите, это еще не все!
Для тех из нас, кто хочет использовать больше логики на этом уровне и хочет повысить производительность этой инфраструктуры, есть еще кое-что. В октябре 2018 года Cloudflare объявил о поддержке WebAssembly для рабочих, что означает поддержку скомпилированных языков, таких как C, C ++ и Rust. Это делает Работников потенциально очень серьезным, если не изменяющим игру соперником в этом пространстве.
Вывод
Бессерверные вычисления с теми удобствами, которые они предлагают, привлекают все больше и больше разработчиков. Это дает им свободу сосредоточиться на логике приложения и не беспокоиться о базовых библиотеках и программной инфраструктуре.
Те из нас, кому приходилось работать с сотнями мегабайт библиотек npm, кто сталкивался с беспорядком версий разных зависимостей, кто должен был устанавливать и работать с Ruby Version Manager или PyEnv , virtualenv и аналогичными деликатесами, знают о боли, и знайте, что решение этих проблем может занять 80% работы.
Доступные сегодня серверные облачные предложения нашли свой рынок, и Cloudflare Workers — один из самых интересных продуктов в этой нише. Я надеюсь, что вы нашли это введение полезным!