Что такое serverless: плюсы, минусы и сценарии
Основы3 минРедакция Innovialabs
Коротко
Serverless — модель, в которой вы загружаете код функций, а облако само запускает их по событию, масштабирует и берёт плату за фактические вызовы; это удобно для неравномерной нагрузки и фоновых задач, но не подходит для долгих процессов и постоянных соединений.
Короткий ответ
Serverless не значит, что серверов нет. Это значит, что ими управляете не вы. Вы пишете функцию, загружаете её в облако, и провайдер сам:
- запускает её, когда приходит событие (HTTP-запрос, сообщение в очереди, загрузка файла, расписание);
- создаёт столько копий, сколько нужно под нагрузку;
- останавливает их, когда запросов нет.
Самая распространённая форма serverless — FaaS (Functions as a Service): AWS Lambda, Google Cloud Functions / Cloud Run functions, Azure Functions, Cloudflare Workers, Vercel Functions.
Как выглядит функция
Функция — это обработчик, который получает событие и возвращает результат. Например, простая HTTP-функция в стиле AWS Lambda на Node.js:
export const handler = async (event) => {
const name = event.queryStringParameters?.name ?? "world";
return {
statusCode: 200,
body: JSON.stringify({ message: `Hello, ${name}` }),
};
};
Ни настройки веб-сервера, ни операционной системы, ни балансировщика — только код.
Как устроена оплата
Классическая модель — pay-per-execution: вы платите за количество вызовов и за время выполнения с учётом выделенной памяти. Нет запросов — почти нет счёта.
Из чего складывается стоимость:
- число вызовов;
- длительность каждого вызова;
- объём памяти (от него часто зависит и выделенный процессор);
- сопутствующие сервисы: API-шлюз, база данных, хранилище, исходящий трафик, логи.
Поэтому serverless выгоден при неравномерной или небольшой нагрузке. При постоянной высокой нагрузке обычный сервер или контейнеры могут оказаться дешевле — это нужно считать на своих цифрах.
Какие задачи подходят
- API и бэкенд для сайтов и мобильных приложений с переменной нагрузкой.
- Вебхуки: приём событий от платёжных систем, CRM, Telegram-ботов.
- Обработка файлов: сжатие изображений, генерация превью, конвертация после загрузки в хранилище.
- Фоновые и плановые задачи: рассылки, отчёты, очистка данных по расписанию.
- Обработка очередей и потоков событий.
- Прототипы и MVP, где важно быстро запуститься без инфраструктуры.
Ограничения
| Ограничение | Что это значит на практике |
|---|---|
| Таймауты | У функции есть максимальное время выполнения. Долгие задачи нужно дробить или выносить в другие сервисы. |
| Отсутствие состояния | Между вызовами нельзя полагаться на память или локальный диск. Данные хранятся во внешней базе, кэше или хранилище. |
| Холодный старт | Если функция давно не вызывалась, первый запрос ждёт, пока поднимется окружение. |
| Подключения к БД | Много параллельных копий могут исчерпать лимит соединений классической базы. Нужен пул соединений или подходящая БД. |
| Привязка к провайдеру | Триггеры, права и сопутствующие сервисы у каждого облака свои, переезд требует доработки. |
| Отладка и мониторинг | Локально воспроизвести облачное окружение сложнее, нужны логи и трассировка. |
Конкретные лимиты (время, память, размер пакета) отличаются у провайдеров и меняются — проверяйте их в документации выбранного облака.
Плюсы и минусы коротко
Плюсы:
- не нужно администрировать серверы и ОС;
- автоматическое масштабирование;
- оплата за фактическое использование;
- быстрый старт проекта.
Минусы:
- ограничения по времени и состоянию;
- холодный старт;
- сложнее прогнозировать счёт при росте нагрузки;
- зависимость от экосистемы провайдера.
Как решить, подходит ли serverless
Задайте себе несколько вопросов:
- Нагрузка неравномерная или есть долгие периоды простоя? — Плюс к serverless.
- Задачи короткие и укладываются в лимиты по времени? — Плюс.
- Нужны постоянные соединения (WebSocket-сервер, долгие воркеры)? — Скорее минус.
- Важна минимальная задержка на каждом запросе? — Учтите холодный старт.
- Нагрузка высокая и стабильная? — Сравните стоимость с контейнерами или VPS.
Часто лучший вариант — смешанный: основное приложение в контейнерах, а вебхуки, обработка файлов и задачи по расписанию — в функциях.