Serverless: что это, как работает, плюсы и минусы | Глоссарий FREEHOSTING

Serverless

Serverless Computing
Serverless — Serverless — модель облачных вычислений, в которой разработчик загружает функции или контейнеры, а инфраструктура автоматически выделяет ресурсы под запросы. Платить нужно только за реальное время выполнения, а не за арендованный сервер.

Определение простыми словами

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?

Когда нагрузка стабильно высокая и предсказуемая. Для постоянного трафика арендованный сервер обычно в разы дешевле, чем оплата каждого запроса.