Технология безсерверных приложений вызвала огромный интерес в техническом сообществе, вызывая много любопытства и, в некоторой степени, критики. Эта технология начала свой путь с запуска AWS Lambda в 2014 году, которому вскоре последовали Функции Azure в 2016 году.
Позже Google последовал примером с выпуском функций Google Cloud в июле 2018 года. Так что же такое технология безсерверных приложений? Чтобы лучше ответить на этот вопрос, давайте вернемся к традиционным серверным вычислениям.
В традиционной модели IT вам приходилось заботиться практически обо всем. Как владелец бизнеса, вам приходилось бюджетировать серверы и другое сетевое оборудование, такое как маршрутизаторы и коммутаторы, а также стойки для установки серверов.
Вам также приходилось беспокоиться о создании надежного и безопасного центра обработки данных и убедиться, что он может обеспечить достаточное охлаждение, резервированное питание и интернет-соединение. После настройки вам приходилось устанавливать операционную систему, а затем развертывать ваши приложения. Кроме того, вам требовалось настроить системы мониторинга и реализовать функции безопасности, такие как брандмауэры и системы предотвращения и обнаружения вторжений.
Как вы могли догадаться, это требует больших ресурсов, дорогостояще и изнурительно.
Затем облачные вычисления ворвались в мир технологий, полностью революционизировав способ развертывания и управления серверами и приложениями. Это ознаменовало начало новой эры, когда разработчики могли быстро создавать облачные серверы и базы данных и приступать к работе над своими приложениями. Нет проблем, связанных с традиционными вычислениями в области информационных технологий, таких как простои, дорогостоящее оборудование и аренда дата-центров.
Хотя облачные вычисления принесли удобство и экономию масштаба при развертывании ресурсов ИТ, некоторые компании перекупали единицы серверного пространства и ресурсы, такие как ОЗУ и CPU, в ожидании скачка сетевого трафика или активности, которые могут перегрузить приложения.
Хотя это разумный шаг, непредвиденным исходом является недоиспользование ресурсов сервера, которые часто идут напропалую. Даже с автомасштабированием внезапный и неожиданный скачок может обойтись дорого. Также все равно придется выполнять другие задачи, такие как настройка балансировщиков нагрузки, которые также могут увеличить операционные расходы.
Очевидно, что несмотря на переход на облако, некоторые узкие места все еще остаются и имеют потенциал для увеличения затрат и вызывают неэффективное использование ресурсов. И вот здесь бессерверные вычисления вступают в игру.
Что такое бессерверные вычисления
Бессерверные вычисления – это облачная модель, которая предоставляет услуги бэкенда пользователям по принципу оплаты по мере использования. Простыми словами, поставщик облачных услуг выделяет вычислительные ресурсы и взимает оплату только за время работы приложений. Это эквивалентно переходу от ежемесячного плана оплаты кабельного телевидения к оплате только за просмотр ваших телешоу в момент их просмотра.
Термин “Бессерверные” может быть немного вводящим в заблуждение. Вовлечены ли серверы? Конечно, однако в этом случае серверы и базовая инфраструктура полностью управляются и поддерживаются поставщиком облачных услуг. Таким образом, вам не нужно беспокоиться о них. Как разработчику, ваше внимание полностью сосредоточено на разработке ваших приложений и обеспечении их работоспособности.
Таким образом, бессерверные вычисления устраняют головную боль по управлению серверами и экономят ваше драгоценное время для работы над вашими приложениями.
Услуги бэкенда, предоставляемые бессерверными вычислениями
A perfect example of serverless backend service is Function-as-a-Service (FaaS) platform. FaaS is a cloud computing model that enables developers to develop, execute, and manage code in response to events without the complexity of building and managing an underlying infrastructure usually associated with the deployment of microservices.
FaaS – это подкатегория бессерверных вычислений с незначительными различиями. Бессерверные вычисления охватывают широкий спектр услуг, включая вычисления, базы данных, хранение и API, чтобы упомянуть несколько. FaaS сосредоточены исключительно на событийной модели вычислений, при которой приложения выполняются по требованию, то есть в ответ на запрос.
Примеры моделей вычислений FaaS включают в себя:
- AWS Lambda от AWS
- Azure Functions от Microsoft
- Cloud Functions от Google
- Cloudflare Workers от Cloudflare
В общем, мы видели, что с FaaS вы платите только за время работы вашего приложения, и облачный провайдер в основном делает всё за вас, включая управление базовой инфраструктурой. Управление серверами – это меньшая из ваших забот.
Преимущества бессерверных вычислений
К настоящему моменту у вас уже есть хорошее представление о некоторых преимуществах, которые приносит с собой модель бессерверных вычислений. Давайте поглубже поговорим о преимуществах принятия этой технологии.
1. Отсутствие управления сервером
Возможно, это одно из самых важных преимуществ принятия модели бессерверных вычислений. Хотя термин “бессерверный” может быть неправильно понят как отсутствие серверов, на самом деле приложения все еще выполняются на серверах. Суть в том, что управление серверами полностью находится в компетенции облачного поставщика, и это дает вам больше времени для работы над вашими приложениями.
2. Простое и эффективное масштабирование
Инфраструктура без серверов предоставляет автоматическое масштабирование приложений в ответ на всплеск использования, спрос или рост пользовательской базы. Если приложение запущено на нескольких экземплярах, серверы будут запускаться и останавливаться по мере необходимости. В традиционной облачной вычислительной среде всплеск трафика или активности легко может перегрузить ресурсы сервера, приводя к несоответствиям в выполнении приложения.
3. Встроенная доступность
Как разработчику не нужно создавать специальную инфраструктуру, чтобы сделать свои приложения высокодоступными. Серверное вычисление предоставляет вам встроенную высокую доступность, чтобы гарантировать, что ваши приложения работают, когда это необходимо.
4. Снижение операционных затрат
Серверное вычисление выделяет ресурсы на основе оплаты по мере использования. Ваше приложение будет требовать только бэкэнд-функции при выполнении кода и автоматически масштабироваться в зависимости от объема нагрузки.
Это обеспечивает экономию масштаба, поскольку вам начисляются платежи только за время работы приложений. В традиционной модели сервера вам приходится платить за место на сервере, базы данных и другие ресурсы независимо от того, работает ли приложение или оно простаивает.
5. Быстрые развертывания приложений
Серверная архитектура устраняет необходимость в настройке бэкэнда и ручной загрузке кода на серверы, как в традиционной настройке. Разработчикам легко загружать небольшие стеки кода эффективным способом и запускать отличный продукт.
Простота развертывания также позволяет разработчикам легко патчить и обновлять определенные функции кода, не изменяя всего приложения.
Недостатки серверного вычисления
Есть ли какие-либо недостатки, связанные с моделью серверного вычисления? Давайте выясним.
1. Безопасность
Плохо настроенные приложения представляют один из наибольших рисков, связанных с бессерверным вычислением. Если вы выберете AWS, например, будет разумно настроить разные разрешения для вашего приложения, которые в свою очередь определят, как они будут взаимодействовать с другими службами в AWS. Если разрешения неясны, функция или служба могут иметь больше разрешений, чем требуется, что оставляет много места для нарушений безопасности.
2. Зависимость от поставщика
Выбор серверной модели может создавать проблемы при переходе к другому поставщику. Это в основном связано с тем, что у каждого поставщика есть свои собственные функции и рабочие процессы, которые немного отличаются от остальных.
3. Трудности в тестировании и отладке приложений
Еще одна проблема, возникающая при серверной модели, – это трудности в воспроизведении безсерверной среды для тестирования и мониторинга производительности кода перед выпуском в продакшн. Это в первую очередь связано с тем, что разработчики не имеют доступа к бэкэнд-сервисам, которые являются прерогативой облачного провайдера.
4. Трудности в мониторинге серверных приложений
Мониторинг серверных приложений является сложной задачей по тем же причинам, по которым отладка и тестирование являются трудными задачами. Это было усугублено недоступностью инструментов с интеграцией с бэкэнд-сервисами, такими как AWS Lambda.
Заключение
Бессерверные вычисления продолжают набирать обороты и привлекать внимание компаний и разработчиков по трём ключевым причинам. Одна из них — доступность, что подразумевает снижение операционных расходов. Во-вторых, бессерверные вычисления облегчают автоматическое и быстрое масштабирование, а наконец, разработчикам не нужно беспокоиться о базовой инфраструктуре, которая управляется поставщиком.
Тем временем облачные провайдеры круглосуточно работают над решением некоторых недостатков, связанных с бессерверными вычислениями, таких как сложности отладки и мониторинга приложений.