Перейти к содержимому

Faas что это такое

  • автор:

Функция как услуга: простыми словами о FaaS

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

Функция как услуга (FaaS) и бессерверная технология часто употребляются как взаимозаменяемые, но на самом деле эти два понятия синонимичны лишь условно. Бессерверные вычисления относятся к любой области, в которой сервер полностью абстрагирован от конечного пользователя. А FaaS — это подмножество бессерверных вычислений, ориентированное на триггеры, управляемые событиями, когда код запускается в ответ на события или запросы. Если управляемого событиями запроса нет, сервер отключается, высвобождая ресурсы для других запросов. После развертывания FaaS реагирует на спрос и автоматически масштабируется по мере необходимости. Как правило, если бессерверная функция простаивает, она ничего не стоит, что во многих ситуациях позволяет сэкономить деньги.

IaaS, PaaS и FaaS – в чем разница?

Инфраструктура как услуга (IaaS), платформа как услуга (PaaS) и функция как услуга (FaaS) — все они являются продуктами облачных вычислений. Разница между ними заключается в уровне абстракции между пользователем и инфраструктурой, который они обеспечивают.

IaaS предлагает самый низкий уровень абстракции. Благодаря IaaS пользователи имеют полный контроль над своей инфраструктурой, а также программным обеспечением и инструментами, связанными с их технологиями. При этом им не нужно управлять физической инфраструктурой (включая серверы без ПО или центры обработки данных). IaaS дает разработчикам возможность выбирать желаемые уровни абстракции. Они могут управлять всем самостоятельно или же добавить такие функции, как балансировщик нагрузки или даже управляемые сервисы, чтобы упростить обслуживание своего приложения (к примеру, некоторые провайдеры предлагают управляемые Kubernetes или базы данных).

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

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

FaaS и PaaS

При поверхностном знакомстве FaaS и PaaS кажутся очень похожими, однако между ними есть ключевые различия, которые следует учитывать, чтобы сделать правильный выбор.

  • Конфигурация. Благодаря простоте использования и полностью управляемым решениям FaaS чрезвычайно быстро настраивается. PaaS предлагает больший уровень абстракции, чем другие модели облачных вычислений, однако она все же требует базовой настройки. Это может быть как преимуществом, так и недостатком – зависит от желаемого уровня контроля.
  • Операции. Технологии FaaS запускают и отключают целые приложения по отдельным запросам. Эта особенность FaaS может повлиять на задержку, стоимость и способность обрабатывать сложные запросы. Хотя PaaS имеет возможность автоматически масштабироваться по мере необходимости, в ней, как правило, всегда есть запущенные ресурсы.
  • Масштабируемость. Как вы уже знаете, PaaS масштабируется по мере необходимости, но продумывание и настройка все еще зависят от разработчика. В свою очередь FaaS не требует никакого планирования. Он легко и быстро самостоятельно масштабируется по мере необходимости.
  • Ценообразование. Существуют разные модели ценообразования для PaaS, они всегда зависят от провайдера. Однако PaaS часто обходится дороже, чем FaaS, если у вас низкая рабочая нагрузка. FaaS позволяет разработчикам платить только за вызов функции, экономя время, если триггеров событий мало. PaaS лучше подойдет для постоянных или высоких рабочих нагрузок с точки зрения цены.

Как работает FaaS

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

Функция — это, по сути, микросервис, который может выполнять только одно действие в ответ на событие. Используя FaaS, провайдер запускает сервер вместе с функцией, выполняет функцию, а затем выключает сервер. Бессерверные приложения активны только тогда, когда используется функция, что позволяет использовать те же вычислительные ресурсы в другом месте, когда сервер выключен.

Разработчики, использующие FaaS, имеют доступ к платформе, которая позволяет им выполнять код для своих приложений. Простота — сильная сторона FaaS. Чтобы использовать FaaS по максимуму, разработчик должен сделать так, чтобы каждая функция выполняла только одно действие. Область действия функции должна быть ограниченной. Используя слишком много библиотек или запрашивая одну функцию на вызов другой, вы скоро замедлите работу приложения и увеличите затраты.

Преимущества FaaS

Архитектура FaaS имеет много преимуществ. Вот несколько основных причин, по которым вы можете выбрать FaaS для своего приложения:

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

Варианты использования FaaS

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

  • Рабочие нагрузки. Выбирайте FaaS для простых и повторяющихся функций без постоянных рабочих нагрузок или больших объемов запросов. Обычно цена FaaS зависит именно от выполнения функций, потому при интенсивном использовании FaaS затраты потенциально могут быть выше, чем с PaaS. Если ваша рабочая нагрузка относительно невелика, FaaS — отличный выбор, который упростит выделение ресурсов и сэкономит деньги.
  • Контроль. FaaS — одно из самых абстрактных облачных предложений. Подумайте, какой уровень контроля необходим вашим конфигурациям и инфраструктуре. Если вам подходит простота использования, но нужен немного больший контроль, чем предлагает FaaS, попробуйте PaaS. Разработчикам, которые хотят получить полный контроль над своей производственной средой, дизайном и поведением инфраструктуры, рекомендуем рассмотреть решение IaaS.
  • Блокировка вендора. Миграция приложений, созданных с помощью определенных провайдеров, может быть сложной задачей. Использование облачных решений с открытым исходным кодом упрощает перенос вычислительных операций от одного провайдера к другому.

Что такое функция как сервис (FaaS)?

img

Функция как сервис или FaaS (Function as a service) это относительно новомодный термин, которым определяется возможность бессерверного запуска кусков кода, что дает возможность разработчикам писать и обновлять эти куски кода на лету, которые будут запускаться в результате отклика на какое-нибудь событие, к примеру, когда пользователь нажмет на элемент в веб-приложении. Благодаря этому масштабировать код и внедрять микросервисы становится на порядок проще.

Что такое функция как сервис FaaS?

Что такое микросервисы?

Небольшая аналогия: представьте себе большое полотно от известного художника — в нашем случае это будет веб-приложением. А теперь представьте себе большое произведение искусства, которое составлено из кусочков мозаики — причем каждый кусочек можно достать, немного модернизировать и починить, что практически невозможно в случае цельного веб-приложения.

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

Какие плюсы такой технологии?

Увеличенная скорость разработки

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

Bстроенная масштабируемость

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

Оптимизация затрат

Знаете, какой самый большой страх пользователя облачных серверов? Что вы наберете кучу серверов, а необходимой нагрузки не будет, что повлечет за собой в пустую простаивающие мощности. Логично, что появилась такая модель как FaaS, которая позволяет заказчикам платить только за то время, когда вычислительные мощности действительно работают.

Какие минусы технологии FaaS?

Снижение степени контроля системы в общем

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

Процесс тестирования становится гораздо сложнее

Впихнуть невпихуемое, а именно микросервисное приложение (или целый комплект таких приложений) в локальное окружение для тестирование становится нетривиальной задачей, и часто начинают требоваться люди с нетривиальным опытом и экспертизой.

Как начать использовать FaaS?

Вам нужно начать переговоры с облачными провайдерами, которые предоставляют подобные сервисы — все просто. В первую очередь нужно будет понимать где будут располагаться ЦОДы провайдеры — так как в случае большого расстояния между ЦОДами могут начаться непрогнозируемые и странные проблемы. Список из таких провайдеров не велик, но всем хорошо знакомы эти имена: AWS (проект Lambda), Microsoft (Azure Functions) и Yandex Cloud Functions. Но в России выбор будет практически очевиден в пользу Яндекса, так как его сервера находятся ближе всего к нашей большой стране.

В чем разница между IaaS, PaaS, SaaS, FaaS и CaaS

IaaS, SaaS, PaaS, CaaS и FaaS – разновидности сервисов, которые предлагают облачные провайдеры. С их помощью ИТ-службы компаний избавляются от необходимости управлять ресурсами сети, хранением данных, контейнерными технологиями и т.п. Использование облачных сервисов позволяет понизить CAPEX и в целом снизить затраты компании на IT, повысить масштабируемость и скорость разработки и выпуска продукции.

В статье подробно рассмотрим облачные сервисы, их назначение и примеры использования.

IaaS – Инфраструктура как сервис

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

IaaS

Обслуживанием аппаратной части полностью занимаются специалисты провайдера. Клиентам достаточно просто подключиться к виртуальным машинам и начать работу.

Главные особенности IaaS:

  • Равномерно распределяется траффик, балансировка нагрузки.
  • Лёгко масштабировать.
  • Нет простоя неиспользуемых мощностей.
  • Не требуется дополнительная инфраструктура под редко используемые приложения.
  • Можно тестировать ПО на различных платформах.

IaaS включает в себя виртуальные серверы, все необходимые сетевые настройки (для связи между виртуальными серверами, а также с внешними серверами клиента и внешним интернетом), управление доступом, облачные хранилища и сервисы резервного копирования.

Использование IaaS позволяет:

  • Отказаться от физических серверов, их обслуживания и администрирования.
  • Сэкономить на инфраструктуре за счёт отсутствия капитальных затрат, затрат на обслуживание оборудования, покупку лицензионного софта.
  • Быстро запустить стартап или новое направление бизнеса.
  • Расширить текущую инфраструктуру под новые задачи или организовать тестовые среды для нужд разработки.
  • Получить гибкую, легко масштабируемую инфраструктуру (актуально для компаний с неравномерными нагрузками)

В случае аренды виртуальной инфраструктуры возможны различные модели оплаты. В Cloud4Y вы можете арендовать виртуальный сервер на VMware по модели pay-as-you-go. Это означает, что вы платите только за те ресурсы, которые реально потребляли.

Аренда облачного сервера для разработки, хостинга, обученияПодробнее

PaaS – Платформа как услуга

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

Какие преимущества даёт использование модели PaaS:

Модель оплаты – почасовая за каждый экземпляр.

SaaS – Программное обеспечение как сервис

SaaS – это услуга, благодаря которой можно арендовать лицензионное программное обеспечение. Например, получить во временное пользование облачный Office 365.

saas

Софт имеет лицензию по подписке и находится у поставщика облачных услуг. Практически все SaaS-решения сделаны на базе многопользовательской архитектуры. В рамках этой модели у всех клиентов будет установлена одинаковая версия программного обеспечения с единой конфигурацией.

Услуга SaaS позволяет бизнесу сэкономить на IT за счет выноса обслуживания и поддержки ПО на аутсорс. Приложения по модели SaaS обновляются чаще обычных (раз в месяц или даже раз в неделю). Это вызвано следующими причинами:

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

Модель оплаты – каждый месяц или раз в год взимается фиксированная плата за каждого пользователя. То есть клиент может убирать или добавлять новых пользователей в любой момент и платить только за реальное их количество.

FaaS – Функция как услуга

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

Основные особенности FaaS:

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

Модель оплаты – обычно тарифицируются по объему и используемому vCPU. Иногда дополнительно взимается плата за вызов функций сверх бесплатного лимита.

CaaS – Контейнер как услуга

Контейнер – это аналог гипервизора, используемый для безопасного запуска приложений. Контейнеры можно запускать в изолированных разделах одного ядра Linux, запущенного на физическом сервере.

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

Что такое CaaS?

Container-as-a-Service (CaaS) является формой виртуализации на основе контейнеров, где поставщик облачных услуг предоставляет все решения и инструменты в качестве сервиса. Данная услуга упрощает одноконтейнерные развертывания, в том числе для запуска простых микросервисов, либо предлагает платформу контейнерной оркестровки, например, Kubernetes, позволяющий запускать более сложные многоконтейнерные развертывания.

К платформам контейнерной оркестровки относятся такие услуги, как обнаружение сервисов, планирование контейнеров, сетевое взаимодействие контейнеров, мониторинг и другие.

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

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

Faas что это такое

Как работают и где применяются бессерверные вычисления (Function-as-a-Service)

Термин «бессерверные вычисления» отчасти вводит в заблуждение – конечно, в основе продукта сервера остаются, но разработчикам не приходится о них заботиться. По сути своей Serverless продолжает те же идеи виртуализации, что и более ранние aaS-технологии: позволить команде сосредоточиться на коде и развитии функций. Если IaaS – это абстракция оборудования, контейнеры – абстракция приложений, то FaaS – это абстракция бизнес-логики сервиса.

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

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

Команда не беспокоится о бэкенде и процессах деплоя, В идеальных условиях реализация новой фичи сводится к загрузке одной функции на сервер. В результате разработка двигается быстрее, Time-to-Market ползёт вниз. А в компании в целом внедрение FaaS помогает развить платформенный подход – для Serverless-вычислений нужен либо пул облачных ресурсов от провайдера, либо Kubernetes-кластер.

Как это работает на практике

На рынке есть уже целый набор Serverless-платформ. Мы внимательно изучили два решения: Lambda от Amazon и KNative. Первое представляет собой проприетарный сервис для работы с облаком Amazon, второе работает поверх Kubernetes.

Amazon Lambda – вполне рабочий вариант со всеми возможностями, о которых мы говорили выше. Платформа выполняет все рутинные операции с продуктом, разворачивает приложения, мониторит работоспособность и производительность групп инстансов, обеспечивает отказоустойчивость и масштабирование.

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

KNative – для нас решение более интересное, поскольку оно работает поверх Kubernetes.

В отличие от Lambda, в этом случае используется собственная платформа, приходится глубже погрузиться в архитектуру процесса. Выглядит она так:

  • Eventsource – сущность FaaS-платформы, которая взаимодействует с внешними источниками событий. Триггером может быть HTTP-запрос, сообщение от брокера сообщений, событие самой платформы
  • Broker – «корзина», которая принимает и хранит информацию о событиях от Event Source. Брокер может представлять собой модуль Kafka, работать в оперативной памяти и т.п.
  • Trigger – подписанный на Broker компонент, который достаёт сообщения из «корзины» и передаёт их на исполнение в Service.
  • Service – рабочая функция, изолированная бизнес-логика.

С точки зрения разработчика процесс выглядит практически так же, как с уже привычными контейнеризированными приложениями, меняется только объект: (1) написать функцию, (2) упаковать её в Docker-образ, (3) загрузить.

Главный недостаток KNative – нет средств логирования и мониторинга, а для FaaS-решений это критически важно. Если ваш продукт разбит на функции, без эффективного мониторинга и логирования быстро установить источник сбоя невозможно, поскольку придётся смотреть на каждую функцию отдельно.

Преимущества FaaS

Лучше всего подход показывает себя, когда не требуется мгновенный ответ пользователю и когда нагрузка может колебаться от 0 до 100%:

  • Задачи, которые выполняются по расписанию. Операции экспорта/импорта в системах финансовой отчётности, учётных системах, решениях для создания резервных копий.
  • Асинхронная отправка уведомлений пользователю (push, email, СМС).
  • Машинное обучение, Интернет вещей, системы ИИ – все эти отрасли точно оценят такие возможности. Serverless позволяет выполнять вычисления ближе к эндпойнту, т.е. к пользователю. А значит, у продукта уменьшается задержка, сокращается нагрузка на передачу данных.

Какие можно выделить недостатки Serverless:

  1. Такая архитектура плохо подходит для долгосрочных процессов. Если функция используется в приложении практически постоянно, то и потребление ресурсов будет таким же, как у традиционных продуктов.
  2. Лучшие платформы на данный момент привязывают компанию к тому или иному облачному провайдеру – будь то AWS, Microsoft Azure или Google Cloud. Решениям для Kubernetes ещё предстоит подрасти до этого уровня.
  3. FaaS – это не «волшебная таблетка», с которой разработчики могут забыть об инфраструктуре и просто отправлять на прод фичи. Всё равно нужно продумывать архитектуру, проектировать функции и их взаимодействие с помощью DDD. Иначе продукт превращается в массу сильно связанных между собой функций, в которых будет сложно разобраться. Разработчики не смогут деплоить такие функции и менять по отдельности. В худшем случае при обработке пользовательских запросов пользователя придётся поднимать все функции.

Наш вывод – до эпохи Serverless ещё несколько лет

…При условии, что разработчики будут развивать это направление, в частности – развивать open source платформы до уровня того же Amazon Lambda.

Мотивацией таких проектов может быть сокращение затрат на ресурсы, улучшение управления большими энергозатратными продуктами. Но на данный момент разработчикам может быть проще работать «по старинке». Владение Serverless и умение использовать эти инструменты – это хороший багаж, до боевого применения компаниям стоит подождать пару лет.

20 декабря 2023

Как мы разработали аналог Firebase App Distribution

Когда старый сервис перестает быть надежным, пора искать новый. Или разработать собственный? Рассказываем, как к нам пришла идея создать аналог App Distribution и зачем это нужно.

12 декабря 2023

Улучшаем защиту ПО с помощью инструмента Gitleaks

Мы со всей серьезностью относимся к информационной безопасности наших продуктов и потому продолжаем внедрять в работу новые инструменты для аудита ПО. Рассказываем об использовании Gitleaks на web-проектах.

1 декабря 2023

Аудит безопасности приложения страховой компании

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

27 октября 2023

Заменит ли отечественная операционная система «Аврора» IOS и Android?

В последние годы санкции и ограничения на импорт технологий стали неотъемлемой частью нашей реальности. Из-за этого многие компании обратили внимание на развитие отечественных технологий. Мы не стали исключением. О том, что из себя представляет ОС «Аврора» и нашем опыте разработки под нее, рассказываем в статье.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *