Первое, что следует знать о бессерверных вычислениях, – то, что их название не соответствует действительности. На самом деле соответствующие технологии, пришедшие в мир облачных вычислений за последние два года, все же работают на серверах. Эпитет «бессерверные» призван отразить тот факт, что пользователям не нужно заниматься администрированием серверов, на которых работает их код.
Вероятно, это звучит знакомо: облачной инфраструктурой в виде сервиса конечным пользователям тоже управлять не требуется, этим занимаются провайдеры – Amazon Web Services, Microsoft Azure и др. Так называемые бессерверные вычисления развивают эту концепцию: облачные сервисы выполняют код, написанный разработчиками, расходуя ровно столько ресурсов, сколько для этого нужно – ни больше ни меньше. Как только наступает заранее заданное событие, запускающее код, бессерверная платформа выполняет задачу. Конечному пользователю не нужно уведомлять провайдера о том, как часто будут происходить события-триггеры. Каждый раз, когда выполняется функция, заказчик платит доли цента. Некоторые считают, что данную концепцию лучше было бы назвать «функциями в виде сервиса» (functions as a service, FaaS) или «событийно-зависимыми вычислениями».
«Существуют различные уровни абстрагирования инфраструктуры, доступные разработчикам, – объясняет Дэмион Эредиа, вице-президент по управлению облачными продуктами IBM, отвечающий за управление платформой бессерверверных вычислений OpenWhisk. – Это могут быть прямой доступ к аппаратным ресурсам, работа с виртуальными машинами и работа с контейнерами. Для определенных задач мы считаем необходимым полностью абстрагировать функции администрирования, чтобы заказчик мог выполнять свой код, не беспокоясь об инфраструктуре и управлении серверами. В этом и состоит суть «бессерверных» вычислений».
Аналитики, пользователи и скептики спорят о том, насколько большое значение имеет технология. Является ли она эволюционной или революционной? Будет ли она применяться для выполнения большинства или лишь части приложений? Рынок еще в зачаточном состоянии, и ответов пока нет. Но шумиху вокруг технологии, интерес к ней и ее потенциальные преимущества игнорировать невозможно.
Преимущества бессерверных вычислений
Считается, что создателем нового рынка стала компания Amazon Web Services, представившая в 2014 году платформу бессерверных вычислений Lambda. По словам Мэтта Вуда, генерального менеджера AWS по стратегии, новшество было создано по образцу одного из самых популярных продуктов компании – Simple Storage Service, или S3.
В чем сходство S3 и Lambda? Принцип действия S3 состоит в том, что вы предоставляете объект и сервис хранит его, причем вам не важно, как и где, вам не нужно заниматься обслуживанием накопителей, заботиться о свободном месте и т. д. Нет опасности зарезервировать слишком много или слишком мало места в S3 – соответствующие задачи решает он сам.
По словам Вуда, те же принципы в AWS решили предложить для вычислений: «Lambda работает с функциями. Вы предоставляете их код, и сервис их выполняет по требованию. Нет опасности зарезервировать излишне много или очень мало вычислительной мощности».
В традиционной облачной среде IaaS пользователи готовят к работе виртуальные машины, хранилища, базы данных, а также инструменты обеспечения безопасности и администрирования. Затем на виртуальные машины загружаются приложения, а для масштабирования ресурсов используются балансировщики нагрузки и другие средства. С помощью административного ПО оптимизируется размер экземпляров и осуществляется поиск виртуальных машин, непреднамеренно оставленных во включенном состоянии. Lambda и другие платформы FaaS предлагают другую модель. Код предоставляется в форме функций. Когда происходит событие, вызывающее такую функцию, Lambda ее выполняет. Больше ничего не требуется – не нужны планирование мощности и балансировка нагрузки, только задания, которые надо выполнять.
По словам Вуда, это удобно в целом ряде случаев. Например, можно написать функцию Lambda, которая всякий раз при загрузке снимка в S3 будет создавать его копии различных размеров для настольных компьютеров, смартфонов и планшетов. Возможно также создание функции, которая при каждом внесении записи в базу данных будет загружать ее в хранилище Amazon Redshift для последующего анализа. Многие заказчики, пользуясь Lambda, связывают сервисы AWS друг с другом для формирования отчетов, планирования и подготовки данных к анализу.
Еще одна важная область применения – крупномасштабные среды Интернета вещей с мгновенным откликом. Недавно в AWS представили платформу Greengrass, позволяющую выполнять функции Lambda на устройствах без надежных средств связи, когда не всегда есть возможность передать данные в облако. Например, функция Lambda может выполняться непосредственно на камере видеонаблюдения, каждый раз при распознавании движения включая запись и отправляя съемку в базу. Отпадает нужда в виртуальной машине, круглосуточно работающей в ждущем режиме, – событийно-зависимый код выполняется автоматически всякий раз, когда наступает соответствующее событие. В компании FireEye, поставляющей средства сетевой безопасности, признаются, что, благодаря использованию Lambda вместо экземпляров EC2, удалось сократить затраты на виртуальные машины на 80%.
Бессерверные вычисления можно описать как решение для аутсорсинга: вы платите кому-то за администрирование серверов, баз данных и логики приложений, снимая тем самым соответствующие обязанности с себя. Важнейшее отличие бессерверных платформ в том, что вы оплачиваете ровно столько процессорного времени, сколько израсходовали, точность учета составляет плюс-минус 100 миллисекунд.
При этом не нужно ждать запуска серверов и настраивать балансировку нагрузки – задания просто выполняются автоматически столько раз, сколько потребуется. Специалисты отмечают, что такие платформы быстрее, чем другие, позволяют разработчикам проверять идеи и выводить продукты на рынок.
Недостатки
Бессерверные вычисления не панацея, и у них есть свои недостатки. В частности, сам рынок еще очень незрелый. Управлять крупномасштабными приложениями, работающими в бессерверном режиме, весьма сложно, отмечает Крейг Лаури, директор по исследованиям Gartner. Не хватает инструментов для координации выполнения групп функций. Слабо развито соответствующее ПО безопасности, мониторинга и оптимизации. Бессерверные вычисления требуют от разработчиков иного подхода к созданию приложений, и это, возможно, самое важное. «В этом отношении существует целый ряд требований, обусловленных архитектурными ограничениями подобных платформ», – поясняет Лаури.
Кроме того, хотя бессерверные функции можно использовать многократно, они не сохраняют состояние. Тарифы обычно составляют доли цента на каждый миллион выполненных функций, но когда таких функций много, рассчитать затраты бывает непросто.
Существует и еще одна опасность – это привязка к оператору. Приложение, разработанное для какой-либо FaaS-платформы, не так-то просто перенести на другую – локальную или действующую в публичном облаке. Поскольку рынок еще очень молод, сегодня у каждой бессерверной платформы свой особый набор компонентов. AWS Lambda, в частности, тесно интегрирована со многими другими продуктами AWS. По словам Вуда, поскольку Lambda поддерживает популярные языки программирования, такие как Node.js, Python и Java, в принципе код приложений Lambda можно переносить. «Специального языка для работы с Lambda нет», – подчеркивает Вуд.
В целом, как считает Лаури, бессерверные вычисления, или FaaS, – весьма мощная альтернатива существующим вычислительным парадигмам, основанным на виртуальных машинах и контейнерах: «Lambda – это нечто совершенно новое. Уверен, что в дальнейшем многие будут создавать эффективные крупномасштабные приложения, целиком базирующиеся на бессерверных платформах. Но они подходят не для всех задач». Например, в Lambda не смогут работать базы данных и другие приложения, требующие сохранения состояния.
Рынок бессерверных платформ
После AWS, которая первой предложила платформу бессерверных вычислений, аналоги появились и у других крупных поставщиков инфраструктуры в виде сервиса. По словам Вуда, на самом деле многие сервисы AWS являются «бессерверными» – не только Lambda, но также S3, NoSQL-база DynamoDB и размещаемая реляционная СУБД Aurora. Все эти продукты не требуют от пользователя предварительного планирования расхода ресурсов и администрирования инфраструктуры.
Пользователи Lambda получают до миллиона бесплатно обрабатываемых запросов в месяц, а каждый последующий миллион стоит 20 центов. В AWS тоже взимают плату по тарифу, зависящему от затрат времени на вычисления, – по 0,00001667 долл. в расчете на гигабайт в секунду; время округляется до 0,001 мс.
Аналогичные расценки действуют для сервиса Microsoft Azure Functions, общедоступная версия которого была введена в действие в ноябре прошлого года. Google Functions, в свою очередь, сейчас находится в стадии бета-версии, предлагается до 2 млн бесплатных запросов в месяц. Стоимость выполнения одной транзакции в Google Functions чуть выше, а тарифы на время обработки ниже. В IBM не публикуют расценки на пользование OpenWhisk. По словам топ-менеджеров, отличительная особенность платформы бессерверных вычислений IBM – разработка в открытых кодах в качестве проекта Apache Software Foundation. Теоретически заказчикам дается возможность выполнять код OpenWhisk где угодно.
Еще есть ряд стартапов, предлагающих платформы бессерверных вычислений, а также их компоненты и административные инструменты. В качестве примера можно привести компанию Iron.io, которая предлагает соответствующий сервис на основе контейнеров Docker.
Как отмечают в Gartner, рынок бессерверных вычислений еще настолько молод, что пока ни победителей, ни проигравших нет, хотя дольше всех на нем работает AWS. Важнее всего, считают аналитики, определиться, для чего можно использовать бессерверные системы. Например, FaaS может выполнять роль «клея» для различных сервисов в облаке конкретного оператора, но приложения Интернета вещей не обязательно привязывать к конкретному облаку.
– Brandon Butler. Serverless explainer: The next generation of cloud infrastructure. Network World. April 3, 2017