Serverless вычисления позволяют запускать код без управления серверами. Вы пишете функции, разворачиваете их, а платформа обеспечивает масштабирование, доступность и инфраструктуру. В 2026 году три платформы доминируют в мире serverless: AWS Lambda, Vercel Serverless Functions и Cloudflare Workers. У каждой свои сильные стороны и компромиссы.
В этой статье мы сравниваем их с реальными примерами, соображениями по производительности и анализом цен.
Как работает Serverless
Вы разворачиваете функцию. Когда поступает запрос, платформа:
- Запускает среду выполнения (или повторно использует уже прогретую)
- Выполняет вашу функцию
- Возвращает ответ
- Масштабируется до нуля в режиме простоя (вы не платите за время простоя)
Обзор платформ
AWS Lambda
Оригинальная serverless платформа (запущена в 2014). Самая зрелая и функциональная, с глубокой интеграцией в экосистему AWS.
// AWS Lambda handler export const handler = async (event) => { const body = JSON.parse(event.body); const result = await processData(body); return { statusCode: 200, headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(result), }; };
Vercel Serverless Functions
Тесно интегрирован с Next.js и рабочим процессом развертывания фронтенда. Функции разворачиваются вместе с вашим фронтендом без конфигурации.
// app/api/hello/route.ts (Next.js App Router) import { NextResponse } from 'next/server'; export async function GET(request: Request) { const { searchParams } = new URL(request.url); const name = searchParams.get('name') || 'World'; return NextResponse.json({ message: `Hello, ${name}!` }); }
Cloudflare Workers
Работает на пограничной сети Cloudflare в более чем 300 городах по всему миру. Использует движок V8 (такой же, как в Chrome) вместо Node.js, что означает чрезвычайно быстрые холодные старты.
// Cloudflare Worker export default { async fetch(request, env) { const url = new URL(request.url); const name = url.searchParams.get('name') || 'World'; return new Response( JSON.stringify({ message: `Hello, ${name}!` }), { headers: { 'Content-Type': 'application/json' } } ); }, };
Сравнение возможностей
| Функция | AWS Lambda | Vercel Functions | Cloudflare Workers |
|---|---|---|---|
| Среда выполнения | Node.js, Python, Go, Rust, Java, .NET | Node.js, Python, Go, Ruby | V8 Isolates (JS/TS, Rust via WASM) |
| Макс. время выполнения | 15 минут | 60с (Hobby), 300с (Pro) | 30с (бесплатно), 15мин (платно) |
| Память | 128MB - 10GB | 1024MB - 3008MB | 128MB |
| Холодный старт | 100-500мс | 100-300мс | < 5мс |
| Место развертывания | Один регион (или мульти с усилиями) | Несколько регионов | 300+ пограничных точек |
| Макс. полезная нагрузка | 6MB (синхронно), 256KB (асинхронно) | 4.5MB | 100MB |
| Встроенное хранилище | Нет (используйте DynamoDB, S3) | Нет (используйте внешнюю БД) | KV, D1 (SQLite), R2 (совместимо с S3) |
| Модель ценообразования | За запрос + длительность | Включено в план | За запрос + длительность |
| Бесплатный уровень | 1M запросов/месяц | 100K/месяц (Hobby) | 100K запросов/день |
Холодные старты
Холодный старт - это время, необходимое для инициализации нового экземпляра функции. Это главная проблема производительности в serverless.
| Платформа | Типичный холодный старт | Почему |
|---|---|---|
| Cloudflare Workers | < 5мс | Изоляты V8, полная среда выполнения не нужна |
| Vercel Functions | 100-300мс | Среда Node.js на границе или в регионе |
| AWS Lambda | 100-500мс | Полная инициализация контейнера |
| AWS Lambda (Java) | 1-5 секунд | Накладные расходы на запуск JVM |
Cloudflare Workers побеждает в холодных стартах с огромным отрывом, потому что использует изоляты V8 вместо контейнеров.
Сравнение цен
Бесплатный уровень
| Платформа | Бесплатные запросы | Бесплатные вычисления |
|---|---|---|
| AWS Lambda | 1M/месяц | 400 000 ГБ-секунд |
| Vercel | 100K/месяц | Включено в план Hobby |
| Cloudflare Workers | 100K/день (~3M/месяц) | 10мс CPU за вызов |
В масштабе (10M запросов/месяц, средняя длительность 50мс)
| Платформа | Ориентировочная месячная стоимость |
|---|---|
| AWS Lambda | ~$2,50 (запросы) + |
| Vercel | $20/месяц (план Pro, включает функции) |
| Cloudflare Workers | $5/месяц (платный план, включает 10M запросов) |
Для большинства сценариев использования Cloudflare Workers самый дешевый. Ценообразование Vercel простое, но включает всю платформу (хостинг, CDN, аналитику). У AWS Lambda самое детализированное ценообразование.
Реальные сценарии использования
AWS Lambda: лучше всего для
- Сложных бэкенд-процессов - step functions, событийно-управляемые архитектуры
- Интеграции с сервисами AWS - триггеры S3, потоки DynamoDB, очереди SQS
- Длительных задач - до 15 минут времени выполнения
- Мультиязычных команд - поддерживает наибольший набор сред выполнения
Vercel Functions: лучше всего для
- Приложений Next.js - API-маршруты без конфигурации
- Фронтенд-ориентированных команд - развертывание фронтенда и бэкенда вместе
- Быстрого прототипирования - git push для развертывания
- Архитектур Jamstack - статический фронтенд + serverless API
// app/api/subscribe/route.ts import { NextResponse } from 'next/server'; export async function POST(request: Request) { const { email } = await request.json(); // Validate if (!email || !email.includes('@')) { return NextResponse.json( { error: 'Invalid email' }, { status: 400 } ); } // Save to database await db.subscribers.create({ email }); return NextResponse.json({ success: true }); }
Cloudflare Workers: лучше всего для
- API с низкой задержкой - код работает в 300+ точках по всему миру
- Пограничных вычислений - преобразование ответов, A/B тестирование, персонализация
- Высоконагруженных API - самый дешевый в масштабе с щедрым бесплатным уровнем
- Глобальных приложений - данные рядом с пользователями с KV и D1
// Edge-side A/B test export default { async fetch(request, env) { const url = new URL(request.url); // Assign user to variant const cookie = request.headers.get('Cookie') || ''; let variant = cookie.includes('ab=b') ? 'b' : 'a'; if (!cookie.includes('ab=')) { variant = Math.random() < 0.5 ? 'a' : 'b'; } // Fetch the appropriate version const response = await fetch(`${url.origin}/variants/${variant}`); const newResponse = new Response(response.body, response); // Set cookie for consistent experience newResponse.headers.set('Set-Cookie', `ab=${variant}; Path=/; Max-Age=86400`); return newResponse; }, };
Когда что выбирать
Выбирайте AWS Lambda, если:
- Вы уже инвестировали в экосистему AWS
- Вам нужны длительные функции (до 15 минут)
- Вам нужны сложные событийно-управляемые архитектуры
- Вам нужны среды выполнения помимо JavaScript (Python, Go, Rust, Java)
Выбирайте Vercel Functions, если:
- Вы разрабатываете на Next.js или фронтенд-фреймворке
- Вы хотите простейший опыт развертывания (git push)
- Ваша команда ориентирована на фронтенд
- Вы хотите хостинг + функции + CDN на одной платформе
Выбирайте Cloudflare Workers, если:
- Вам нужна минимально возможная задержка по всему миру
- Вы хотите самый дешевый вариант в масштабе
- Вам нужны возможности пограничных вычислений
- Время холодного старта критично для вашего сценария
Можно ли их комбинировать?
Безусловно. Типичная архитектура:
- Cloudflare Workers: пограничная маршрутизация, кэширование, безопасность
- Vercel Functions: фронтенд API-маршруты, SSR
- AWS Lambda: тяжелая бэкенд-обработка, плановые задачи, конвейеры событий
Заключение
Serverless значительно повзрослел. В 2026 году выбор между AWS Lambda, Vercel Functions и Cloudflare Workers зависит от вашего стека и приоритетов:
- Простейший опыт разработчика: Vercel
- Самый мощный и гибкий: AWS Lambda
- Лучшая производительность и цены: Cloudflare Workers
Все три готовы к продакшену и проверены в бою. Начните с того, что подходит вашему текущему стеку, и расширяйтесь по мере роста потребностей.