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

Вся правда о бессерверных вычислениях

Говоря по сути, за исключением тех случаев, когда оплачиваются готовые коммерческие программные услуги, при переходе на облачные вычисления от покупателя всегда требуется выбрать размер и спецификацию сервера: его процессор, объем ОЗУ, место на диске и пр. Но в отдельных случаях сделать это нет возможности, а некоторые эксперты даже смело высказываются в том ключе, что оперирование понятием сервера — пусть даже и виртуального — это пережиток традиционных дата-центров.

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

Такой подход позволяет разработчику сосредоточиться на предоставлении сервиса, а не на механизме этого предоставления. Можно создавать блоки кода (функции), выполняемые в определенное время или по наступлении внешних событий, использовать совместно с другим кодом для предоставления микросервисов в рамках веб-приложения или запускать как самостоятельную программу — без сервера.

Оплата

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

Так, один облачный провайдер взимает плату за пользование ресурсами в гигабайт-секундах, вычисляя ее на основе комбинации объема памяти и времени исполнения кода.

За и против

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

Но при всем этом такая модель подходит не для всех нагрузок (пожалуй, для большинства не подходит). Бессерверные функции, особенно крупные, более чувствительны к тайм-аутам по причине зависимости от внешних событий, из-за чего, с точки зрения пользователя, они работают плохо, с бόльшей задержкой. Ресурсы также могут оказаться не бесконечными, как это часто предполагается в более традиционной облачной модели. Такие функции к тому же порой трудно отлаживать из-за более ограниченного набора средств и возможностей для этого.

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

С другой стороны, в некоторых случаях как раз подходит приложение, срабатывающее на какое-то событие. Например, систему видеонаблюдения можно настроить на автоматическую отправку видозаписи в облачную систему хранения при обнаружении движения, записанного на подключенную в сеть камеру. «Факт передачи этого видеофайла с камеры в облако может запустить аналитический алгоритм (работающий внутри функции) внутри бессерверной среды», — пояснил Лонгботтом.

Подытожим

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

Станет ли год 2017-й годом бессерверных вычислений? Поживем — увидим!