Cloud Functions — общее название для сервисов типа Function as a Service (FaaS) от облачных провайдеров: Google Cloud Functions, Yandex Cloud Functions, AWS Lambda, Azure Functions. Код выполняется изолированно в эфемерном контейнере, который создаётся при вызове и уничтожается после завершения.
Как работает
Разработчик загружает архив с кодом или указывает Git-репозиторий. Провайдер собирает runtime-окружение и ждёт триггера. Триггеры: HTTP-запрос, событие в очереди сообщений, изменение в объектном хранилище, расписание (cron), Pub/Sub-сообщение.
При вызове происходит cold start: инициализация контейнера, загрузка runtime, импорт зависимостей. Время холодного старта зависит от языка: Go — 100-300 мс, Python — 300-800 мс, Java — 1-3 с. Последующие вызовы в течение нескольких минут попадают в «тёплый» экземпляр без cold start.
Concurrency: каждый параллельный запрос создаёт отдельный экземпляр функции. 1000 одновременных запросов = 1000 экземпляров. Лимиты устанавливаются на уровне аккаунта (AWS Lambda — до 10 000 concurrent executions по умолчанию).
История
AWS Lambda (ноябрь 2014) — первая облачная FaaS-платформа. Google Cloud Functions появился в 2016 году. Yandex Cloud Functions — в 2019 году. Cloud Run (Google, 2019) расширил концепцию: любой OCI-контейнер как функция с serverless-биллингом.
Практические сценарии
- Вебхуки: обработка событий Stripe, GitHub, Telegram Bot API.
- Медиаобработка: ресайз изображений при загрузке в blob storage.
- API backend: CRUD-эндпоинты с редкой нагрузкой (экономичнее VPS).
- ETL: трансформация и загрузка данных по расписанию.
Связь с хостингом
Cloud Functions не заменяет VPS для долгоживущих процессов, но снижает стоимость для редко вызываемых задач. Например, отправка email через очередь: функция вызывается раз в минуту вместо постоянно работающего воркера на VPS.
Ключевые отличия от похожих терминов
Serverless — общая концепция, Cloud Functions — конкретная реализация FaaS. Container as a Service (CaaS, например Cloud Run) запускает контейнер целиком, а не одну функцию. AWS Lambda — синоним Cloud Functions для экосистемы AWS.
Архитектура Cloud Functions
Функция = контейнер, запускаемый по событию. Триггеры: HTTP, очереди сообщений (SQS, Pub/Sub), таймеры, изменения в Object Storage. Изоляция: каждый вызов — отдельный экземпляр (или переиспользование тёплого). Ephemeral filesystem: данные не сохраняются между вызовами.
Yandex Cloud Functions
Поддержка: Node.js 18, Python 3.11, Go 1.21, Java 21, PHP 8.2, Bash. Лимиты: 1 ГБ RAM, 10 минут timeout, 128 МБ код. Async invocation через очереди. Версионирование функций. Интеграция с Yandex API Gateway (HTTP-триггер), Object Storage, Message Queue, Container Registry.
Serverless для типичных задач
Resize изображений при загрузке. Webhook-обработчики (Telegram, Stripe, GitHub). Ночные отчёты. API-эндпоинты с нерегулярной нагрузкой. Комбинирование с Redis для состояния. Цена: Yandex Cloud Functions — 0.02 ₽/млн вызовов + время CPU.
Мониторинг Cloud Functions
Все вызовы логируются автоматически. Yandex Cloud Functions: логи в Cloud Logging. Метрики: calls/s, duration, errors. Sentry SDK интегрируется в функцию для сбора исключений. Трейсинг: AWS X-Ray, Yandex Cloud Trace. Cold start мониторинг — отдельная метрика инициализации.