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

Yandex Cloud Functions

Yandex Cloud Functions — это сервис бессерверных вычислений (Function as a Service, FaaS), предоставляемый платформой Yandex Cloud, который позволяет запускать код в ответ на события без необходимости управления серверной инфраструктурой. Пользователь загружает код функции (на одном из поддерживаемых языков программирования), а Yandex Cloud автоматически масштабирует вычислительные ресурсы и обеспечивает выполнение кода при наступлении заданных триггеров. Оплата взимается только за фактическое время выполнения функции и количество вызовов, что делает сервис экономически эффективным для приложений с нерегулярной нагрузкой.

История и развитие

Сервис был анонсирован компанией «Яндекс» в рамках платформы Yandex Cloud в 2019 году. Запуск состоялся в конце 2019 года, и Yandex Cloud Functions стал одним из первых сервисов бессерверных вычислений среди российских облачных провайдеров. Развитие сервиса шло параллельно с расширением экосистемы Yandex Cloud: добавлялись новые триггеры, языки программирования, улучшалась интеграция с другими сервисами платформы, такими как Yandex Object Storage, Yandex Message Queue, Yandex Database (YDB) и Yandex API Gateway.

В 2021 году была представлена поддержка среды выполнения Node.js 14, Python 3.9, Go 1.16 и Java 11. В 2022 году добавилась поддержка PHP 8.0 и .NET Core 6.0. В 2023 году сервис получил возможность запуска функций в выделенных средах с увеличенным лимитом памяти (до 8 ГБ) и временем выполнения (до 10 минут). Ключевым этапом стало внедрение поддержки запуска контейнеров на основе Docker, что позволило выполнять более сложные и ресурсоёмкие задачи.

Архитектура и принцип работы

Yandex Cloud Functions работает по модели «событийно-ориентированной архитектуры». Основные компоненты системы:

  • Функция — единица кода, написанная на одном из поддерживаемых языков программирования. Функция имеет точку входа (handler), которая принимает запрос и возвращает ответ.
  • Триггеробъект, который связывает источник события (например, загрузка файла в Object Storage, запись в очередь Message Queue, HTTP-запрос к API Gateway) с конкретной функцией. При наступлении события триггер автоматически вызывает функцию.
  • Среда выполнения (runtime) — предустановленный образ операционной системы и библиотек, в котором запускается код функции. Yandex Cloud поддерживает несколько сред выполнения: Node.js, Python, Go, Java, PHP, .NET Core, а также пользовательские образы Docker.
  • Выделенный вычислительный инстансвиртуальная машина, создаваемая для выполнения функции. Инстанс может быть «холодным» (создаётся при первом вызове) или «горячим» (повторное использование после предыдущего вызова).

Жизненный цикл вызова функции

  1. Инициализация — при первом вызове функции или после длительного простоя создаётся новый вычислительный инстанс. Загружаются зависимости, инициализируется код.
  2. Выполнение — вызывается точка входа функции с переданными параметрами. Код выполняется в изолированной среде.
  3. Завершение — после выполнения функции инстанс может быть сохранён для повторного использования (в течение нескольких минут) или уничтожен.

Классификация и виды функций

Yandex Cloud Functions поддерживает два основных типа функций:

  • HTTP-функции — вызываются через HTTP-запросы (GET, POST, PUT, DELETE и т.д.). Такие функции могут использоваться для создания API-эндпоинтов, веб-хуков или обработки форм.
  • Фоновые функции — вызываются триггерами от других сервисов Yandex Cloud (например, при загрузке файла в Object Storage, добавлении сообщения в очередь, изменении записи в базе данных). Фоновые функции не имеют прямого доступа к HTTP-запросам, но могут взаимодействовать с другими сервисами через SDK.

Характеристики и ограничения

Сервис накладывает определённые технические ограничения, которые могут варьироваться в зависимости от тарифного плана и региона:

  • Максимальное время выполнения: до 10 минут (для HTTP-функций — до 60 секунд при стандартных настройках, до 10 минут при использовании асинхронного вызова).
  • Максимальный объём памяти: до 8 ГБ.
  • Максимальный размер загружаемого кода: до 128 МБ (сжатый архив), до 1 ГБ (при использовании Docker-образов).
  • Максимальное количество одновременных вызовов: зависит от квоты аккаунта (по умолчанию — 10, может быть увеличено по запросу).
  • Поддерживаемые языки: Node.js (12, 14, 16, 18), Python (3.8, 3.9, 3.11, 3.12), Go (1.16, 1.18, 1.20), Java (11, 17), PHP (8.0, 8.2), .NET Core (6.0, 8.0), а также пользовательские образы на основе Docker.

Применение и сценарии использования

Yandex Cloud Functions используется в различных сценариях, где требуется быстрая обработка событий без необходимости управления серверами:

  • Создание API-серверов — HTTP-функции могут выступать в роли эндпоинтов для веб-приложений, мобильных приложений или микросервисов.
  • Обработка файлов — автоматическое изменение размера изображений, конвертация форматов, извлечение метаданных при загрузке в Object Storage.
  • Обработка очередей сообщений — асинхронная обработка задач, поступающих через Yandex Message Queue или Yandex Data Streams.
  • Парсинг и ETL-процессы — периодический сбор данных из внешних источников, трансформация и загрузка в базы данных.
  • Автоматизация DevOps — запуск скриптов при изменении конфигурации инфраструктуры, отправка уведомлений, выполнение резервного копирования.
  • Интеграция с IoT — обработка данных с устройств Интернета вещей, поступающих через Yandex IoT Core.

Интеграция с другими сервисами Yandex Cloud

Yandex Cloud Functions тесно интегрирован с другими сервисами платформы:

  • Yandex Object Storage — триггеры на создание, удаление или изменение объектов.
  • Yandex Message Queue — триггеры на поступление сообщений в очередь.
  • Yandex API Gateway — создание единого API-шлюза, который маршрутизирует запросы к функциям.
  • Yandex Database (YDB) — триггеры на изменение записей в таблицах.
  • Yandex Monitoring — сбор метрик выполнения функций (время ответа, количество ошибок, количество вызовов).
  • Yandex Logging — централизованный сбор логов выполнения функций.
  • Yandex Lockboxбезопасное хранение секретов (ключей API, паролей) для использования в функциях.

Сравнение с аналогами

Yandex Cloud Functions является прямым конкурентом таких сервисов, как AWS Lambda (Amazon Web Services), Azure Functions (Microsoft), Google Cloud Functions и Cloud Functions от других облачных провайдеров. Ключевые отличия Yandex Cloud Functions:

  • Локализация — сервис полностью локализован для российского рынка, соответствует требованиям законодательства РФ (включая 152-ФЗ «О персональных данных»), данные хранятся на территории России.
  • Интеграция с экосистемой Яндекса — глубокая интеграция с сервисами Yandex Cloud и другими продуктами Яндекса (например, Yandex Tracker, Yandex Metrica).
  • Ценообразованиестоимость вызова и времени выполнения ниже, чем у западных аналогов, при сопоставимых характеристиках.
  • Поддержка Docker — возможность запуска произвольных контейнеров, что расширяет сферу применения по сравнению с некоторыми конкурентами.

Критика и ограничения

Несмотря на преимущества, сервис имеет ряд недостатков:

  • Холодный старт — при первом вызове функции или после длительного простоя время отклика может достигать нескольких секунд, что критично для высоконагруженных API.
  • Ограничения по времени выполнения — максимальное время выполнения в 10 минут может быть недостаточным для некоторых задач (например, обработка больших файлов или сложные вычисления).
  • Ограниченная экосистема — по сравнению с AWS Lambda, количество доступных триггеров и интеграций меньше, хотя постепенно растёт.
  • Зависимость от платформы — использование сервиса привязывает пользователя к экосистеме Yandex Cloud, что может усложнить миграцию на другие облачные платформы.

Источники

  • Документация Yandex Cloud. «Yandex Cloud Functions. Обзор сервиса». (2024).
  • Блог Yandex Cloud. «Yandex Cloud Functions: что нового в 2023 году». (2023).
  • Официальный сайт Yandex Cloud. «Тарифы на Yandex Cloud Functions». (2024).
  • Статья «Бессерверные вычисления: обзор Yandex Cloud Functions» на Habr. (2022).
  • Документация Yandex Cloud. «Триггеры Yandex Cloud Functions». (2024).

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

На главную BFOmetr →