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.
- Выделенный вычислительный инстанс — виртуальная машина, создаваемая для выполнения функции. Инстанс может быть «холодным» (создаётся при первом вызове) или «горячим» (повторное использование после предыдущего вызова).
Жизненный цикл вызова функции
- Инициализация — при первом вызове функции или после длительного простоя создаётся новый вычислительный инстанс. Загружаются зависимости, инициализируется код.
- Выполнение — вызывается точка входа функции с переданными параметрами. Код выполняется в изолированной среде.
- Завершение — после выполнения функции инстанс может быть сохранён для повторного использования (в течение нескольких минут) или уничтожен.
Классификация и виды функций
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 →