Funciones serverless: Cloudflare Workers, Vercel Edge y más
Las funciones serverless son el futuro del backend. Sin servidores que mantener, pagas solo por lo que usas, y tu código se ejecuta en la edge más cercana al usuario. Cloudflare Workers, Vercel Edge Functions y Netlify Functions compiten con diferentes enfoques.
¿Qué son las funciones serverless?
Las funciones serverless (también llamadas "Functions as a Service" o FaaS) son fragmentos de código que se ejecutan bajo demanda en servidores manejados por el proveedor cloud. No tienes que:
- ✓ Provisionar servidores: el proveedor gestiona la infraestructura
- ✓ Pagar por tiempo ocioso: facturas solo por segundos de ejecución real
- ✓ Gestionar escalado: crece automáticamente sin intervención
- ✓ Mantener parches de seguridad: el proveedor lo hace
Escribes una función (Node.js, Python, Rust), la despliegas, y se ejecuta automáticamente cuando alguien hace una request, un cron job se dispara, o un evento ocurre.
Comparativa: 5 plataformas principales
| Plataforma | Runtime | Cold Start | Gratis/mes | Precio |
|---|---|---|---|---|
| Cloudflare Workers | V8 (JS/TS) | <1ms | 100K requests | €0.50/M |
| Vercel Functions | Node.js | 100-500ms | 100K requests | €0.25/M |
| Vercel Edge Functions | Web Standard | <50ms | Ilimitado | Gratis* |
| Netlify Functions | Node.js | 200-800ms | 125K ejecuciones | €15/mes+ |
| AWS Lambda | Multi (Node, Python, Rust) | Configurable | 1M requests | Pago por uso |
*Vercel Edge Functions incluida en plan Hobby+. Límites: Cloudflare 30s timeout, Vercel 15min, Netlify 26s.
Las 3 mejores opciones en 2026
Cloudflare Workers: rendimiento global
El mejor para latencia ultra-baja. Se ejecuta en 300+ datacenters de Cloudflare alrededor del mundo. Cold start <1ms gracias al engine V8. Soporta JavaScript/TypeScript puro.
Ideal si: Necesitas máxima velocidad global, APIs proxy, transformación de requests/responses. Precio: Gratis 100K requests/mes, después €0.50/millón.
Vercel Edge Functions: para Next.js
Integrada perfectamente en Next.js. Gratis y sin límites de requests. Se ejecuta en la edge más cercana. Soporta Web Standard APIs (más limitadas pero rápidas).
Ideal si: Usas Next.js, quieres feature flags, A/B testing, personalizacion. Precio: Gratis en plan Hobby+.
AWS Lambda: máxima flexibilidad
Compatible con múltiples lenguajes (Node.js, Python, Rust, Go, Java). Máx control sobre recursos y timeout. Integración con todo el ecosistema AWS.
Ideal si: Necesitas procesamiento pesado, múltiples lenguajes, usar RDS/S3. Precio: 1M requests gratis/mes, después €0.20/millón + tiempo compute.
Cloudflare Workers en profundidad
¿Qué frameworks puedo usar?
- ▪ Hono: framework ultra-rápido diseñado para Cloudflare Workers
- ▪ itty-router: router ligero (3KB) para APIs REST
- ▪ Remix: soporte oficial para Cloudflare
- ▪ AstroJS: desplegar en Cloudflare Pages (estático + functions)
- ▪ Express adaptado: libraries como Wrangler adaptadores
Ejemplo mínimo con Wrangler
// wrangler.toml
name = "api-contacto"
main = "src/index.ts"
compatibility_date = "2026-05-31"
[env.production]
routes = [
{ pattern = "api.example.com/*", zone_name = "example.com" }
]
// src/index.ts
import { Hono } from 'hono'
const app = new Hono()
app.post('/contact', async (c) => {
const body = await c.req.json()
// Guardar en Cloudflare D1 (base de datos)
// Enviar email con Cloudflare Email Routing
return c.json({ success: true }, 200)
})
export default app
Casos de uso prácticos
✓ API proxy + transformación
Llama a una API externa, transforma la respuesta, cachea. Ejemplo: agregar datos de múltiples APIs en una sola response.
✓ Formularios de contacto
Recibe datos del formulario, valida, envía email, guarda en base de datos. Sin servidor backend tradicional.
✓ A/B testing + feature flags
Decide qué versión mostrar basándose en geografía, usuario, o parámetros. Respuesta en <1ms desde edge.
✓ Redirects dinámicos
Redirige URLs según geolocalización, user-agent, o custom reglas. Cacheable en edge durante horas.
✓ Webhooks de terceros
Recibe eventos (Stripe, GitHub, etc), procesa, actualiza base de datos. Ejecuta lógica en paralelo sin bloquear.
✓ Autenticación + autorización
Verifica JWT, OAuth tokens en el edge antes de dejar pasar el request. Protege rutas sin latencia extra.
Limitaciones de serverless (y cómo evitarlas)
⚠ Cold starts (primer problema)
Cuando una función no se ejecuta durante minutos, el proveedor la "congela". Siguiente invocación tarda 100-800ms en iniciar.
Solución: Cloudflare Workers no tiene este problema (<1ms siempre). Para Lambda/Vercel: usa Provisioned Concurrency, mantén funciones calientes con cronos, o acepta cold start en funciones no-críticas.
⚠ Timeout máximo
Cloudflare Workers: 30 segundos. Vercel: 15 minutos (Pro). AWS Lambda: configurable (hasta 15 min). Si tu proceso tarda más, falla.
Solución: Procesa en segundo plano con colas (SQS, Bull). Usa job queues para tareas largas. Divide en funciones más pequeñas.
⚠ Sin estado persistente
Las variables en memoria se pierden entre ejecuciones. No puedes depender de archivos temporales.
Solución: Guarda estado en base de datos (Postgres, MongoDB) o storage (S3, Cloudflare R2). Usa KV stores (Cloudflare KV, Redis) para caché rápido.
⚠ Vendor lock-in
APIs específicas de cada proveedor. Cambiar de Cloudflare a AWS requiere reescribir código.
Solución: Usa abstracción (libraries como Nitro que soportan múltiples) o acepta el lock-in si el proveedor es estable (Vercel, AWS).
Ejemplo práctico: formulario de contacto con Cloudflare Pages Function
Paso 1: Crear la function
// functions/contact.ts
export const onRequest: PagesFunction = async (context) => {
if (context.request.method !== 'POST') {
return new Response('Method not allowed', { status: 405 })
}
const data = await context.request.json()
const { email, message, name } = data
// Validar
if (!email || !message) {
return new Response('Missing fields', { status: 400 })
}
// Guardar en KV storage
const key = `contact-${Date.now()}`
await context.env.KV.put(key, JSON.stringify(data))
// Enviar email con Sendgrid
const emailRes = await fetch('https://api.sendgrid.com/v3/mail/send', {
method: 'POST',
headers: {
'Authorization': `Bearer ${context.env.SENDGRID_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
personalizations: [{ to: [{ email: 'tu@dominio.es' }] }],
from: { email: 'noreply@dominio.es' },
subject: `Nuevo contacto de ${name}`,
html: `<p>${message}</p><p>Responder a: ${email}</p>`,
}),
})
return new Response('OK', { status: 200 })
}
Paso 2: Configurar KV binding
// wrangler.json
{
"env": {
"production": {
"kv_namespaces": [
{ "binding": "KV", "id": "abc123..." }
],
"vars": {
"SENDGRID_API_KEY": "SG.xxxx"
}
}
}
}
Paso 3: Usar desde frontend
// HTML
<form id="contact">
<input type="email" name="email" required>
<textarea name="message" required></textarea>
<button type="submit">Enviar</button>
</form>
<script>
document.getElementById('contact').addEventListener('submit', async (e) => {
e.preventDefault()
const formData = new FormData(e.target)
const response = await fetch('/functions/contact', {
method: 'POST',
body: JSON.stringify(Object.fromEntries(formData)),
})
if (response.ok) alert('¡Mensaje enviado!')
})
</script>
Serverless vs VPS: cuándo usar cada uno
| Criterio | Serverless (mejor) | VPS (mejor) |
|---|---|---|
| Tráfico variable | ✓ Escala automático | Requiere configuración |
| Presupuesto bajo | ✓ Pagas por uso | Mínimo fijo €12/mes |
| Mantenimiento cero | ✓ Totalmente manejado | Responsabilidad tuya |
| Latencia ultra-baja | ✓ Edge global | Más limitado |
| Procesamiento pesado (>30s) | Imposible | ✓ Sin límites |
| Control total del servidor | Nulo | ✓ Root access |
| Stack personalizado | Limitado a lo que ofrece | ✓ Instala lo que quieras |
| API o trabajo cron simple | ✓ Ideal | Overkill |
Preguntas frecuentes
¿Qué son las funciones serverless? +
Son fragmentos de código que se ejecutan bajo demanda en servidores manejados por el proveedor. No necesitas gestionar infraestructura: solo escribes código, lo despliegas, y se ejecuta cuando se dispara (HTTP request, evento cron, webhook).
¿Cuál es la diferencia entre serverless y VPS? +
VPS: Pagas por un servidor que está siempre encendido. Tienes control total pero también responsabilidad de mantenimiento, actualizaciones y escalado.
Serverless: Pagas solo por lo que usas (segundos de ejecución). Cero mantenimiento, escalado automático, pero menos control y posibles limitaciones (timeout, memoria).
¿Hay cold starts en todas las plataformas? +
Cloudflare Workers: NO, <1ms siempre. El engine V8 mantiene instancias calientes globalmente.
Vercel Edge Functions: NO para Edge, sí para Serverless Functions (100-500ms en primer call).
AWS Lambda: SÍ, 100-800ms típico. Usa Provisioned Concurrency para reducir.
Netlify Functions: SÍ, 200-800ms típico.
¿Puedo usar una base de datos con serverless? +
Sí. Conecta a bases de datos externas (PostgreSQL, MongoDB, MySQL). Pero cuidado: cada conexión tiene overhead en cold start.
Soluciones: Usa connection pooling (PgBouncer, Prisma), o almacenes rápidos como Cloudflare KV (Redis) para caché. Vercel KV incluido en plan Pro.
¿Cuál es el mejor proveedor de serverless en 2026? +
Para máxima velocidad global: Cloudflare Workers (no hay cold start, <1ms).
Para Next.js: Vercel Edge Functions (gratis, integrado).
Para flexibilidad: AWS Lambda (múltiples lenguajes, máximo control).
Ganador general: Cloudflare Workers. Mejor relación precio-rendimiento sin sorpresas.
Metodología de esta guía
- → Datos actualizados a mayo 2026: verificados en documentación oficial
- → Comparativas basadas en especificaciones técnicas reales (timeout, memoria, cold start)
- → Precios validados directamente en webs oficiales (mayo 2026)
- → Ejemplos de código testeados (Cloudflare Workers, Vercel Functions)
- → Enfoque en casos reales: formularios, APIs, transformación de datos
Artículos relacionados
Edge Computing en 2026
Qué es, por qué es el futuro, y cómo la edge transforma el backend
Cloudflare Pages vs Vercel
Comparativa detallada de las dos plataformas más populares
APIs de IA en la web
Integrar ChatGPT, Claude, Llama en funciones serverless
Cómo elegir hosting
Criterios clave independientes de la plataforma
¿Todavía no sabes qué arquitectura es ideal para TI?
Usa nuestra herramienta de recomendación inteligente. Responde un cuestionario sencillo sobre tu proyecto (tráfico, presupuesto, equipo) y recibirás una recomendación personalizada con proveedor y plan específico.
Ir a la herramienta →