Открыть сервис

Бессерверный режим

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

История

Концепция бессерверных вычислений берёт начало в середине 2000-х годов с появлением платформ «функция как услуга» (Function as a Service, FaaS). Первым коммерческим продуктом в этой области считается сервис AWS Lambda, запущенный компанией Amazon Web Services в 2014 году. AWS Lambda позволял разработчикам загружать код и запускать его в ответ на события (например, HTTP-запросы, загрузка файлов, изменения в базе данных) без необходимости настраивать серверы.

Вслед за Amazon аналогичные сервисы представили другие крупные облачные провайдеры:

Параллельно развивалась модель «бэкенд как услуга» (Backend as a Service, BaaS), которая также относится к бессерверному подходу, но ориентирована на готовые серверные компоненты (аутентификация, базы данных, хранение файлов), предоставляемые через API.

Ключевые характеристики

Бессерверный режим отличается от традиционных моделей облачных вычислений (IaaS, PaaS) следующими особенностями:

  • Автоматическое масштабирование. Провайдер автоматически выделяет ресурсы под каждое выполнение функции. При увеличении нагрузки количество параллельно работающих экземпляров растёт без вмешательства пользователя.
  • Оплата по факту использования. Пользователь платит только за время выполнения кода (в миллисекундах) и количество запросов, а не за заранее выделенные ресурсы. В простое функция не потребляет ресурсов и не тарифицируется.
  • Абстракция инфраструктуры. Разработчик не управляет операционной системой, сетевыми настройками, обновлениями безопасности или масштабированием. Всё это — ответственность провайдера.
  • Событийно-ориентированная архитектура. Функции запускаются в ответ на события (триггеры): HTTP-запросы, изменения в базах данных, сообщения из очередей, загрузка файлов в объектное хранилище.
  • Ограниченное время выполнения. Большинство платформ FaaS устанавливают лимит на время выполнения одной функции (обычно от 5 до 15 минут). Долгие процессы требуют иных архитектурных решений.

Классификация

Бессерверный режим принято разделять на два основных направления:

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

Платформа, на которой разработчик загружает отдельные функции (фрагменты кода), а провайдер запускает их в изолированных контейнерах. FaaS — наиболее распространённая форма бессерверных вычислений. Примеры: AWS Lambda, Google Cloud Functions, Azure Functions, Yandex Cloud Functions.

Бэкенд как услуга (BaaS)

Готовые серверные сервисы, предоставляемые через API. Разработчик использует их без написания собственного серверного кода. К BaaS относятся:

Устройство и принцип работы

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

Для снижения влияния холодного старта провайдеры используют:

  • резервирование предварительно инициализированных контейнеров (provisioned concurrency);
  • оптимизацию размера пакета функции;
  • использование языков с быстрым запуском (например, Node.js, Python).

Применение

Бессерверный режим получил широкое распространение в ряде сценариев:

  • Веб-приложения и API. Функции обрабатывают HTTP-запросы, выполняя бизнес-логику без необходимости поддерживать сервер.
  • Обработка данных. Автоматическая обработка файлов при загрузке (изменение размера изображений, конвертация форматов, анализ логов).
  • Потоковая обработка событий. Реагирование на сообщения из очередей (Kafka, RabbitMQ, Amazon SQS) или потоков данных (Amazon Kinesis).
  • Парсинг и сбор данных. Запуск функций по расписанию для сбора информации с веб-сайтов.
  • Чат-боты и голосовые ассистенты. Обработка запросов от пользователей через мессенджеры или голосовые интерфейсы.
  • DevOps и автоматизация. Запуск скриптов для управления инфраструктурой, резервного копирования, мониторинга.

Преимущества и недостатки

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

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

Недостатки

  • Холодный старт. Задержка при первом вызове функции после простоя может достигать нескольких секунд, что критично для приложений реального времени.
  • Ограничения по времени и ресурсам. Функции не могут выполняться дольше установленного лимита (обычно до 15 минут), что ограничивает применение для длительных вычислений.
  • Сложность отладки и мониторинга. Распределённая архитектура усложняет трассировку запросов и поиск ошибок.
  • Привязка к провайдеру (vendor lock-in). Использование специфичных сервисов конкретного облачного провайдера затрудняет миграцию на другую платформу.
  • Сложность архитектуры. Необходимость проектирования приложения в виде множества мелких функций, что может усложнить поддержку и тестирование.

Критика

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

Также отмечается, что термин «бессерверный» вводит в заблуждение, создавая ложное впечатление об отсутствии серверов как таковых. На практике серверы существуют, но управляются провайдером, что может создавать риски, связанные с конфиденциальностью данных и соблюдением законодательства (например, Федерального закона «О персональных данных» № 152-ФЗ в России).

Бессерверный режим в России

На российском рынке облачных услуг бессерверный режим представлен сервисами крупных провайдеров:

  • Yandex Cloud Functions (ООО «Яндекс.Облако») — платформа FaaS, поддерживающая Node.js, Python, Go, Java, PHP и другие языки;
  • Cloud Functions от VK Cloud (ООО «ВК») — аналогичный сервис на базе Apache OpenWhisk;
  • SberCloud (ООО «СберОблако») — предоставляет функции на платформе Cloud Native.

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

Источники

  • Amazon Web Services. «AWS Lambda: Developer Guide» (2024).
  • Google Cloud. «Cloud Functions Documentation» (2024).
  • Microsoft Azure. «Azure Functions Documentation» (2024).
  • Yandex Cloud. «Обзор сервиса Cloud Functions» (2024).
  • Jonas Bonér. «Reactive Microsystems: The Evolution of Microservices at Scale» (2017).
  • Mike Roberts. «Serverless Architectures» (2018).

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →