Содержание
Serverless — это модель, при которой вы загружаете код функции, а облако само запускает её по событию, масштабирует и выставляет счёт только за время выполнения. Она выгодна для неравномерной нагрузки, фоновых задач, обработки файлов и интеграций. Основное веб-приложение с постоянным трафиком обычно дешевле и проще держать в контейнерах на обычных серверах.
Разберём, как устроен serverless, для каких задач он подходит, как считать стоимость и какие у него подводные камни.
Что такое serverless?
Serverless — это облачные сервисы, где вы не управляете серверами: не выбираете их размер, не обновляете систему и не настраиваете масштабирование. Серверы, конечно, есть, но ими занимается провайдер, а вы платите за фактически выполненную работу.
К serverless относят:
- облачные функции — код, который запускается по HTTP-запросу, расписанию или событию;
- бессерверные контейнеры — ваш контейнер, который запускается только при запросах;
- управляемые базы и очереди с оплатой за операции, а не за сервер;
- объектные хранилища и сервисы обработки событий.
Для каких задач подходит serverless?
Serverless подходит для задач, которые запускаются по событию, выполняются быстро и имеют неравномерную нагрузку: днём тысячи вызовов, ночью ноль. В этих случаях вы не платите за простаивающий сервер, а масштабирование происходит автоматически.
| Задача | Подходит ли serverless | Почему |
|---|---|---|
| Обработка загруженных изображений | Да | Запуск по событию, короткое выполнение |
| Вебхуки от платёжных систем и CRM | Да | Неравномерный поток событий |
| Задачи по расписанию | Да | Не нужен постоянно работающий сервер |
| Лендинг с формой заявки | Да | Редкие запросы |
| Основное API с постоянной нагрузкой | Чаще нет | Контейнеры дешевле при стабильном трафике |
| Долгие вычисления и WebSocket | Нет | Ограничения по времени и соединениям |
Фото: Unsplash
Как считать стоимость serverless?
Стоимость serverless считают по числу вызовов, времени выполнения и выделенной памяти. При малом и неравномерном трафике это почти бесплатно, а при постоянной высокой нагрузке счёт может оказаться в разы больше, чем за пару обычных серверов.
Как оценить:
- Посчитайте количество вызовов в месяц и среднее время выполнения.
- Умножьте на тариф за вызов и за гигабайт-секунду памяти.
- Добавьте стоимость исходящего трафика, логов, шлюза API и управляемых баз.
- Сравните с ценой контейнеров или виртуальных машин для той же нагрузки.
- Посчитайте сценарий роста в 10 раз — именно там serverless часто перестаёт быть выгодным.
Про выбор между своим сервером и облаком — в статье VPS, облако или managed-сервисы.
Какие подводные камни у serverless?
Главные подводные камни — холодный старт, ограничения среды выполнения, сложность отладки и привязка к провайдеру. Их нужно учитывать до выбора архитектуры, а не после запуска.
- холодный старт — первый вызов после простоя может занимать сотни миллисекунд или секунды;
- ограничения — максимальное время выполнения, размер пакета, память и временный диск;
- соединения с базой — тысячи параллельных функций быстро исчерпывают лимит подключений, нужен пул;
- отладка — цепочку функций сложно воспроизвести локально, нужны хорошие логи и трассировки;
- привязка к провайдеру — триггеры, права и сервисы у каждого облака свои.
О логах и трассировке подробнее — в статье мониторинг и логирование.
Serverless или контейнеры?
Для большинства продуктов разумен гибрид: основное приложение работает в контейнерах, а вокруг него — облачные функции для фоновых задач, обработки файлов и интеграций. Так вы получаете предсказуемую стоимость ядра и гибкость там, где нагрузка скачет.
Выбирайте контейнеры, если:
- трафик стабильный и предсказуемый;
- нужны долгие соединения, WebSocket или тяжёлые вычисления;
- важно запускать проект у любого провайдера или на своём сервере.
Выбирайте serverless, если:
- нагрузка пиковая или редкая;
- задачи короткие и запускаются по событиям;
- команде не хочется заниматься серверами вовсе.
Про контейнеры и оркестрацию — статьи Docker для разработки и продакшена и нужен ли Kubernetes.
Коротко
- Serverless — облако само запускает и масштабирует код, вы платите за выполнение.
- Он выгоден для событий, фоновых задач и неравномерной нагрузки.
- При постоянном высоком трафике контейнеры обычно дешевле.
- Учитывайте холодный старт, ограничения среды, соединения с базой и привязку к провайдеру.
- Частый оптимум — ядро в контейнерах и функции для периферийных задач.
Частые вопросы
Можно ли сделать весь проект на serverless?
Можно, и для небольших проектов с неравномерной нагрузкой это бывает выгодно. Но при постоянной высокой нагрузке, долгих запросах и сложной логике обычные контейнеры часто дешевле и проще в отладке.
Есть ли serverless у российских облаков?
Да, крупные российские облачные провайдеры предлагают облачные функции, бессерверные контейнеры и базы данных с оплатой за использование. Набор возможностей отличается, его стоит сравнить под задачу.
Как отлаживать облачные функции?
Локально — через эмуляторы провайдера и обычные модульные тесты бизнес-логики. В облаке — через структурированные логи и трассировку: без них разбираться в цепочке функций очень тяжело.



