Serverless — это больше: будущее облачных вычислений

Опубликовано: 6 Марта, 2023
Serverless — это больше: будущее облачных вычислений

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

Чем это отличается от платформы как услуги (PaaS), спросите вы? И в PaaS, и в программном обеспечении как услуге (SaaS) традиционный ИТ-подход остается тем же, за исключением того, что сеть, хранилище, серверы, виртуализация, ОС, промежуточное ПО и среда выполнения предоставляются как услуга. Это по-прежнему означает, что ваш процесс постоянно работает на сервере и ожидает HTTP-запросов или вызовов API. Большинство приложений, используемых сегодня, основаны на архитектуре клиент/сервер, где клиент работает на устройстве клиента, таком как мобильный телефон, а сервер обрабатывает запросы. Вот почему серверы должны постоянно оставаться в сети и должны быть подготовлены для обработки любых всплесков активности.

Бэкенд как услуга

«Бессерверные» вычисления можно в основном разделить на два типа: серверная часть как услуга (BaaS) и функция как услуга (FaaS). Давайте сначала посмотрим на BaaS.

BaaS подразумевает, что разработчик фокусируется только на клиентской стороне вещей, или, другими словами, на мобильном приложении, и использует такие сервисы, как Firebase для БД в реальном времени, AWS инкогнито LDAP или 0Auth для аутентификации, а также протоколы шифрования для обеспечения безопасности ваших данных. Это не только избавляет от необходимости настраивать ресурсоемкий сервер, но и позволяет разрабатывать приложения или службы, не тратя время на разработку отдельных внутренних ресурсов для каждого из них.

Там, где в прошлом разработчикам приходилось создавать API-интерфейсы, BaaS позволяет пользователям использовать единый стек распространенных сторонних API-интерфейсов. Это экономит время и деньги, поскольку настройка BaaS может быть выполнена за несколько минут и не требует найма бэкэнд-разработчиков. И наоборот, разработка собственных серверных ресурсов может занять недели или даже месяцы и потребует найма дополнительных сотрудников. Большая разница здесь в том, что с PaaS вам все равно нужно создавать клиент и сервер, но с BaaS вы можете сосредоточиться на клиентских приложениях и использовать ряд сторонних приложений для запуска вашего сервера.

Функция как услуга

Даже имея хорошую облачную платформу как услугу, вам все равно нужно создавать API-интерфейсы для взаимодействия с вашим клиентским приложением. В настоящих «бессерверных» вычислениях ваш клиент взаимодействует напрямую с базой данных через базовый уровень аутентификации. Это функция как услуга.

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

Эти контейнеры также являются эфемерными, что означает, что они выводятся из эксплуатации, как только выполнение функции заканчивается. Самое приятное то, что использование измеряется в единицах 100 мс, и пользователи платят только за потребляемые ресурсы, когда код фактически выполняется. Это лучше, чем подготовка собственных серверов для обработки повышенного использования или всплеска запросов, которые запускают функции. В отличие от большинства систем PaaS, где вам все равно придется учитывать масштабирование, FaaS обеспечивает столь необходимую прозрачность масштабирования вверх или вниз и может делать это для каждого отдельного запроса.

Изображение 684
TechBeacon.com

АВС Лямбда

Наиболее известным хостом поставщика для FaaS является AWS Lambda, который перешел от использования сторонних серверных ресурсов к запуску функций, запускаемых событиями, в контейнерах. Что AWS Lambda делает, так это запускает ваш код в инфраструктуре высокой доступности и управляет всеми ресурсами, включая обслуживание серверов и ОС, выделение ресурсов, автоматическое масштабирование, мониторинг кода и ведение журналов. Все, что осталось сделать разработчику, это написать код, и все готово.
Изображение 685 AWS Lambda запускает этот код в ответ на триггеры событий, а также помогает создавать сервисы AWS, такие как AWS SDK и Amazon Dynamo DB. Помимо нулевых затрат на администрирование, связанных с его использованием, AWS Lambda запускает ваш серверный код в собственном вычислительном парке AWS, Amazon Elastic Compute Cloud (EC2). Еще одним отличием Lambda от других PaaS является поддержка безопасного запуска исполняемых файлов Linux путем их вызова из поддерживаемой среды выполнения, такой как Node.JS. Уровень бесплатного пользования — это еще один бонус, при котором использование ниже определенного порога ничего вам не стоит и действует только через 12 месяцев после регистрации учетной записи.

Функции Microsoft Azure

Amazon — не единственный поставщик FaaS. Функции Microsoft Azure — еще одно отличное решение для запуска функций в облаке. Функции Azure предоставляют более широкий выбор языков разработки и поддерживают F#, C#, Node.JS, Python и PHP, пакетную обработку, bash или любой исполняемый файл. Он использует ту же модель ценообразования с оплатой по мере использования, что и AWS Lambda, и поддерживает NuGet и NPS, поэтому вы можете использовать библиотеки, с которыми вы уже знакомы.

Функции Azure также имеют встроенную безопасность, и вы можете защитить свои функции, активируемые HTTP, с помощью поставщиков 0Auth, таких как Azure Active Directory, Facebook, Google, Twitter или даже ваша учетная запись Microsoft. Также поддерживается ряд инструментов разработки, таких как Visual Studio Team Service и GitHub. Среда выполнения Функций Azure имеет открытый исходный код и доступна на GitHub.

Также предоставляются шаблоны для начала работы с ключевыми сценариями, что упрощает разработку. Вот некоторые из этих шаблонов: триггеры BLOB-объектов, триггеры концентратора событий, универсальный веб-перехватчик, веб-перехватчик GitHub, триггеры HTTP, триггеры очереди, триггеры темы служебной шины и триггеры таймера. Помимо поддержки триггеров, функции Azure также поддерживают привязки, которые позволяют упростить кодирование входных и выходных данных. Microsoft обычно любит держать своих клиентов взаперти, но, что удивительно, Функции Azure поддерживают интеграцию с рядом сторонних сервисов.

Облачные функции Google

Со всей шумихой о бессерверных вычислениях вы не можете ожидать, что Google не появится на вечеринке, и Google Cloud Functions — это то, как они это сделали. Облачные функции могут запускаться асинхронно с помощью событий из Google Cloud Pub/Sub, Google Cloud Storage или даже вызовов HTTP. Облачные функции отличаются от AWS Lambda тем, что они явно создают набор экземпляров в облаке, чтобы вы всегда могли проверить количество созданных машин и отслеживать загрузку вашего кластера.

Хотя облачные функции все еще находятся на стадии альфа-тестирования и поддерживают только JavaScript и имеют ограничение в 20 функций на проект, ожидается, что вскоре они будут поддерживать Java и Python и снимут ограничение функций. Ведение журнала поддерживается за счет интеграции с Google Cloud Logging, и пользователи получают дополнительное преимущество превосходной сети Google.

Пора

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