ADR 002: Cloudflare Workers como plataforma edge

Estado: Aceptado Fecha: 2025-03-15 Ultima actualizacion: 2026-02-26

Contexto

Necesitamos una plataforma backend para API gateway, BFF workers, servicio de assets estaticos, gestion de configuracion de versiones y funcionalidades WebSocket en tiempo real. La plataforma debe soportar computacion edge distribuida globalmente con minima carga operativa.

Decision

Usar Cloudflare Workers con el ecosistema completo: R2 (almacenamiento), KV (clave-valor), D1 (SQL), Durable Objects (coordinacion con estado) y service bindings (RPC entre Workers). Usar Wrangler v4 para desarrollo local y despliegue (Wrangler v3 llego a EOL en Q1 2026). Configurar compatibility_date = "2026-02-25" en todos los archivos de configuracion de wrangler.

Tarjeta de decision de Cloudflare Workers Cloudflare Workers Positivo 0ms cold start 300+ PoPs Service bindings Durable Objects Negativo No es Node.js Limite de 128MB Vendor lock-in

Consecuencias

Positivas

  • 0ms de cold start (V8 isolates, no contenedores)
  • Despliegue global en mas de 300 data centers
  • Service bindings: comunicacion entre Workers con latencia y coste cero
  • Durable Objects con Hibernatable WebSockets para tiempo real eficiente en coste; soporta mensajes WebSocket de hasta 32 MiB
  • R2 para almacenamiento de objetos compatible con S3 (bundles de MFE) sin costes de egress
  • KV para lecturas de configuracion distribuidas globalmente (cacheTtl minimo de 30s; soporta consistencia read-your-own-writes (RYOW) para escrituras seguidas de lecturas en el mismo nodo)
  • D1 para SQL (audit trail, historial de versiones) sin gestion de servidores -- GA desde abril 2024, limite de almacenamiento de 1TB por cuenta
  • El plan de pago de $5/mes cubre 10M de peticiones
  • CLI Wrangler v4 para desarrollo local y despliegue
  • El tiempo de CPU es configurable hasta 5 minutos via cpu_ms en wrangler.toml (por defecto 30ms en Workers Paid)

Negativas

  • El runtime de Workers NO es Node.js (superficie de API limitada, sin fs, sin modulos nativos)
  • Limite de 128MB de memoria por Worker
  • Vendor lock-in con el ecosistema de Cloudflare
  • Los Durable Objects tienen un limite de ~1000 req/sec por objeto
  • KV es eventualmente consistente (~250ms de latencia global p99; la cifra de <5ms frecuentemente citada aplica solo a cache hits internos de KVSP, no a la propagacion global)

Alternativas consideradas

  • AWS Lambda@Edge / CloudFront Functions: Ecosistema mas maduro pero con cold starts (100-500ms), mayor coste, IAM complejo, sin equivalente a Durable Objects ni service bindings.
  • Vercel Edge Functions: Buena DX pero limitada a la plataforma Vercel, sin equivalente a Durable Objects, R2 o D1. Menor control sobre la infraestructura.
  • Servidores tradicionales (Node.js en ECS/GKE): API completa de Node.js pero requiere gestionar servidores, escalado, balanceo de carga. Mayor carga operativa, mayor coste a escala.
  • Deno Deploy: Buena plataforma edge basada en V8 pero ecosistema mas reducido, primitivas de almacenamiento menos maduras, sin equivalente a Durable Objects.