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

NovaInfo 132
Опубликовано
Раздел: Технические науки
Просмотров за месяц: 63
CC BY-NC

Аннотация

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

Ключевые слова

ДАННЫЕ, PAAS, УСЛУГА, ФУНКЦИЯ, FAAS, ВИРТУАЛИЗАЦИЯ, ВЫЧИСЛЕНИЯ, БЕССЕРВЕРНЫЕ, СЕРВЕР, МАШИНА, BAAS, LAMBDA, AWS

Текст научной работы

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

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

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

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

На рисунке 1 изображен пример работы виртуальной машины.

пример работы виртуальной машины.
Рисунок 1. Пример работы виртуальной машины

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

Главной задачей модели бессерверных вычислений является реализация шаблона FaaS (Function as A Service) — функция как услуга. И заключается данный шаблон в предоставлении пользователю готовой платформы для разработки, запуска и управления определенной функциональностью без необходимости самостоятельной подготовки и настройки.

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

стек технологий FaaS.
Рисунок 2. Стек технологий FaaS

Из Рисунка 2 видно как клиенты этой модели разрабатывают и развертывают небольшие фрагменты кода (функции) в облаке. Эти функции развертываются в облегченных виртуализированных средах, таких как контейнеры, и выполняются в средах выполнения, предоставляемых платформой. Каждая функция фокусируется на другой задаче, и несколько функций могут быть объединены с учетом событий для реализации сложной логики. События, которые могут активировать выполнение функций, называются триггерами; они включают, но не ограничиваются HTTP-запросами, журналами, событиями хранения и таймерами.

Кроме того, облачные провайдеры предлагают специальные сервисы и интерфейсы прикладного программирования (API) для таких задач, как хранение, ведение журнала и управление идентификацией. Эти службы могут помочь клиентам создавать логику на стороне сервера и управлять ею, что значительно ускоряет разработку и выпуск приложений. Эта модель обслуживания известна как BaaS (backend-as-a-service) бэк-енд как услуга. Бессерверные вычисления обычно рассматриваются как комбинация FaaS и BaaS. На рисунке 3 изображена схема работы бессерверного приложения включающего в себя FaaS и BaaS компоненты.

бессерверное приложение.
Рисунок 3. Бессерверное приложение

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

В настоящее время широко применяются бессерверные вычисления. Крупные компании, такие как Amazon, Microsoft Azure и Google Cloud, запустили бессерверные продукты. Одним из самых популярных является Amazon Web Services (AWS).

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

После загрузки кода в AWS Lambda можно объединить функцию с теми или иными ресурсами AWS, например с корзиной Amazon S3, таблицей Amazon DynamoDB, Amazon Kinesis или уведомлением Amazon SNS. При изменении состояния ресурса Lambda исполнит функцию и настроит вычислительные ресурсы для продолжения обработки поступающих запросов. Основными особенностями AWS Lambda являются:

  1. Поддерживает среды выполнения Java, Node.js, Python, Go;
  2. Утилизация. Плата взимается только за то время, когда сервис работает;
  3. Скорость. Сама по себе Lambda запускается и работает очень быстро;
  4. Функционал. Lambda имеет много возможностей по интеграции с сервисами AWS;
  5. Производительность. Одновременно может выполняться максимально от 1000 до 3000 экземпляров. И при необходимости это ограничение возможно увеличить.

AWS Lambda содержит в себе: тело лямбды, онлайн редактор, VPC как виртуальная сетка вычислений, логирование, сам код, переменные окружения и триггеры, вызывающие лямбду.

На рисунке 4 изображена работа AWS Lambda.

работа AWS Lambda.
Рисунок 4. Работа AWS Lambda

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

Слой Lambda функции показан на рисунке 5

слой внутри Lambda функции
Рисунок 5. Слой внутри Lambda функции

Слой является хранилищем, в котором размещается необходимая обвязка. Там также находится исполняемый файл среды, Bootstrap-файл Lamda (находится по умолчанию) и непосредственно вызываемые скрипты, которые будут выполняться.

На рисунке 6 показан запуск кода.

Запуск кода в AWS Lambda.
Рисунок 6. Запуск кода в AWS Lambda

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

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

Читайте также

Список литературы

  1. Gyanedra Rai, Prashant Pasricha, Santosh Pandey, etc. Serverless Architecture: Evolution of a New Paradigm. — URL: https://www.globallogic.com/gl_news/serverless-architecture-evolution-of-a-new-paradigm [Электронный ресурс].
  2. Mike Roberts. Serverless Architectures. — URL: https://martinfowler.com/articles/serverless.html [Электронный ресурс].
  3. Николай Алекс. Serverless PHP. — URL: https://habr.com/ru/company/otus/blog/477370/ [Электронный ресурс].

Цитировать

Мирошин, Д.Ю. Бессерверные вычисления / Д.Ю. Мирошин. — Текст : электронный // NovaInfo, 2022. — № 132. — URL: https://novainfo.ru/article/19155 (дата обращения: 23.05.2022).

Поделиться