Serverless (бессерверные вычисления) — модель, в которой разработчик пишет функции, а облачный провайдер запускает их по запросу, автоматически масштабируя. Имя обманчиво — серверы есть, просто вас они не беспокоят.
Пример AWS Lambda
exports.handler = async (event) => {
const name = event.queryStringParameters?.name || 'world';
return {
statusCode: 200,
body: `Hello, ${name}!`
};
};Это всё. Развёрнуто — получили URL, который вызывает функцию. Ни одного сервера не настроено.
Платформы
- AWS Lambda: пионер, 2014
- Google Cloud Functions
- Azure Functions
- Cloudflare Workers: быстрый, V8 isolates вместо контейнеров
- Vercel Functions: удобно для Next.js
- Yandex Cloud Functions
Как работает
- Ваша функция упакована в контейнер (или V8 isolate)
- Приходит запрос — если контейнер готов, функция исполняется мгновенно
- Если нет — "cold start" (50ms–5s в зависимости от языка/размера)
- После исполнения — контейнер живёт какое-то время (warm)
- Если нагрузки нет — контейнеры убиваются
Оплата
- За количество вызовов
- За длительность исполнения (до ms)
- За выделенную память
- AWS Lambda: 1M вызовов в месяц — бесплатно, далее $0.20 за миллион + время
- Cloudflare Workers: 100K вызовов/день бесплатно
Плюсы
- Нет управления серверами
- Автомасштабирование: от 0 до миллионов rps
- Оплата только за использование
- Быстрая разработка
- Высокая доступность встроена
Минусы
- Cold start: первый вызов медленнее
- Ограничения runtime: AWS — 15 мин максимум, 10 GB память
- Vendor lock-in: код привязан к API конкретного провайдера
- Сложнее локальная разработка
- Отладка распределённая
- Состояние: функции stateless, нужно внешнее хранилище
Use cases — где подходит
- API endpoints с переменной нагрузкой
- Обработка файлов (загрузка → конвертация)
- Webhooks
- Scheduled jobs (cron)
- Обработка событий (Kafka, SQS)
- Chatbots и LLM backends
- IoT backends
Где не подходит
- Долгие задачи (>15 минут)
- WebSockets с постоянным соединением
- Стабильно высокая нагрузка (дешевле VM)
- Строгие latency требования (cold start)
- Stateful приложения
Экосистема
- API Gateway: HTTP-роутер
- DynamoDB: serverless БД
- S3: хранилище
- SQS, SNS: очереди
- Step Functions: оркестрация
- EventBridge: события
Frameworks
- Serverless Framework: популярный, мульти-облако
- AWS SAM: AWS-specific
- AWS CDK: infrastructure as code
- Terraform: provider-agnostic
- Pulumi: код на реальных языках
Languages
- Node.js, Python: самые популярные, быстрый cold start
- Go, Rust: быстрые, но менее типичные
- Java, C#: холодный старт дольше (JVM)
- Custom runtimes (Docker): любой язык
FaaS vs BaaS vs PaaS
- FaaS (Function-as-a-Service): AWS Lambda
- BaaS (Backend-as-a-Service): Firebase, Supabase
- PaaS (Platform): Heroku, Railway, Render
- Разные уровни абстракции
Serverless-контейнеры
- AWS Fargate: серверлесс ECS/EKS
- Google Cloud Run: запуск контейнеров по запросу
- Новая модель: вся гибкость Docker + serverless-оплата
Edge computing
- Cloudflare Workers: код запускается в 300+ датацентрах по миру
- Vercel Edge Functions
- Близко к пользователю — низкая задержка
- Идеально для персонализации, A/B тестов
Стоимость-выгода
Для небольших проектов: почти бесплатно. Для больших: может быть дороже VM. Пример: API с 100 req/s целый месяц в Lambda — $300 vs t3.medium за $30. Для спорадической нагрузки — наоборот, выгода огромная.
Тренды
- Edge-функции везде
- WebAssembly (WASM) как runtime
- AI-функции (LLM inference per request)
- Serverless БД (Neon, PlanetScale)
Есть вопрос?
Вопросы и ответы · 0
Не поняли что-то?
Зарегистрируйтесь — и сможете задать вопрос автору объяснения.
Загрузка комментариев…