Статья:FaaS (Function as a Service) — TADVISER


2018/02/12 18:55:00

Компьютинг без серверов - что стоит за этим загадочным понятием?

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

Содержание

Тема «компьютинг без серверов» (так можно перевести serverless computing) находится в левой части гартнеровской кривой технологических трендов 2017 года. Заметим, что из разумной предосторожности Gartner использует более скромный термин Serverless PaaS. Важное обстоятельство - позиция Serverless PaaS, отмеченная кружком зеленого цвета, предполагает перемещение serverless computing на стабильную правую сторону в ближайшие несколько лет.

По мнению аналитиков Gartner, хотя технология находится в зародыше, ее развитие и адаптация к практическому использованию потребует весьма ограниченного периода времени.

Название Serverless предложил в 2012 году Кен Фромм в статье «Why The Future Of Software And Apps Is Serverless»[1].

Разобщенность мнений по поводу serverless computing отражает приведенная ниже картинка.

Выступающий: «Компьютинг без серверов – это круто!»

Скептический слушатель: «Почему бы им не назвать это дело просто удаленным вызовом процедуры?»

Такие суждения отражают повышенный интерес к serverless computing, сопровождающийся, как обычно в таких ситуациях, и излишне оптимистическими, и излишне пессимистическими оценками. От себя добавим, как говорится в известной притче про судью, его жену и двух женщин, делящих ребенка: «И ты женщина тоже права», а именно, есть третье мнение и оно тоже верное, serverless computing - круто, но не очень, и уж конечно это не удаленный вызов процедур.

Новый подход к предоставлению сервисов PaaS в виде функций

Говоря о serverless computing, нужно понимать, что на самом деле без физических виртуальных серверов не обойтись ни при каких условиях, значит речь идет не об отказе от «железа», а о новом подходе к предоставлению сервисов PaaS в виде функций. Этот сервис назвали FaaS (Function as a Service).

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

Впервые сервисы FaaS были реализованы в 2014 году в проекте Open-Source Microservice Hosting Platform[2]. Вскоре появились сервисы Amazon AWS Lambda, в 2016 году - Google Cloud Functions, Microsoft Azure Functions, IBM/Apache's OpenWhisk и в 2017 - Oracle Cloud Fn.

Hook.io представляет собой платформу с открытым кодом, поддерживающую хостинг микросервисов (microservice) и веб-перехватов (webhook hosting).

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

Serverless computing – разновидность облачных сервисов

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

Впрочем, остается удивляться тому, что очень хороший и великолепно соответствующий термин есть. Это utility computing, но по непонятной причине он постоянно остается невостребованным, хотя известен давным-давно. Еще в 1961 году Джон Маккарти, автор термина «искусственный интеллект» и изобретатель языка программирования LISP, сказал:

«
Если мое представление о компьютерах будущего окажется верным, то когда-нибудь компьютинг будет организован как любая иная коммунальная услуга, как телефония, например. И этот коммунальный компьютинг станет основой для новой и чрезвычайно важной индустрии
»

Джон Маккарти

Если бы Маккарти сказал только это, он уже был бы достоин памяти потомков, но он больше известен тем, что увлекся искусственным интеллектом и нагородил, как мы теперь понимаем, немало чепухи. Так в 1966 году в качестве задания студентам на лето он предложил создать такого робота, который бы смог собрать цветной телевизор из соответствующего комплекта деталей. Задание на лето — не меньше и не больше... Таково было его понимание сложности проблемы ИИ, отсюда безмерный оптимизм. В конечном счете телевизор был водружен туда, куда было задумано, но, увы, студенты собрали его вручную.

С остальными коммунальными услугами все проще. В них очевидно, что и как передается потребителю. А какова разумная форма предоставления услуг компьютинга? Самая банальная форма – IaaS. Вам предоставляется в пользование стандартная серверная инфраструктура или СХД.

Впрочем, исторически первой «двугорбой аббревиатурой» стала SaaS, выросшая из услуг, предлагаемых провайдерами ASP (Application Service Provider). Затем были DaaS, DBaaS, PaaS … - одним словом XaaS, то есть «все что угодно как сервисы». Все это – не что иное, как поиск форм для представления тех услуг, о которых Джон Маккарти писал полвека назад.

Форма предоставления ПО как сервисов – Software as a Service (SaaS) за годы своего существования серьезно изменилась. Она имеет три лица – контейнеры (CaaS), приложения (PaaS), к ним прибавляются функции (FaaS). Можно было бы на этом остановиться, но маркетологам по душе serverless computing. То есть FaaS есть ни что иное, как очередной шаг в сторону Utility computing.

В своих нынешних реализациях у платформ FaaS обнаруживается целый ряд ограничений: сложность организации параллельных вычислений, значительная задержка. Тем не менее FaaS можно рассматривать как очередной шаг по направлению к полноценной системе Utility computing и выразить уверенность, что через какое-то время будет сделан следующий шаг в том же направлении.

Эволюционные шаги в развитии IaaS и SaaS по направлению Utility computing

Качественное отличие FaaS от PaaS заключается в том, что предметом сервиса является не какое-то монолитное завершенное веб-приложение, а слабосвязанная распределенная по облаку система компонентов, позволяющая создавать архитектуры, работа которых подчинена событиям (event-based architecture). Такая система не привязана к каким-то физическим серверам и не ограничена по масштабированию (auto-scalable).

Содержательное введение в FaaS можно найти в материале «Serverless Architectures» Мартина Фаулера, известного популяризатора компьютерных знаний[3].

Разработчикам будет полезна GitHub-страница компании nuclio «Serverless for Real-Time Events and Data Processing»[4].

Примечания