spinny:~/writing $ vim serverless-aws-lambda-vercel-cloudflare.md
1~2La computacion serverless te permite ejecutar codigo sin gestionar servidores. Escribes funciones, las despliegas y la plataforma se encarga del escalado, la disponibilidad y la infraestructura. En 2026, tres plataformas dominan el panorama serverless: **AWS Lambda**, **Vercel Serverless Functions** y **Cloudflare Workers**. Cada una tiene diferentes fortalezas y compromisos.3~4En este articulo, las comparamos con ejemplos reales, consideraciones de rendimiento y desgloses de precios.5~6## Como funciona el Serverless7~8```mermaid9graph LR10 User -- "HTTP Request" --> Gateway[API Gateway / Edge]11 Gateway -- "Invoke" --> Function[Serverless Function]12 Function -- "Response" --> User13 Function -- "Read/Write" --> DB[(Database)]14```15~16Despliegas una funcion. Cuando llega una solicitud, la plataforma:171. Inicia un entorno de ejecucion (o reutiliza uno ya activo)182. Ejecuta tu funcion193. Devuelve la respuesta204. Escala a cero cuando esta inactiva (no pagas por tiempo de inactividad)21~22## Vision general de las plataformas23~24### AWS Lambda25~26La plataforma serverless original (lanzada en 2014). La mas madura y rica en funcionalidades, con integracion profunda en el ecosistema AWS.27~28```javascript29// AWS Lambda handler30export const handler = async (event) => {31 const body = JSON.parse(event.body);32~33 const result = await processData(body);34~35 return {36 statusCode: 200,37 headers: { 'Content-Type': 'application/json' },38 body: JSON.stringify(result),39 };40};41```42~43### Vercel Serverless Functions44~45Estrechamente integrado con Next.js y el flujo de trabajo de despliegue frontend. Las funciones se despliegan junto a tu frontend sin configuracion.46~47```typescript48// app/api/hello/route.ts (Next.js App Router)49import { NextResponse } from 'next/server';50~51export async function GET(request: Request) {52 const { searchParams } = new URL(request.url);53 const name = searchParams.get('name') || 'World';54~55 return NextResponse.json({ message: `Hello, ${name}!` });56}57```58~59### Cloudflare Workers60~61Se ejecuta en la red edge de Cloudflare en mas de 300 ciudades en todo el mundo. Usa el motor V8 (el mismo que Chrome) en lugar de Node.js, lo que significa cold starts extremadamente rapidos.62~63```javascript64// Cloudflare Worker65export default {66 async fetch(request, env) {67 const url = new URL(request.url);68 const name = url.searchParams.get('name') || 'World';69~70 return new Response(71 JSON.stringify({ message: `Hello, ${name}!` }),72 { headers: { 'Content-Type': 'application/json' } }73 );74 },75};76```77~78## Comparacion de caracteristicas79~80| Caracteristica | AWS Lambda | Vercel Functions | Cloudflare Workers |81|---------|-----------|-----------------|-------------------|82| **Runtime** | Node.js, Python, Go, Rust, Java, .NET | Node.js, Python, Go, Ruby | V8 Isolates (JS/TS, Rust via WASM) |83| **Tiempo maximo de ejecucion** | 15 minutos | 60s (Hobby), 300s (Pro) | 30s (gratis), 15min (pago) |84| **Memoria** | 128MB - 10GB | 1024MB - 3008MB | 128MB |85| **Cold start** | 100-500ms | 100-300ms | < 5ms |86| **Ubicacion de despliegue** | Region unica (o multi con esfuerzo) | Multiples regiones | 300+ ubicaciones edge |87| **Payload maximo** | 6MB (sincrono), 256KB (asincrono) | 4.5MB | 100MB |88| **Almacenamiento incluido** | No (usa DynamoDB, S3) | No (usa DB externa) | KV, D1 (SQLite), R2 (compatible con S3) |89| **Modelo de precios** | Por solicitud + duracion | Incluido en el plan | Por solicitud + duracion |90| **Nivel gratuito** | 1M solicitudes/mes | 100K/mes (Hobby) | 100K solicitudes/dia |91~92## Cold Starts93~94El cold start es el tiempo que toma inicializar una nueva instancia de funcion. Esta es la mayor preocupacion de rendimiento con serverless.95~96```mermaid97graph LR98 subgraph "Cold Start"99 A[Request] --> B[Provision Environment]100 B --> C[Load Code]101 C --> D[Initialize Runtime]102 D --> E[Execute Function]103 end104~105 subgraph "Warm Invocation"106 F[Request] --> G[Execute Function]107 end108```109~110| Plataforma | Cold Start Tipico | Por que |111|----------|-------------------|-----|112| **Cloudflare Workers** | < 5ms | Isolates V8, no se necesita runtime completo |113| **Vercel Functions** | 100-300ms | Runtime Node.js en edge o regional |114| **AWS Lambda** | 100-500ms | Inicializacion completa del contenedor |115| **AWS Lambda (Java)** | 1-5 segundos | Sobrecarga de inicio de JVM |116~117Cloudflare Workers gana en cold starts por un margen enorme porque usa isolates V8 en lugar de contenedores.118~119## Comparacion de precios120~121### Nivel gratuito122~123| Plataforma | Solicitudes gratuitas | Computo gratuito |124|----------|--------------|--------------|125| **AWS Lambda** | 1M/mes | 400,000 GB-segundos |126| **Vercel** | 100K/mes | Incluido en el plan Hobby |127| **Cloudflare Workers** | 100K/dia (~3M/mes) | 10ms CPU por invocacion |128~129### A escala (10M solicitudes/mes, duracion promedio de 50ms)130~131| Plataforma | Costo mensual estimado |132|----------|----------------------|133| **AWS Lambda** | ~$2.50 (solicitudes) + ~$4.15 (computo) = **~$6.65** |134| **Vercel** | **$20/mes** (plan Pro, incluye funciones) |135| **Cloudflare Workers** | **$5/mes** (plan de pago, incluye 10M solicitudes) |136~137Para la mayoria de los casos de uso, Cloudflare Workers es el mas economico. Los precios de Vercel son simples pero incluyen toda la plataforma (hosting, CDN, analytics). AWS Lambda tiene los precios mas granulares.138~139## Casos de uso reales140~141### AWS Lambda: Mejor para142~143- **Workflows backend complejos** - step functions, arquitecturas event-driven144- **Integracion con servicios AWS** - triggers de S3, streams de DynamoDB, colas SQS145- **Tareas de larga duracion** - hasta 15 minutos de tiempo de ejecucion146- **Equipos multi-lenguaje** - soporta la mas amplia gama de runtimes147~148```mermaid149graph TD150 S3[S3 Upload] --> Lambda1[Process Image]151 Lambda1 --> SQS[SQS Queue]152 SQS --> Lambda2[Generate Thumbnails]153 Lambda2 --> DDB[DynamoDB]154 DDB --> Lambda3[Send Notification]155 Lambda3 --> SNS[SNS / Email]156```157~158### Vercel Functions: Mejor para159~160- **Aplicaciones Next.js** - rutas API sin configuracion161- **Equipos orientados al frontend** - despliega frontend y backend juntos162- **Prototipado rapido** - git push para desplegar163- **Arquitecturas Jamstack** - frontend estatico + API serverless164~165```typescript166// app/api/subscribe/route.ts167import { NextResponse } from 'next/server';168~169export async function POST(request: Request) {170 const { email } = await request.json();171~172 // Validate173 if (!email || !email.includes('@')) {174 return NextResponse.json(175 { error: 'Invalid email' },176 { status: 400 }177 );178 }179~180 // Save to database181 await db.subscribers.create({ email });182~183 return NextResponse.json({ success: true });184}185```186~187### Cloudflare Workers: Mejor para188~189- **APIs de baja latencia** - el codigo se ejecuta en mas de 300 ubicaciones en todo el mundo190- **Edge computing** - transformar respuestas, pruebas A/B, personalizacion191- **APIs de alto volumen** - el mas economico a escala con generoso nivel gratuito192- **Aplicaciones globales** - datos cerca de los usuarios con KV y D1193~194```javascript195// Edge-side A/B test196export default {197 async fetch(request, env) {198 const url = new URL(request.url);199~200 // Assign user to variant201 const cookie = request.headers.get('Cookie') || '';202 let variant = cookie.includes('ab=b') ? 'b' : 'a';203~204 if (!cookie.includes('ab=')) {205 variant = Math.random() < 0.5 ? 'a' : 'b';206 }207~208 // Fetch the appropriate version209 const response = await fetch(`${url.origin}/variants/${variant}`);210 const newResponse = new Response(response.body, response);211~212 // Set cookie for consistent experience213 newResponse.headers.set('Set-Cookie', `ab=${variant}; Path=/; Max-Age=86400`);214~215 return newResponse;216 },217};218```219~220## Cuando elegir cual221~222### Elige AWS Lambda si:223- Ya estas invertido en el ecosistema AWS224- Necesitas funciones de larga duracion (hasta 15 minutos)225- Necesitas arquitecturas event-driven complejas226- Necesitas runtimes mas alla de JavaScript (Python, Go, Rust, Java)227~228### Elige Vercel Functions si:229- Estas desarrollando con Next.js o un framework frontend230- Quieres la experiencia de despliegue mas simple (git push)231- Tu equipo esta enfocado en el frontend232- Quieres hosting + funciones + CDN en una sola plataforma233~234### Elige Cloudflare Workers si:235- Necesitas la latencia mas baja posible a nivel global236- Quieres la opcion mas economica a escala237- Necesitas capacidades de edge computing238- El tiempo de cold start es critico para tu caso de uso239~240## Se pueden combinar?241~242Absolutamente. Una arquitectura comun:243~244```mermaid245graph TD246 User --> CF[Cloudflare Workers\nEdge caching, routing, A/B tests]247 CF --> Vercel[Vercel\nNext.js frontend + API routes]248 Vercel --> Lambda[AWS Lambda\nHeavy processing, background jobs]249 Lambda --> S3[S3 Storage]250 Lambda --> DB[(Database)]251```252~253- **Cloudflare Workers**: enrutamiento edge, caching, seguridad254- **Vercel Functions**: rutas API frontend, SSR255- **AWS Lambda**: procesamiento backend pesado, tareas programadas, pipelines de eventos256~257## Conclusion258~259El serverless ha madurado significativamente. En 2026, la eleccion entre AWS Lambda, Vercel Functions y Cloudflare Workers depende de tu stack y tus prioridades:260~261- **Experiencia de desarrollador mas simple**: Vercel262- **Mas potente y flexible**: AWS Lambda263- **Mejor rendimiento y precios**: Cloudflare Workers264~265Las tres estan listas para produccion y probadas en batalla. Comienza con la que se ajuste a tu stack actual y amplia a medida que tus necesidades crezcan.266~
NORMAL · serverless-aws-lambda-vercel-cloudflare.md [readonly]266 lines · :q to close