Функция как услуга (FaaS): все, что вам нужно знать

Опубликовано: 2022-06-09

Вы, вероятно, слышали о SaaS и, возможно, слышали о PaaS и IaaS, но слышали ли вы о функции как услуге (FaaS)?

Рынок FaaS быстро растет. По данным Allied Market Research, в 2018 году рынок стоил 3,01 миллиарда долларов. Ожидается, что к 2026 году эта цифра вырастет до 24 миллиардов долларов, а это означает, что совокупный годовой темп роста (CAGR) отрасли будет расти на уровне 29,7% с 2020 по 2026 год.

Глядя на этот рост, можно с уверенностью сказать, что FaaS — это довольно большое дело.

Но что такое FaaS и как это работает? Чтобы помочь вам ответить на эти вопросы, в этой статье будут рассмотрены основы FaaS, почему люди должны (и не должны) использовать FaaS, а также состояние мирового рынка FaaS по состоянию на 2022 год.

Пойдем.

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

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

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

Изображение, показывающее, как работают бессерверные вычисления.
Как работают бессерверные вычисления ( Источник: iviewlabs)

Хотя вы, возможно, впервые читаете о FaaS, вы, вероятно, сталкивались с ним в дикой природе. Многие популярные программы и приложения используют FaaS, например Amazon Alexa.

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

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

Итак, как поэтапно работает FaaS? Давайте рассмотрим это дальше.

Что такое Фаас? В этом руководстве рассказывается все, что вам нужно знать Click to Tweet

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

Чтобы понять FaaS, вам нужно знать два ключевых термина:

  1. «Монолитная архитектура» = автономное приложение, работающее независимо от других приложений. Эти приложения самостоятельно управляют пользовательским интерфейсом, бизнес-функциями и интерфейсом данных. Код монолитной архитектуры зависит от других фрагментов кода.
  2. «Микросервисная архитектура» = фрагмент кода, выполняющий несколько небольших задач. Эти микросервисы являются отдельными (хотя вместе они составляют целое приложение).

Вот диаграмма, показывающая, чем отличаются монолитная архитектура и архитектура микросервисов:

Монолитная архитектура против микросервисной архитектуры
Монолитная архитектура против архитектуры микросервисов ( Источник: BMC)

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

FaaS — это то, что помогает микросервисной архитектуре работать.

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

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

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

Итак, что еще может сделать FaaS?

Какие услуги включает FaaS?

Хотя все провайдеры разные, провайдеры FaaS обычно предлагают следующие услуги:

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

В целом, эти сервисы помогают разработчикам работать эффективнее. Далее рассмотрим плюсы FaaS.

Плюсы модели FaaS

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

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

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

Кроме того, вам не нужно беспокоиться об обслуживании, аварийном восстановлении (DR) или безопасности.

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

Итак, является ли FaaS универсальным? Не совсем.

Минусы модели FaaS

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

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

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

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

Плюсы и минусы

Плюсы Минусы
Развертывайте код быстрее

Подготовка занимает миллисекунды

Код на любом языке

Автоматическое аварийное восстановление (DR)

Экономическая эффективность

Масштабируемость

Потерять контроль над сервером

Отладка сложнее

Тестирование занимает больше времени

Вы привязаны к своему поставщику

Вы должны написать код, подходящий для FaaS

FaaS против SaaS, PaaS и IaaS

Теперь, когда вы знаете больше о FaaS, вам может быть интересно, как он соотносится с другими вариантами Anything as a Service (XaaS), такими как IaaS, SaaS и PaaS.

Услуги IaaS, PaaS и FaaS имеют схожие цели: они помогают компаниям управлять приложениями дешевле и эффективнее. Однако каждый вариант предлагает что-то свое.

Инфраструктура как услуга (IaaS) позволяет сдавать в аренду вычислительную мощность (например, ОЗУ и ЦП). При использовании IaaS вам по-прежнему необходимо управлять некоторыми функциями приложения (например, безопасностью) самостоятельно.

Платформа как услуга (PaaS) позволяет вам сдавать в аренду аппаратные и программные инструменты для создания вашего приложения. Типичным примером является AWS Elastic Beanstalk.

В отличие от IaaS и PaaS, FaaS позволяет арендовать пространство для независимого запуска функций. Эта функция делает его более масштабируемым.

Вот краткое изложение того, как три работают по-разному:

Изображение, показывающее, чем FaaS отличается от IaaS и PaaS.
Чем FaaS отличается от IaaS и PaaS ( Источник: thenewstack.io)

Программное обеспечение как услуга (SaaS) не предназначено для создания приложений или программ. Вместо этого он позволяет вам арендовать приложения, чтобы вам не нужно было создавать их самостоятельно. Доступны тысячи вариантов SaaS — от инструментов анализа данных до SEO-плагинов WordPress.

Размер рынка, доля и ведущие поставщики

Рост FaaS отражает общий сдвиг в том, как организации разрабатывают новые программы.

В предыдущие десятилетия разработчики создавали большие системы как многолетние проекты. Сегодня многие организации отдают предпочтение подходу Development Operations (DevOps) к разработке. DevOps ставит во главу угла постоянную разработку и постепенное улучшение программы.

Изображение, показывающее, как работает DevOps
Как работает DevOps ( Источник: Atlassian)

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

Вы можете увидеть эту тенденцию в данных, собранных от 7 164 руководителей высшего звена из Statista. С 2019 по 2021 год использование одной общедоступной или частной облачной службы сократилось, и большинство организаций внедрили несколько облачных решений.

Диаграмма, показывающая использование облачных технологий
Использование облачных технологий ( Источник: Statista)

Инвестиции в облачные вычисления также растут. Другое исследование, проведенное Statista на сотнях крупных предприятий по всему миру, показало, что 83% опрошенных компаний ежегодно инвестируют более 1,2 миллиона долларов в общедоступные облачные вычисления. Этот показатель вырос с 50% в 2019 году.

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

Эти преимущества привлекают многие отрасли, включая банковские организации (или организации «BFSI»), потребительские товары и розничную торговлю, развлечения, телекоммуникации, информационные и технологические услуги (ITES), здравоохранение и производство. Вот какой вклад каждая отрасль вносит в рынок FaaS:

Изображение, показывающее, в каких отраслях используется Faas.
В каких отраслях используется FaaS ( Источник: MarketsandMarkets)

В отличие от SaaS, организации не могут выбирать между тысячами поставщиков FaaS. Подавляющее большинство FaaS использует решения, предлагаемые крупными игроками, включая AWS Lambda, Azure Functions, IBM Cloud Functions, Google Cloud Functions, Alibaba Cloud и Cloudflare Workers.

Сейчас мы рассмотрим каждого из этих поставщиков.

АВС Лямбда

AWS Lambda, запущенный Amazon в ноябре 2014 года, является чрезвычайно популярным инструментом FaaS. По состоянию на четвертый квартал 2021 года 33% облачных пользователей использовали сервис AWS.

Домашняя страница AWS Lambda
АВС Лямбда

AWS Lambda предлагает встроенную поддержку многих языков программирования, включая Node.js, C#, Python, Ruby, Go, Java и Powershell. Как мы упоминали в разделе «Что такое функция как услуга (FaaS)?» Alexa использует AWS Lambda для навыков.

Особенности и функции:

  • Подключается к другим инструментам AWS
  • Отслеживает производительность вашей программы с помощью Amazon CloudWatch
  • Более 200 интеграций с инструментами SaaS
  • Вы можете развернуть контейнеры Docker (AWS представила эту функцию в декабре 2020 г.)

Плюсы:

  • Вы можете создать свой собственный сервер с помощью Lambda API или шлюза API Amazon.
  • Вы можете развертывать функции в виде образов контейнеров.
  • Вы можете подключаться к реляционным базам данных с помощью Amazon RDS Proxy.
  • Вы можете выбрать, сколько памяти выделить для каждой функции

Минусы:

  • Если вы еще не используете AWS, его настройка займет много времени и усилий.

Функции Microsoft Azure

Функции Microsoft Azure — это возможность Microsoft Azure, которую Microsoft впервые запустила как «Windows Azure» в феврале 2010 года. Функции Azure позволяют выполнять код, управляемый событиями, через FaaS. По состоянию на четвертый квартал 2021 года 21% пользователей облака использовали Azure.

Домашняя страница функций Microsoft Azure
Функции Microsoft Azure

Особенности и функции:

  • Вы можете подключить свои функции к более чем 250 соединителям в Azure Logic Apps.
  • Поддерживает JavaScript, C#, F#, Powershell, PHP, Python и Java.
  • Предоставляет множество учебных пособий для новых пользователей
  • Помогает анализировать вашу программу с помощью Azure Application Insights.

Плюсы:

  • Функции Azure используют интегрированную модель программирования.
  • Хорошо подходит для команд, использующих DevOps
  • Доступно несколько планов

Минусы:

  • Функции Azure не поддерживают Node.js или Ruby.

Облачные функции Google

Google Cloud — третье по популярности решение для облачных вычислений после AWS и Azure. В настоящее время его доля рынка составляет 10%. Облачные функции Google — это функция FaaS Google Cloud — службы, которая предлагает более 100 продуктов для широкого спектра применений.

Облачные функции Google
Облако Google

Особенности и функции:

  • Отладка и ведение журнала интегрированы в Google Cloud Functions (через CloudTrace и CloudDebugger).
  • Вы используете триггеры из Google Assistant, Google Cloud, Firebase или любого приложения, использующего HTTP.
  • Google Cloud Functions интегрируется со многими партнерами Google.

Плюсы:

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

Минусы:

  • Контейнерные сервисы Google Cloud Function менее продвинуты, чем у других поставщиков FaaS.

IBM Облако

IBM Cloud произошла от SoftLayer, общедоступной облачной платформы, которую IBM купила в июне 2013 года. IBM превратила платформу в Bluemix и запустила ее как инструмент PaaS в июле 2014 года. С тех пор IBM переименовала услугу в IBM Cloud и расширила ее функции до FaaS.

Боретесь с простоями и проблемами WordPress? Kinsta — это решение для хостинга, предназначенное для экономии вашего времени! Ознакомьтесь с нашими возможностями
Домашняя страница IBM Cloud
IBM Облако

По состоянию на четвертый квартал 2021 года 4% пользователей облака использовали IBM Cloud. Он работает в экосистеме Apache OpenWhisk.

Особенности и функции:

  • Вы можете искать видеоконтент
  • Вы можете подключить свою программу к другим программам через API IBM Watson.
  • IBM предлагает готовые функции для некоторых распространенных задач.
  • Поддерживает Node.js, Python, Swift, PHP, Go, Ruby, Java и .NET Core.

Плюсы:

  • Отлично подходит для создания мобильных приложений
  • Легко научиться пользоваться
  • Контролирует ваше приложение с помощью IBM Cloud Monitoring

Минусы:

  • Ограничивает время памяти вашей функции десятью минутами или 2048 МБ.

Облако Алибаба

Alibaba Cloud не так широко известен, как другие варианты облачных вычислений, но по-прежнему занимает приличную долю рынка — 6%. Платформа Alibaba Cloud, запущенная Alibaba в 2008 году, предназначена для онлайн-бизнеса и тех, кто использует другие услуги Alibaba.

Домашняя страница Alibaba Cloud
Облако Алибаба

FaaS — это одно из предложений Alibaba Cloud, наряду с сетью доставки контента (CDN), хранилищем данных и обработкой больших данных.

Особенности и функции:

  • Интегрируется с другими вычислительными сервисами Alibaba.
  • Защита от катастроф, так как Alibaba размещает функции на кластерах в нескольких областях.
  • Транскодирование видео
  • рассуждения ИИ
  • Поддерживает Node.js, Python, Java, PHP и C#.

Плюсы:

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

Минусы:

  • Может быть сложно перенести функции с Alibaba на другого поставщика FaaS.

Рабочие Cloudflare

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

Домашняя страница Cloudflare Workers
Рабочие Cloudflare

Особенности и функции:

  • Поддерживает JavaScript, C++, Rust и C
  • Вы можете хранить изображения, PDF-файлы и другие файлы в Cloudflare Workers для развертывания в качестве статических ресурсов.
  • Защита от катастроф, поскольку Cloudflare Workers использует глобальную сеть серверов.
  • Интегрируется с другими продуктами Cloudflare.

Плюсы:

  • Это дешевле, чем многие другие варианты FaaS
  • Новым разработчикам легко научиться использовать
  • Вы можете начать очень быстро
  • Cloudflare предлагает подробные руководства и ресурсы, которые помогут вам создать приложение.

Минусы:

  • Cloudflare Workers менее надежен, чем другие варианты, и лучше подходит для тех, кто работает с небольшими проектами.

Лучшие практики Фааса

Да, FaaS — это технология, но это также и образ мышления, который разработчики должны принять при разработке программ и приложений.

Чтобы получить максимальную отдачу от FaaS, следуйте этим рекомендациям:

  • Помните об ограничениях FaaS. FaaS подходит не для каждой программы, и если вы попытаетесь создать с помощью FaaS программу, не дружественную к FaaS, это будет стоить вам времени, усилий и денег.
  • Запускайте только функции одиночного действия на FaaS. Если вы запускаете функции с несколькими действиями, вы нарушаете изолированную среду, в которой функции FaaS работают лучше всего. Это прерывание замедлит работу вашего приложения и снизит эффективность.
  • Не запускайте функции с зависимостями. Зависимости позже создадут ошибки и проблемы с масштабируемостью.
  • Внимательно следите за временем загрузки. Время загрузки зависит от ваших библиотек или функций, которые требуют много памяти. Большое время загрузки замедлит вашу программу и, в конечном счете, разочарует пользователей.
  • Сократите количество используемых подключений к системе управления базами данных отношений (RDBMS). Эти соединения увеличат время, необходимое для работы функций, и создадут точку отказа в вашей программе.

Вам нужен FaaS?

Для некоторых FaaS — это инновационная и революционная технология, но она подойдет не всем.

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

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

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

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

Ожидается, что к 2026 году рынок FaaS вырастет до 24 миллиардов долларов... так что самое время узнать об этом рынке Click to Tweet

Резюме

FaaS — это не техническая болтовня или новая тенденция. Это масштабируемая технология, которую следует ожидать в ближайшее десятилетие.

Объяснение FaaS иногда может показаться сложным, но FaaS — это просто сервис, который позволяет разработчикам писать и запускать код, используя инфраструктуру, поддерживаемую кем-то другим. Многие сервисы, которые вы регулярно используете, например Alexa, используют FaaS. Распространенными поставщиками FaaS являются IBM Cloud Functions, AWS Lambda, Alibaba Cloud, Google Cloud Functions и Microsoft Azure Functions.

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

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