Введение
Edge computing — это парадигма, при которой вычисления выполняются ближе к пользователям, на edge серверах, расположенных в разных географических локациях. Edge API позволяют обрабатывать запросы с минимальной задержкой, обеспечивая лучший пользовательский опыт.
В этом руководстве мы разберем три ведущие платформы для Edge API: Cloudflare Workers, Vercel Edge Functions и AWS Lambda@Edge. Узнаем их особенности, преимущества и когда какую платформу использовать.
✅ Что вы узнаете:
- ✅ Что такое Edge API и зачем он нужен
- ✅ Cloudflare Workers — особенности и примеры
- ✅ Vercel Edge Functions — интеграция и использование
- ✅ AWS Lambda@Edge — настройка и примеры
- ✅ Сравнение платформ
- ✅ Преимущества Edge API
- ✅ Best practices и рекомендации
- ✅ Когда использовать Edge API
📋 Содержание
Что такое Edge API? ⚡
Edge API — это API, который выполняется на edge серверах, расположенных близко к пользователям по всему миру. Вместо того, чтобы обрабатывать запросы на центральном сервере, код выполняется на серверах в разных географических локациях.
✅ Преимущества Edge API:
- Низкая задержка — выполнение близко к пользователям
- Глобальное масштабирование — автоматическое распределение нагрузки
- Высокая доступность — отказоустойчивость
- Снижение нагрузки — меньше запросов к origin серверам
- Улучшенная производительность — быстрые ответы для всех пользователей
- Cold start — минимальный или нулевой cold start
Архитектура Edge API
🌍 Как работает Edge API:
- Пользователь отправляет запрос из любой точки мира
- Запрос направляется на ближайший edge сервер
- Код выполняется на edge сервере (близко к пользователю)
- Ответ отправляется пользователю с минимальной задержкой
- При необходимости запрос может быть проксирован на origin сервер
Cloudflare Workers ☁️
Cloudflare Workers — это serverless платформа для выполнения JavaScript, TypeScript, Rust, Python и других языков на edge серверах Cloudflare. Workers выполняются на V8 изолятах, обеспечивая быстрый старт (0ms cold start).
Характеристики Cloudflare Workers:
- Языки — JavaScript, TypeScript, Rust, Python, C, C++
- Cold start — 0ms (V8 изоляты)
- Лимиты — 10ms CPU time (бесплатный), 50ms (платный)
- Сеть — 300+ локаций по всему миру
- Цены — бесплатный план с лимитами, платные тарифы
- Интеграции — KV, Durable Objects, R2, D1
Пример Cloudflare Worker
// worker.js
export default {
async fetch(request, env) {
const url = new URL(request.url);
// Простой API endpoint
if (url.pathname === '/api/hello') {
return new Response(JSON.stringify({
message: 'Hello from Cloudflare Workers!',
location: request.cf?.country || 'Unknown',
timestamp: new Date().toISOString()
}), {
headers: {
'Content-Type': 'application/json',
'Access-Control-Allow-Origin': '*'
}
});
}
// Обработка POST запроса
if (url.pathname === '/api/users' && request.method === 'POST') {
const data = await request.json();
// Сохранение в KV (Cloudflare Key-Value store)
await env.MY_KV.put(`user:${data.id}`, JSON.stringify(data));
return new Response(JSON.stringify({
success: true,
id: data.id
}), {
headers: { 'Content-Type': 'application/json' }
});
}
// Получение из KV
if (url.pathname.startsWith('/api/users/')) {
const userId = url.pathname.split('/').pop();
const user = await env.MY_KV.get(`user:${userId}`);
if (!user) {
return new Response(JSON.stringify({ error: 'User not found' }), {
status: 404,
headers: { 'Content-Type': 'application/json' }
});
}
return new Response(user, {
headers: { 'Content-Type': 'application/json' }
});
}
return new Response('Not Found', { status: 404 });
}
};
// wrangler.toml (конфигурация)
// name = "my-api"
// main = "worker.js"
// compatibility_date = "2025-11-20"
//
// [kv_namespaces]
// binding = "MY_KV"
// id = "your-kv-namespace-id"
Деплой Cloudflare Worker
# Установка Wrangler CLI
npm install -g wrangler
# Логин в Cloudflare
wrangler login
# Деплой
wrangler deploy
# Локальная разработка
wrangler dev
Vercel Edge Functions 🚀
Vercel Edge Functions — это serverless функции, которые выполняются на edge серверах Vercel. Они используют Web API стандарты (Request/Response) и выполняются на V8 изолятах, обеспечивая быстрый старт.
Характеристики Vercel Edge Functions:
- Языки — JavaScript, TypeScript
- Cold start — 0ms (V8 изоляты)
- Лимиты — 25ms CPU time (Hobby), 50ms (Pro)
- Интеграция — Next.js, SvelteKit, другие фреймворки
- Сеть — глобальная сеть Vercel
- Цены — бесплатный план с лимитами
Пример Vercel Edge Function (Next.js)
// app/api/hello/route.js (Next.js App Router)
export const runtime = 'edge'; // Важно: указываем edge runtime
export async function GET(request) {
const { searchParams } = new URL(request.url);
const name = searchParams.get('name') || 'World';
return new Response(
JSON.stringify({
message: `Hello, ${name}!`,
timestamp: new Date().toISOString(),
runtime: 'edge'
}),
{
status: 200,
headers: {
'Content-Type': 'application/json',
'Cache-Control': 'public, s-maxage=60, stale-while-revalidate=300'
}
}
);
}
export async function POST(request) {
const data = await request.json();
// Обработка данных
const result = {
success: true,
received: data,
processed: new Date().toISOString()
};
return new Response(JSON.stringify(result), {
status: 200,
headers: {
'Content-Type': 'application/json'
}
});
}
// pages/api/users.js (Pages Router)
export const config = {
runtime: 'edge'
};
export default async function handler(req) {
if (req.method === 'GET') {
return new Response(
JSON.stringify({
users: [
{ id: 1, name: 'John' },
{ id: 2, name: 'Jane' }
]
}),
{
headers: { 'Content-Type': 'application/json' }
}
);
}
return new Response('Method not allowed', { status: 405 });
}
Деплой Vercel Edge Function
# Установка Vercel CLI
npm install -g vercel
# Деплой
vercel
# Локальная разработка
vercel dev
AWS Lambda@Edge 🔷
AWS Lambda@Edge — это расширение AWS Lambda, которое позволяет выполнять функции на edge локациях CloudFront. Lambda@Edge работает в четырех точках: viewer request, origin request, origin response, viewer response.
Характеристики AWS Lambda@Edge:
- Языки — Node.js, Python
- Cold start — может быть заметным
- Лимиты — 5 секунд (viewer), 30 секунд (origin)
- Размер кода — до 1 MB (viewer), до 50 MB (origin)
- Сеть — CloudFront edge локации
- Цены — платные, зависят от использования
Пример AWS Lambda@Edge
// lambda-edge.js
exports.handler = async (event) => {
const request = event.Records[0].cf.request;
const headers = request.headers;
// Viewer Request - обработка запроса от пользователя
if (event.Records[0].cf.config.eventType === 'viewer-request') {
// Добавление кастомного заголовка
headers['x-custom-header'] = [{
key: 'X-Custom-Header',
value: 'Hello from Lambda@Edge!'
}];
// Редирект на основе геолокации
const country = headers['cloudfront-viewer-country'];
if (country && country[0].value === 'RU') {
return {
status: '302',
statusDescription: 'Found',
headers: {
location: [{
key: 'Location',
value: 'https://ru.example.com'
}]
}
};
}
}
// Origin Request - обработка перед запросом к origin
if (event.Records[0].cf.config.eventType === 'origin-request') {
// Модификация запроса
request.uri = request.uri.replace('/api/', '/v1/api/');
}
// Origin Response - обработка ответа от origin
if (event.Records[0].cf.config.eventType === 'origin-response') {
const response = event.Records[0].cf.response;
// Добавление CORS заголовков
response.headers['access-control-allow-origin'] = [{
key: 'Access-Control-Allow-Origin',
value: '*'
}];
// Кэширование
response.headers['cache-control'] = [{
key: 'Cache-Control',
value: 'public, max-age=3600'
}];
}
return request;
};
// Деплой через AWS SAM или Serverless Framework
// serverless.yml
// service: my-edge-api
// provider:
// name: aws
// runtime: nodejs18.x
// functions:
// edgeFunction:
// handler: lambda-edge.handler
// events:
// - cloudFront:
// eventType: viewer-request
// pathPattern: '*'
Сравнение платформ 📊
| Критерий | Cloudflare Workers | Vercel Edge | AWS Lambda@Edge |
|---|---|---|---|
| Языки | JS, TS, Rust, Python, C, C++ | JavaScript, TypeScript | Node.js, Python |
| Cold Start | ✅ 0ms | ✅ 0ms | ⚠️ Может быть заметным |
| CPU Time Limit | 10ms (free), 50ms (paid) | 25ms (Hobby), 50ms (Pro) | 5s (viewer), 30s (origin) |
| Размер кода | 1 MB (free), 10 MB (paid) | 4 MB | 1 MB (viewer), 50 MB (origin) |
| Сеть | 300+ локаций | Глобальная сеть Vercel | CloudFront edge локации |
| Цены | Бесплатный план | Бесплатный план | Платные |
| Интеграции | KV, Durable Objects, R2, D1 | Next.js, SvelteKit | AWS сервисы |
| Лучше для | Универсальные edge API | Next.js приложения | AWS инфраструктура |
Преимущества Edge API 🎯
✅ Ключевые преимущества:
- Низкая задержка — выполнение близко к пользователям (10-50ms вместо 100-300ms)
- Глобальное масштабирование — автоматическое распределение по локациям
- Высокая доступность — отказоустойчивость благодаря множеству локаций
- Снижение нагрузки — обработка запросов на edge, меньше запросов к origin
- Улучшенный UX — быстрые ответы для всех пользователей
- Минимальный cold start — 0ms для Workers и Vercel Edge
- Кэширование — возможность кэшировать на edge
Use Cases для Edge API
✅ Edge API идеален для:
- Аутентификация и авторизация — проверка токенов на edge
- Геолокация и персонализация — контент на основе локации
- A/B тестирование — маршрутизация на edge
- Кэширование и оптимизация — кэширование ответов на edge
- Редиректы и маршрутизация — умная маршрутизация запросов
- Модификация заголовков — добавление/изменение заголовков
- Валидация запросов — проверка данных на edge
- Rate limiting — ограничение запросов на edge
Best Practices 📚
✅ Рекомендации для Edge API:
- Минимизируйте зависимости — меньше зависимостей = быстрее старт
- Используйте кэширование — кэшируйте статические данные
- Оптимизируйте размер кода — меньше код = быстрее деплой
- Обрабатывайте ошибки — правильная обработка ошибок на edge
- Используйте подходящие лимиты — учитывайте CPU time limits
- Мониторьте производительность — отслеживайте метрики
- Тестируйте локально — используйте локальные инструменты
- Используйте переменные окружения — для конфигурации
Ограничения Edge API
⚠️ Важные ограничения:
- CPU Time Limits — ограниченное время выполнения
- Размер кода — ограничения на размер функций
- Нет файловой системы — только память
- Ограниченные зависимости — не все библиотеки доступны
- Нет долгих операций — не подходит для тяжелых вычислений
- Ограниченный доступ к БД — нужны специальные решения
Когда использовать Edge API?
💡 Рекомендации:
- Используйте Edge API — когда важна низкая задержка, глобальная аудитория, простая логика
- Не используйте Edge API — для тяжелых вычислений, долгих операций, сложной бизнес-логики
- Гибридный подход — Edge для простых операций, origin для сложных
Заключение
Edge API — это мощный инструмент для создания быстрых и масштабируемых API. Cloudflare Workers, Vercel Edge Functions и AWS Lambda@Edge предоставляют различные возможности для разных сценариев использования.
💡 Ключевые выводы:
- Edge API обеспечивает низкую задержку и глобальное масштабирование
- Cloudflare Workers — универсальный выбор с поддержкой множества языков
- Vercel Edge Functions — идеальны для Next.js приложений
- AWS Lambda@Edge — для существующей AWS инфраструктуры
- Все платформы имеют 0ms cold start (кроме Lambda@Edge)
- Важно учитывать ограничения CPU time и размера кода
- Edge API лучше для простых операций, origin для сложных
Создайте Mock API для тестирования Edge интеграций за 2 минуты
Хотите протестировать Edge API интеграцию? Создайте Mock API с помощью LightBox API и протестируйте вашу логику без необходимости настраивать сложную инфраструктуру.
Попробовать бесплатно →