Определение простыми словами
Serverless не означает, что серверов нет — они есть, но скрыты от разработчика. Вы пишете функцию (например, обработчик HTTP-запроса) и загружаете её в облако. Платформа сама поднимает контейнер при первом запросе, держит его несколько минут «горячим», а в простое выключает. Если запросов нет — оплата ноль.
Технически serverless — это FaaS (AWS Lambda, Yandex Cloud Functions) и контейнерные платформы вроде Cloud Run или fly.io. От обычного VPS отличается тем, что не нужно администрировать ОС, мониторить нагрузку, держать запас мощности «на пик» — всё это берёт на себя провайдер.
Сравнение (таблица)
| Параметр | Serverless / FaaS | VPS | Kubernetes |
|---|---|---|---|
| Кто управляет ОС | провайдер | пользователь | пользователь (или managed) |
| Оплата | за запросы и время выполнения | за час/месяц аренды | за ноды кластера |
| Масштабирование | автоматически до нуля | ручное, вертикальное | автоматическое (HPA, KEDA) |
| Cold start | есть, 100 мс – 5 с | нет | зависит от настройки |
| Long-running задачи | лимит 5–15 мин | без ограничений | без ограничений |
| Vendor lock-in | высокий | низкий | средний |
Кейсы использования
- Webhook от GitHub или Telegram: одна функция обрабатывает редкие события без круглосуточного сервера.
- Backend для статического сайта: формы обратной связи, корзина, аутентификация — пара функций вместо целого приложения.
- Обработка изображений: при загрузке файла в S3 запускается lambda, которая режет превью.
- Cron-задачи: раз в час дёрнуть API, обновить кэш — без отдельной виртуалки.
- Негативный сценарий: высоконагруженный API с миллионом запросов в день на serverless получился в 3–5 раз дороже, чем на двух арендованных VPS с балансировщиком. Плюс cold start добавил 800 мс к latency. Перевели на свой kubernetes — счёт упал.
Технические детали
Минимальный пример serverless-функции на Yandex Cloud Functions: загрузка кода и вызов через CLI.
cat > handler.py <<'PY'
def handler(event, context):
return {
'statusCode': 200,
'body': 'hello from serverless'
}
PY
zip function.zip handler.py
yc serverless function version create
--function-name my-fn
--runtime python311
--entrypoint handler.handler
--memory 128m --execution-timeout 5s
--source-path function.zip
yc serverless function invoke --name my-fn
Главное ограничение модели — холодный старт: при отсутствии запросов контейнер выключается, и первый вызов запускает его заново. Для критичных по latency сервисов используют provisioned concurrency (зарезервированные горячие инстансы), что снижает преимущество «платить ноль за простой».
🔥 Где это применяется
Частые вопросы
Можно ли поднять serverless на своём сервере?
Да, есть open source платформы — OpenFaaS, Knative, fission. Они работают поверх Kubernetes и эмулируют поведение Lambda.
Что такое cold start и как с ним бороться?
Cold start — задержка при создании нового инстанса функции. Лечится provisioned concurrency, более лёгкими рантаймами (Go вместо Java) или kept-warm пингами.
Когда serverless дороже VPS?
Когда нагрузка стабильно высокая и предсказуемая. Для постоянного трафика арендованный сервер обычно в разы дешевле, чем оплата каждого запроса.