Разработка программного обеспечения обычно связана с управлением физической инфраструктурой, на которой работает код, и обслуживанием сервера. С появлением технологии бессерверных вычислений (Serverless Computing) разработчики ПО могут полностью забыть обо всех административных расходах и сосредоточиться исключительно на написании кода.
Что такое бессерверные вычисления?
Это технология облачных вычислений, благодаря которой облачные провайдеры выделяют и предоставляют свои ресурсы разработчикам программного обеспечения. Термин бессерверные вычисления является не совсем правильным, поскольку технология все-таки использует сервера. Управление серверами осуществляется поставщиками облачных услуг с помощью автоматизированных систем.
Serverless Computing иногда называют программированием на основе событий, так как они используют функции в качестве блока развертывания. Событийно-ориентированное программирование означает, что эксплуатация ресурсов облачного провайдера прекращается, когда разработчики ПО не выполняют никаких функции или приложений. Кроме того, бессерверная архитектура обеспечивает автоматическое масштабирование, позволяя предоставлять пользователям услуги, несмотря на увеличение рабочей нагрузки.
Бессерверные провайдеры
Amazon Lambda поддерживает множество языков программирования, включая Java, Python, Node.js. Lambda использует преимущества большинства служб AWS. Позволяет применять свои функции в качестве обработчиков событий, а также предоставлять связующий код (glue code) при создании сервисов.
IBM Cloud Functions выступает в качестве платформы действий для создания сложных функций. Поддерживает Node.js, Java, Swift, Python и произвольные двоичные файлы, встроенные в контейнер Docker. Облачная функция основана с помощью серверной службы программирования OpenWhisk, доступной на веб-сервисе GitHub под лицензией Apache с открытым исходным кодом.
Microsoft Azure Functions является платформой, позволяющей разработчикам писать код для таких функций, как обработка изображений, отправка сообщений электронной почты, поддержка файлов, которые выполняются по расписанию или при необходимости. Сервис предоставляет HTTP-хосты, интеграцию с Azure, поддержку таких языков программирования, как .NET, Go, Node.js, Python, PHP, Java.
Google Cloud Functions представляет собой вычислительную платформу, которая обеспечивает базовые возможности FaaS для работы бессерверных функций в ответ на вызовы HTTP и события из облачных сервисов Google. Предоставляет инструменты разработки, такие как API-интерфейсы прогнозирования, API-интерфейсы трансляции и хранилище данных.
Преимущества бессерверных вычислений
- Снижение затрат на облако. Вычислительные ресурсы оплачиваются только тогда, когда они фактически используются. Другими словами, разработчики платят лишь за то время, когда их приложение выполняет функции пользователя в ответ на конкретные события или запросы.
- Снижение затрат на разработку. Отсутствует необходимость в обслуживании инфраструктуры, поскольку разработчики могут арендовать большую часть ресурсов, необходимых при разработке ПО.
- Улучшенное управление ресурсами. Провайдер облачных вычислений может точно соответствовать абстрактному спросу на фактические системные ресурсы. Когда приложение не запускается, поставщик облака распределяет ресурсы сервера между другими запущенными приложениями.
- Гибкая масштабируемость. Бессерверная архитектура имеет возможность масштабирования в соответствии с рабочей нагрузкой приложения. Разработчикам больше не нужно приобретать дополнительную инфраструктуру для обслуживания непредвиденного роста.
- Снижение ответственности для разработчиков. Поскольку облачный провайдер осуществляет контроль над ресурсами, пользователям не нужно заботиться об интенсивности рабочей нагрузки, распределении ресурсов, масштабировании, развертывании приложений.
- Более быстрые релизы и сокращение времени их выхода. Для развертывания новых функций разработчикам просто нужно скомпилировать свой код, заархивировать его и загрузить на Serverless платформу. Нет необходимости писать сценарии для развертывания функций.
- Гибкая разработка. Использование Serverless Computing позволяет сосредоточиться на коде приложения, а не на обслуживании инфраструктуры. Это приносит пользу разработчикам за счет снижения сложности программного обеспечения и лучшей оптимизации кода.
- Многоязыковая поддержка. Многие платформы поддерживают несколько языков программирования, поэтому пользователи могут выбрать наиболее удобный для них.
- Встроенные механизмы регистрации и контроля. Serverless поставщики разработали собственные решения для регистрации пользователей и мониторинга, которые освобождают разработчиков от необходимости приобретать сторонние инструменты для аналогичных целей.
Основные проблемы бессерверных вычислений
- Стоимость. Тот факт, что Serverless Computing могут значительно снизить затраты на разработку, не всегда является верным. Например, бессерверные функции в настоящее время наиболее привлекательны для вычислений, связанных с CPU. Тогда как функции, связанные с вводом / выводом, не так доступны, как на выделенных виртуальных машинах или контейнерах.
- Холодный старт. Ключевым преимуществом Serverless Computing является возможность масштабирования до нуля, что может привести к увеличению задержки вызова из-за холодного запуска.
- Ограничение ресурсов. Ограничения ресурсов необходимы для того, чтобы платформа могла справляться со скачками, противостоять атакам. Бессерверные вычисления налагают ограничения на память, время выполнения функций, пропускную способность и использование CPU.
- Вопросы безопасности. Существует высокий риск безопасной работы, так как многие пользователи запускают свои функции на общей платформе. Таким образом, при загрузке вредоносного кода возможны негативные последствия для работы других приложений.
- Мониторинг и отладка. Поскольку пользователи не имеют контроля над серверами провайдера, существуют ограниченные возможности для выявления проблем и узких мест.
- Наличие навыков. Serverless Computing – это достаточно новый бизнес, поэтому часто не хватает разработчиков с навыками бессерверного программирования.
Перспективы бессерверных вычислений
Serverless Computing – молодая технология, которая радикально изменит разработку ПО в ближайшие годы. Аналитики IBM прогнозируют, что в 2021 году рынок Serverless Computing вырастет в семь — десять раз.
Новая технология уже сегодня используется для разработки маркетинговых сайтов, виртуальных помощников, чат-ботов, мобильных бэкэндов, средств массовой информации, IT-автоматизации, обработки потоковых данных в режиме реального времени. В будущем бессерверные платформы могут найти применение в разработке приложений, которые легко интегрируются с различными передовыми технологиями, такими как Интернет вещей, когнитивный интеллект, мобильные устройства.