Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial Internet of Things >> Облачные вычисления

Что такое бессерверные вычисления?

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

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

Что такое бессерверные вычисления?

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

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

Как работают бессерверные вычисления?

В бессерверной среде код запускается событиями и выполняется как функция. Вот почему бессерверные решения часто ассоциируются с «Функциями как услуга» или FaaS, что является похожей концепцией. FaaS — это облачная модель, управляемая событиями, которая обрабатывает логику на стороне сервера для выполнения кода без какого-либо вмешательства со стороны пользователя. Эти события могут быть любыми:от простого HTTP-запроса, вызова API до запроса к базе данных или загрузки файла.

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

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

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

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

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

Чем бессерверные вычисления отличаются от BaaS, PaaS и IaaS?

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

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

Функции как услуга — Эта модель бессерверного облачного сервиса избавляет от необходимости управления инфраструктурой. Поставщику услуг поручено развертывать вычислительные ресурсы по требованию для выполнения пользовательского кода. Это происходит всякий раз, когда инициируется событие или запрос. Бессерверные функции выполняются в контейнерах без сохранения состояния, то есть вычислительные ресурсы развертываются только при вызове функции.

Основная путаница между Backend-as-a-Service и Platform-as-a-Service (PaaS). Первый — это метод бессерверных вычислений, а второй — модель облачного развертывания. Несмотря на то, что они имеют некоторые общие характеристики, PaaS не соответствует требованиям бессерверных технологий.

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

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

Распространенные примеры использования бессерверных вычислений

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

Создание API

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

Веб-сайты и приложения

Развертывание веб-сайтов и веб-приложений на бессерверной платформе не требует предварительной настройки инфраструктуры. Это значительно сокращает время, необходимое для запуска полнофункционального веб-приложения. Функция автоматического масштабирования также играет здесь важную роль, поскольку пользователю не нужно беспокоиться о предоставлении дополнительных серверов для поддержки растущего спроса. В результате гораздо проще поддерживать 100% работоспособность.

Многоязычные приложения

С бессерверной версией одно приложение может быть написано на разных языках. Serverless позволяет разработчикам разбивать монолитное приложение на более мелкие части и запускать их как микросервисы. Затем эти микросервисы взаимодействуют друг с другом через API. Каждый сегмент приложения может быть написан с использованием другого языка программирования.

Конвейеры CI/CD

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

Каковы преимущества бессерверных вычислений?

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

Вот три наиболее распространенных преимущества бессерверных технологий:

Автоматическое масштабирование

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

Быстрый выход на рынок

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

Оптимизированные затраты

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

Каковы недостатки бессерверных вычислений?

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

Задержка

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

Продолжительность выполнения

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

Привязка к поставщику

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

Безопасность

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

Какое будущее у бессерверных вычислений?

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

В настоящее время Serverless использует контейнеры без сохранения состояния для выполнения функций. Будущее бессерверных приложений движется к тому, чтобы позволить приложениям с отслеживанием состояния использовать преимущества бессерверных приложений. Это позволит разработчикам создавать приложения с отслеживанием состояния, не беспокоясь об управлении внутренними данными.

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

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

Заключение

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

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


Облачные вычисления

  1. Бессерверные вычисления - последнее предложение «как услуга»
  2. Какие курсы по облачным вычислениям самые лучшие?
  3. Что такое облачные вычисления и как они работают?
  4. Какая связь между большими данными и облачными вычислениями?
  5. Самые большие препятствия на пути к более широкому бессерверному внедрению
  6. Облачные вычисления против локальных
  7. Что такое сталь A2?
  8. Что такое периферийные вычисления и почему они важны?
  9. Что такое квантовые вычисления?
  10. Что такое код ТН ВЭД для гидравлического насоса?