Бессерверные вычисления и модель FaaS - следующий этап облачных вычислений

Опубликовано: 27 Мая, 2021

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

  • Бессерверные вычисления
  • Модель FaaS
  • Преимущества и ограничения бессерверных вычислений
  • Бессерверная платформа AWS

Бессерверные вычисления

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

Эта модель выполнения облачных вычислений не устраняет необходимость в сервере. Но он предоставляет полную инфраструктуру, которая требует запуска вашего приложения, путем добавления уровня абстракции над облачной инфраструктурой. Некоторые из поставщиков облачных услуг, которые предоставляют бессерверную структуру, - это AWS, Microsoft Azure и Google Cloud Platform (GCP).

Особенности бессерверных вычислений

  • Бессерверные вычисления позволяют запускать код без управления серверами, а функции выполняются на основе события, а не постоянно.
  • Вы можете запускать приложения любого типа независимо от используемых языков или фреймворков.
  • Это облегчает автоматическое масштабирование функции на основе запроса. Никаких дополнительных настроек делать не нужно.
  • Функции могут запускаться разными типами событий, а также с использованием шлюзов API.
  • Модель FaaS

Лучший способ понять бессерверные вычисления - это объяснить модель FaaS. Большинство из нас знакомы с терминами SaaS, IaaS и PaaS. Давайте посмотрим на эти термины, прежде чем мы перейдем к FaaS.

Программное обеспечение как услуга (SaaS) - это услуга облачных вычислений, в которой программное обеспечение размещается централизованно, а услуга предоставляется через Интернет на основе подписки. Некоторыми примерами SaaS являются Google Apps, Dropbox, WebEx и т. Д.

Инфраструктура как услуга (IaaS) предоставляет ресурсы инфраструктуры, а также управляет и масштабирует ресурсы. Здесь вы платите только за то, чем пользуетесь. Некоторые из примеров IaaS - это AWS EC2, виртуальные машины Azure и т. Д.

Платформа как услуга (PaaS) предоставляет программное обеспечение и инфраструктуру, необходимые для разработки приложений. AWS Beanstalk, сервисы приложений Azur являются одними из примеров.

Итак, перейдем к модели FaaS. Это модель « функция как услуга», которая позволяет разработчикам разрабатывать, запускать и управлять приложениями, не беспокоясь об инфраструктуре приложений. Он основан на концепции одноцелевого блока кода, называемого функциями . Здесь модель использует управляемую событиями архитектуру для обработки этих функций, в которой каждая функция запускается путем запуска события, такого как запросы API, события в базе данных, запланированные события и т. Д. И бессерверные приложения создаются путем объединения нескольких функции (FaaS).

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

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

  • Несмотря на то, что Paas предлагает простоту развертывания и управления веб-приложениями, он не обеспечивает гибкости, позволяющей поднимать и опускать все ваше приложение для каждого запроса. С другой стороны, FaaS позволяет делать то же самое.
  • В инфраструктуре PaaS вы должны полагаться на другие решения на основе PaaS, такие как AWS Elastic Beanstalk, для обработки масштабирования приложений. Но эти решения недостаточно гибки для обработки индивидуальных запросов, тогда как инфраструктура FaaS предлагает эффективные способы обработки масштабирования приложений.

Преимущества и ограничения бессерверных вычислений

До сих пор мы обсуждали бессерверные вычисления и модель FaaS. Теперь давайте посмотрим на преимущества и ограничения бессерверных вычислений.

Преимущества бессерверных вычислений

Бессерверные вычисления имеют множество преимуществ. Давайте посмотрим на некоторые из них.

  1. Снижение эксплуатационных расходов : в FaaS предопределенное время выполнения (инфраструктура используется только в течение определенного периода) и совместное использование одного и того же времени выполнения способствует значительному снижению эксплуатационных расходов.
  2. Быстрое развитие : поскольку инфраструктура управляется поставщиком облачных услуг, разработчики могут сосредоточиться на основных функциях.
  3. Затраты на масштабирование : он упрощает автоматическое горизонтальное масштабирование, а также заботится о масштабировании и уменьшении инфраструктуры. Это предложение приводит к значительному снижению затрат на масштабирование по сравнению с предложением PaaS.
  4. Более простое оперативное управление : FaaS предоставляет простейшее решение для развертывания приложений и управления ими. Прежде всего, вы можете в короткие сроки воплотить свою бизнес-идею в реальность.

Ограничения бессерверных вычислений

Несмотря на то, что бессерверные вычисления имеют множество преимуществ, также существуют определенные ограничения. Давайте посмотрим на следующие моменты.

  1. Управление инфраструктурой : поскольку бессерверные архитектуры контролируются поставщиками облачных услуг, у вас нет никакого контроля над инфраструктурой.
  2. Долговременное приложение : оно плохо адаптировано для длительных пакетных операций из-за предопределенных функций времени выполнения, когда у большинства облачных провайдеров есть период ожидания.
  3. Привязка к поставщику : одним из основных ограничений является блокировка поставщика, при которой вы не можете переключиться на другого облачного поставщика с существующего.
  4. Холодный старт : поскольку FaaS - это архитектура, управляемая событиями, возникает проблема холодного старта. После периода бездействия может потребоваться немного больше времени, чтобы отреагировать на событие.
  5. Общая инфраструктура : поскольку бессерверное приложение использует общую инфраструктуру, многие приложения могут работать параллельно независимо от того, в какой собственности находится бизнес. Таким образом, есть вероятность, что на ваш код могут повлиять функции соседних приложений, генерирующие высокую нагрузку. Но эта проблема существует не только в бессерверных предложениях, но и во многих других предложениях общих услуг.

Бессерверная платформа AWS

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

Вычисления : AWS предоставляет такие сервисы, как AWS Lambda для запуска кода без выделения серверов и управления ими, Lambda @ Edge для ответа на события, генерируемые событиями Amazon CloudFront, а AWS Fargate обеспечивает бессерверный вычислительный механизм для контейнеров.

Хранилище : AWS предоставляет Amazon Simple Storage Service (Amazon S3), который обеспечивает безопасное, надежное, высокомасштабируемое объектное хранилище, а Amazon Elastic File System (Amazon EFS) обеспечивает простое, масштабируемое и эластичное хранилище файлов.

Хранилища данных : Amazon DynamoDB предоставляет службу баз данных NoSQL, а Amazon Aurora Serverless (для Amazon Aurora) позволяет автоматически запускать, выключать и масштабировать емкость базы данных в сторону увеличения или уменьшения. AWS также предлагает прокси-сервисы баз данных с использованием прокси-сервера Amazon RDS.

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

Интеграция приложений : он упрощает использование таких сервисов, как Amazon SNS (служба обмена сообщениями в пабе или подписке), Amazon SQS (служба очереди сообщений), AWS AppSync (для безопасного доступа, управления и объединения данных) и Amazon EventBridge (для передачи данных приложений из разных источники в вашу среду AWS).

Оркестровка: AWS Step Functions оркестрирует компоненты распределенных приложений и микросервисов.

Аналитика : AWS предоставляет такие сервисы, как Amazon Kinesis (для потоковой передачи данных на AWS) и Amazon Athena (интерактивный сервис запросов для анализа данных) для анализа данных.

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

Резюме

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