Cloudflare a fondo: la plataforma para desarrolladores explicada servicio a servicio

El mapa de Cloudflare servicio a servicio: Workers, almacenamiento (R2, D1, KV, Durable Objects), Queues, Workflows, Hyperdrive, Containers, IA (Workers AI, Vectorize, AI Gateway), medios, correo y la red: DNS, caché, WAF, Turnstile, Tunnel y Zero Trust. Con enlaces a 24 artículos a fondo.

Portada: Cloudflare a fondo: la plataforma para desarrolladores explicada servicio a servicio

Cloudflare empezó siendo la empresa que se ponía delante de tu web para hacerla más rápida y protegerla de ataques. Hoy, además, es una plataforma completa para construir aplicaciones: ejecutas código en más de 300 ciudades, guardas ficheros, bases de datos SQL, datos clave-valor y estado con coordinación, encolas trabajo, orquestas procesos largos y ejecutas modelos de IA, todo sin gestionar un solo servidor.

El problema es que son muchas piezas con nombres poco descriptivos (¿qué es un Durable Object? ¿en qué se diferencia KV de D1? ¿Pages o Workers?) y cada una tiene su propio modelo de precios. Este artículo es el mapa: qué hace cada servicio, cuándo usarlo y cuándo no, cómo se combinan y qué incluyen los dos planes. Cada servicio importante tiene después su propio artículo a fondo, con código probado.

Si vienes de servidores tradicionales (Express, Fastify, Coolify en un VPS), la idea clave es esta: en Cloudflare no despliegas un servidor, despliegas funciones que se ejecutan donde está el usuario, y cada recurso (una base de datos, un bucket, una cola) se conecta a tu código mediante un binding.

🧪
Todo lo que cuento en esta serie está comprobado en la documentación oficial de Cloudflare entre el 2 y el 3 de octubre de 2026. El código de los artículos individuales se ha ejecutado en local con Wrangler 4.147.0 y Node.js 24.21.0, sin cuenta, siempre que ha sido posible. Donde no (Workers AI, Vectorize y AI Gateway no tienen simulación local; Containers, solo en parte), cada artículo dice exactamente qué se probó y cómo. Precios en dólares; pueden cambiar.

La serie

La serie tiene 24 artículos a fondo en tres bloques. Este es el índice.

Construir aplicaciones

ArtículoDe qué trata
Cloudflare Workers a fondoEl runtime: isolates, bindings, ficheros estáticos, crons, caché, tests y despliegue
Cloudflare Pages a fondoSitios estáticos con Functions, y la migración a Workers
Cloudflare R2 a fondoAlmacenamiento de objetos compatible con S3 sin coste de salida
Cloudflare D1 a fondoSQLite gestionado, migraciones y réplicas de lectura
Cloudflare Workers KV a fondoClave-valor global para datos que se leen mucho
Cloudflare Durable Objects a fondoEstado con coordinación, WebSockets y SQLite por objeto
Cloudflare Queues a fondoColas de mensajes con reintentos y cola de fallidos
Cloudflare Workflows a fondoProcesos largos por pasos que sobreviven a fallos y esperas
Cloudflare Hyperdrive a fondoTu PostgreSQL o MySQL de siempre, rápido desde Workers
Cloudflare Containers a fondoContenedores Docker controlados desde un Worker
Cloudflare Browser Run a fondoChrome sin servidor para capturas, PDF y scraping
Cloudflare Images a fondoRedimensionar y convertir imágenes al vuelo
Cloudflare Stream a fondoSubir, codificar y reproducir vídeo, también en directo
Cloudflare Email a fondoEmail Routing, Email Workers y envío de correo
Planes de Cloudflare Workers: Free frente a PaidQué incluye cada plan y cómo se calcula la factura

Inteligencia artificial

ArtículoDe qué trata
Cloudflare Workers AI a fondoModelos abiertos en GPUs de Cloudflare, facturados en neuronas
Cloudflare Vectorize a fondoBase de datos vectorial y un RAG completo
Cloudflare AI Gateway a fondoLogs, caché, límites y facturación para tus llamadas a modelos

Red y seguridad

ArtículoDe qué trata
Cloudflare DNS a fondoNube naranja, TTL, CNAME flattening, DNSSEC y migraciones
Cloudflare CDN y caché a fondoQué se cachea, Cache Rules, Tiered Cache, Cache Reserve y purgas
Cloudflare WAF y protección DDoS a fondoDDoS, reglas del WAF, rate limiting y bots
Cloudflare Turnstile a fondoLa alternativa al CAPTCHA y cómo validar el token
Cloudflare Tunnel a fondoPublicar servicios de tu red sin abrir puertos
Cloudflare Zero Trust a fondoAccess, Gateway y el cliente Cloudflare One (WARP)

La idea central: Workers y bindings

Todo gira alrededor de Workers. Un Worker es tu código (JavaScript, TypeScript, Python o WebAssembly) ejecutándose en un isolate de V8, el mismo mecanismo que separa las pestañas de Chrome. Un isolate arranca en milisegundos y consume muy poca memoria, así que Cloudflare puede tener tu código listo en todos sus centros de datos y ejecutarlo en el más cercano a cada usuario, sin arranques en frío apreciables.

El resto de servicios se conectan a un Worker como bindings: los declaras en wrangler.jsonc y aparecen como objetos en env, sin credenciales, sin URLs y sin SDK:

{
  "name": "mi-app",
  "main": "src/index.ts",
  "compatibility_date": "2026-10-01",
  "assets": { "directory": "./public" },                                    // ficheros estáticos
  "r2_buckets": [{ "binding": "ARCHIVOS", "bucket_name": "mis-archivos" }], // R2
  "d1_databases": [{ "binding": "DB", "database_name": "app-db" }],         // D1
  "kv_namespaces": [{ "binding": "CONFIG" }],                                // KV
  "durable_objects": { "bindings": [{ "name": "SALAS", "class_name": "Sala" }] },
  "migrations": [{ "tag": "v1", "new_sqlite_classes": ["Sala"] }],
  "queues": { "producers": [{ "binding": "PEDIDOS", "queue": "pedidos" }] }, // Queues
  "ai": { "binding": "AI" }                                                  // Workers AI
}
export default {
  async fetch(request, env, ctx): Promise<Response> {
    const fichero = await env.ARCHIVOS.get("logo.png");                 // R2
    const fila = await env.DB.prepare("SELECT 1 AS ok").first();         // D1
    const flag = await env.CONFIG.get("modo-oscuro");                    // KV
    await env.PEDIDOS.send({ id: 42 });                                  // Queues
    // ...
  },
} satisfies ExportedHandler<Env>;

Fíjate en que en D1 y KV no hay ids: Wrangler 4 crea los recursos que faltan en el primer wrangler deploy y anota sus ids. Y npx wrangler types genera el tipo Env a partir de este fichero, así que env.DB llega tipado en el editor.

Mapa de la plataforma de Cloudflare: un Worker en el centro con bindings hacia ficheros estáticos, R2, D1, KV, Durable Objects, Queues, Workflows, Hyperdrive, Workers AI y Vectorize
El Worker en el centro y cada servicio conectado como binding. Diagrama: devutilites.

Los servicios, uno a uno

Workers: el código

Funciones que responden a peticiones HTTP (fetch), a horarios (scheduled, con Cron Triggers), a mensajes de colas (queue) y a otros eventos. Pueden servir ficheros estáticos (gratis e ilimitados) y hablar entre sí con service bindings sin coste extra. En el plan gratuito, cada invocación tiene 10 ms de CPU; en Paid, 30 segundos por defecto y hasta 5 minutos. Lo que esperas a otros servicios no cuenta como CPU.

Úsalo para: APIs, webs completas (estáticos más API), middleware delante de tu web, webhooks, tareas programadas. Más: Cloudflare Workers a fondo.

Pages: sitios estáticos (el modelo anterior)

El servicio clásico para publicar webs estáticas desde Git con previsualizaciones por rama y Pages Functions para lo dinámico. Cloudflare recomienda empezar los proyectos nuevos con Workers, que ya sirven estáticos igual de bien y tienen más funciones (cron, colas, logs, despliegues graduales). Pages sigue siendo válido para lo que ya está desplegado. Más: Cloudflare Pages a fondo.

R2: ficheros

Almacenamiento de objetos compatible con la API de S3 y sin coste de transferencia de salida. Pagas por GB guardado y por operaciones. Se usa desde un Worker con el binding, desde cualquier sitio con la API de S3 o públicamente con un dominio propio.

Úsalo para: subidas de usuarios, imágenes, vídeos, descargas, copias de seguridad. Más: Cloudflare R2 a fondo.

D1: base de datos SQL

SQLite gestionado. SQL de verdad (JOIN, índices, transacciones con batch), migraciones con Wrangler, copias de seguridad automáticas de 30 días (Time Travel) y réplicas de lectura opcionales. Cada base de datos tiene un máximo de 10 GB y procesa las consultas de una en una; está pensado para escalar con muchas bases de datos (una por cliente, por ejemplo). Se cobra por filas leídas y escritas.

Úsalo para: el modelo de datos relacional de una aplicación. Más: Cloudflare D1 a fondo.

Workers KV: clave-valor global

Un almacén clave-valor que guarda los datos en unos pocos sitios centrales y los cachea en todo el mundo según se leen. Lecturas rapidísimas, pero consistencia eventual: un cambio puede tardar 60 segundos o más en verse en otros lugares, y solo admite una escritura por segundo por clave.

Úsalo para: configuración, feature flags, redirecciones, sesiones, caché. No para: contadores o datos que cambian a menudo. Más: Cloudflare Workers KV a fondo.

Durable Objects: estado con coordinación

Instancias de una clase tuya, con nombre, que existen una sola vez en el mundo, procesan las peticiones de una en una y tienen su propia base de datos SQLite. Todas las peticiones a "la sala general" llegan al mismo objeto. Admiten WebSockets con hibernación (no pagas mientras nadie escribe) y alarmas.

Úsalo para: chats, colaboración en tiempo real, contadores exactos, límites de peticiones, partidas, una base de datos por usuario. Más: Cloudflare Durable Objects a fondo.

Queues: trabajo en segundo plano

Colas de mensajes: un Worker envía mensajes y otro los procesa por lotes, con reintentos, espera configurable y cola de mensajes fallidos. Entrega al menos una vez y sin orden garantizado. Se cobra por operación (3 por mensaje).

Úsalo para: correos, webhooks salientes, procesado de ficheros, cualquier cosa que no deba hacer esperar al usuario. Más: Cloudflare Queues a fondo.

Workflows: procesos de varios pasos

Ejecución duradera de procesos largos divididos en pasos: cada paso se reintenta por separado, el estado se guarda entre pasos y el proceso puede esperar minutos, horas o semanas (por ejemplo, a que alguien apruebe algo). Disponible en los dos planes. Úsalo cuando una cola se queda corta porque el trabajo tiene varios pasos con estado: altas de usuarios con correos programados, pipelines de datos, procesos con aprobación humana. Más: Cloudflare Workflows a fondo.

Hyperdrive: tu base de datos de siempre

Si ya tienes PostgreSQL o MySQL (en AWS, Google Cloud, Neon, PlanetScale o tu propio servidor), Hyperdrive lo hace rápido desde Workers: mantiene un pool de conexiones cerca de tu base de datos y cachea las consultas de lectura. Usas el driver de siempre (pg, postgres, mysql2) con la cadena de conexión que te da el binding. Gratis hasta 100.000 consultas al día; ilimitado en Paid. Hasta ~20 conexiones a tu base de datos por configuración en Free y ~100 en Paid.

Úsalo cuando tus datos no quepan en D1 (más de 10 GB), necesites PostgreSQL o estés migrando una aplicación existente. Más: Cloudflare Hyperdrive a fondo.

Workers AI y Vectorize: IA sin GPUs propias

Workers AI ejecuta modelos abiertos (texto, imágenes, voz, embeddings) en las GPUs de Cloudflare con un binding: await env.AI.run(modelo, entrada). Se cobra en neuronas: 10.000 al día gratis y, por encima, 0,011 $ por cada 1.000 (necesitas Paid para pasar de la cantidad gratuita). Vectorize es una base de datos vectorial para guardar embeddings y buscar por similitud: la pieza que necesitas para búsqueda semántica o RAG, con hasta 1.536 dimensiones por vector.

AI Gateway se pone entre tu aplicación y cualquier modelo (de Workers AI o de OpenAI, Anthropic, Google…) y añade logs con tokens y coste, analíticas, caché de respuestas idénticas, límites de velocidad y facturación unificada; sus funciones básicas son gratis.

Úsalos para: asistentes y chats, resúmenes y clasificación, búsqueda semántica y RAG sobre tus documentos. Más: Cloudflare Workers AI a fondo, Cloudflare Vectorize a fondo y Cloudflare AI Gateway a fondo.

Containers: cuando un Worker no basta

Contenedores Docker normales (linux/amd64) controlados desde un Worker: cada contenedor va unido a un Durable Object que lo arranca bajo demanda, le pasa las peticiones y lo duerme cuando se queda quieto. El disco es efímero y se paga cada 10 ms en marcha. Solo en Workers Paid.

Úsalo para: binarios nativos (FFmpeg, LibreOffice), lenguajes que no compilan a WebAssembly, sandboxes por usuario. Más: Cloudflare Containers a fondo.

Browser Run, Images y Stream: navegador, imágenes y vídeo

Browser Run (antes Browser Rendering) es un Chrome sin cabeza en la red de Cloudflare, con endpoints listos (captura, PDF, Markdown) o control completo con Puppeteer. Images redimensiona y convierte imágenes al vuelo (por URL, en un Worker o con un binding) y puede guardarlas. Stream codifica, almacena y sirve vídeo con streaming adaptativo y directos, y se paga por minutos.

Más: Cloudflare Browser Run a fondo, Cloudflare Images a fondo y Cloudflare Stream a fondo.

Email: recibir y enviar correo

Email Routing recibe el correo de tu dominio y lo reenvía, lo descarta o se lo pasa a un Email Worker, que puede leerlo, rechazarlo o responder. Con el binding send_email también se envía desde un Worker. El correo entrante es gratis e ilimitado. Más: Cloudflare Email a fondo.

La otra mitad: red y seguridad

Todo lo anterior es la plataforma para desarrolladores. Pero Cloudflare nació como proxy inverso: si tu dominio usa sus servidores de nombres y un registro tiene la nube naranja, cada petición a tu web pasa por su red, sea un Worker o tu propio servidor. Ahí actúan el resto de servicios.

DNS

El punto de partida: Cloudflare como DNS autoritativo de tu dominio, gratis. Cada registro puede ir con proxy (el visitante ve IPs de Cloudflare y pasa por caché y WAF) o solo DNS. Más: Cloudflare DNS a fondo.

CDN y caché

Los ficheros estáticos se cachean en el centro de datos más cercano al visitante; el HTML, no, salvo que lo pidas con Cache Rules. Tiered Cache (gratis) hace que solo unos pocos centros hablen con tu origen, y Cache Reserve (de pago) guarda copias persistentes sobre R2. Más: Cloudflare CDN y caché a fondo.

WAF, DDoS y Turnstile

La mitigación de DDoS es automática y sin límite en todos los planes. El WAF añade reglas personalizadas, reglas gestionadas y rate limiting (y un binding de rate limiting para usarlo desde un Worker). Turnstile sustituye al CAPTCHA en tus formularios, gratis. Más: Cloudflare WAF y protección DDoS a fondo y Cloudflare Turnstile a fondo.

Tunnel y Zero Trust

Tunnel publica servicios de tu red (un NAS, un homelab, una API interna) sin abrir puertos: cloudflared abre conexiones salientes y Cloudflare entrega las peticiones por ellas. Zero Trust añade Access (quién puede entrar a cada aplicación, con identidad y dispositivo), Gateway (filtrado del tráfico de tus usuarios hacia internet) y el cliente Cloudflare One, antes WARP; gratis hasta 50 usuarios. Más: Cloudflare Tunnel a fondo y Cloudflare Zero Trust a fondo.

Y más

Quedan piezas sin artículo propio: Analytics Engine (métricas propias con consultas SQL), Workers Logs y la observabilidad en general, Pipelines, Secrets Store, Load Balancing, Spectrum, Registrar... La documentación oficial es el sitio para seguir.

Cómo elegir dónde guardar los datos

Necesitas guardar...UsaPor qué
Ficheros (imágenes, PDF, vídeos, copias)R2Objetos grandes, salida gratis, API de S3
Datos relacionales que consultas por camposD1SQL, índices, transacciones
Configuración, flags, sesiones, cachéKVLecturas globales rapidísimas; cambios poco frecuentes
Estado que muchos modifican a la vezDurable ObjectsUn solo hilo por objeto, consistencia fuerte
Un PostgreSQL o MySQL existenteHyperdriveConexiones rápidas y caché sin migrar datos
Embeddings para búsqueda semánticaVectorizeBúsqueda por similitud
Trabajo pendiente de hacerQueues (o Workflows)Durabilidad y reintentos
Respuestas que se repiten (páginas, API públicas)Caché de la CDN (o la Cache API)Se sirven sin llegar a tu código ni a tu origen

Una regla rápida: si la pregunta es "¿qué fichero?", R2; "¿qué filas cumplen esto?", D1; "¿qué valor tiene esta clave?" leída millones de veces, KV; "¿quién llegó primero?", Durable Objects.

Resumen de servicios y capa gratuita

ServicioQué esGratis (Workers Free)Workers Paid incluye
WorkersCódigo en el borde100.000 peticiones al día, 10 ms de CPU10 M de peticiones y 30 M de ms de CPU al mes
Ficheros estáticosAssets de Workers y PagesIlimitadosIlimitados
KVClave-valor global100.000 lecturas y 1.000 escrituras al día, 1 GB10 M de lecturas, 1 M de escrituras, 1 GB
D1SQLite gestionado5 M de filas leídas y 100.000 escritas al día, 5 GB25.000 M leídas, 50 M escritas, 5 GB
Durable ObjectsEstado con coordinación100.000 peticiones y 13.000 GB-s al día (solo SQLite)1 M de peticiones, 400.000 GB-s
QueuesColas de mensajes10.000 operaciones al día1 M de operaciones
HyperdriveConexión a tu PostgreSQL/MySQL100.000 consultas al díaIlimitadas
Workers AIModelos de IA10.000 neuronas al día10.000 neuronas al día, y pago por uso
WorkflowsProcesos duraderos3.000 pasos al día500.000 pasos
ContainersContenedores DockerNo disponible25 GiB-h de memoria, 375 vCPU-min y 200 GB-h de disco al mes
VectorizeBase de datos vectorial30 M de dimensiones consultadas al mes, 5 M almacenadas50 M consultadas, 10 M almacenadas
AI GatewayProxy para modelos de IAFunciones básicas gratisFunciones básicas gratis; Logpush
Browser RunChrome sin servidor10 minutos de navegador al día10 horas al mes
Email RoutingCorreo entrante y Email WorkersIlimitadoIlimitado, y 3.000 envíos al mes a cualquier destinatario
R2 (va aparte)Objetos compatibles con S310 GB, 1 M de clase A, 10 M de clase B al mesIgual: R2 se factura aparte
Images (va aparte)Transformación de imágenes5.000 transformaciones únicas al mesPlan de Images de pago
Stream (va aparte)Vídeo—5 $ por 1.000 minutos guardados, 1 $ por 1.000 vistos

Y la red, que no depende del plan de Workers sino del plan de tu dominio (Free, Pro, Business, Enterprise) o de Zero Trust:

ServicioQué esEn el plan gratuito
DNSDNS autoritativo con proxy opcionalIncluido, con DNSSEC
CDN y cachéCaché en todo el mundoIncluida, con Tiered Cache Smart; Cache Reserve es de pago
WAF y DDoSSeguridad delante del origenDDoS sin límite, Free Managed Ruleset, 1 regla de rate limiting
TurnstileAlternativa al CAPTCHAGratis, hasta 20 widgets
TunnelPublicar sin abrir puertosIncluido
Zero TrustAccess, Gateway, Cloudflare OneHasta 50 usuarios

Los planes: Workers Free y Workers Paid

Workers Free es el plan por defecto y no pide tarjeta. Sus límites son diarios (se reinician a las 00:00 UTC) y funcionan como un muro: al superarlos, las peticiones fallan hasta el día siguiente, así que nunca te llevarás una factura sorpresa. El más restrictivo suele ser el de 10 ms de CPU por invocación, no el de peticiones.

Workers Paid cuesta 5 dólares al mes como mínimo por cuenta e incluye cantidades mensuales de Workers, KV, D1, Durable Objects, Queues y Hyperdrive; por encima, se paga por uso a precios bajos (0,30 $ por millón de peticiones, 0,02 $ por millón de ms de CPU). Además sube los límites: CPU de hasta 5 minutos, 10.000 subpeticiones, 500 Workers, 250 crons, y desbloquea Containers y Logpush.

Dos ejemplos de la documentación oficial: un Worker con 15 millones de peticiones al mes y 7 ms de CPU de media cuesta 8 dólares; con 100 millones, 45,40 dólares. Todos los detalles, servicio por servicio y con una calculadora, en Planes de Cloudflare Workers: Free frente a Paid.

Cómo se trabaja: Wrangler

La herramienta para todo es Wrangler, la CLI de Cloudflare:

npm create cloudflare@latest -- mi-app     # crea un proyecto (plantillas, frameworks)
npx wrangler dev                           # desarrollo local con todos los bindings simulados
npx wrangler types                         # genera los tipos de env
npx vitest                                 # tests dentro del runtime real (workerd)
npx wrangler deploy                        # despliega (y crea los recursos que falten)
npx wrangler tail                          # logs en directo de producción

Lo mejor de este flujo es el desarrollo local: wrangler dev ejecuta tu código en workerd (el mismo runtime que producción, de código abierto) y simula KV, D1, R2, Durable Objects y Queues en tu máquina, con los datos en .wrangler/state. Casi todo el código de esta serie se ha probado así, sin cuenta de Cloudflare; las excepciones son Workers AI, Vectorize y AI Gateway, que siempre se ejecutan en remoto, y la red de Containers. Cuando quieras usar un recurso real desde local, marca el binding con "remote": true.

Errores comunes (y cómo evitarlos)

  • Pensar en servidores. No hay proceso que viva entre peticiones ni memoria compartida fiable. El estado va en KV, D1, R2 o Durable Objects.
  • Usar KV como base de datos. Es eventual y no tiene consultas. Para datos que cambian o se consultan por campos, D1.
  • Un Durable Object para todo. Un objeto es un hilo. Parte por usuario, sala o documento.
  • Empezar en Pages un proyecto nuevo. Cloudflare recomienda Workers con static assets: el mismo servicio gratuito, más funciones.
  • Olvidar que R2 va aparte del plan de Workers y requiere activar su suscripción.
  • Ignorar los 10 ms de CPU del plan gratuito hasta que la aplicación ya está hecha. Mide pronto.

Cuándo elegir Cloudflare (y cuándo no)

Encaja muy bien si tu aplicación es web (APIs, sitios, backends de aplicaciones móviles), tus usuarios están repartidos por el mundo, quieres pagar solo por lo que usas y no quieres mantener servidores. La capa gratuita es de las más generosas del mercado y el plan de pago empieza en 5 dólares.

No es lo adecuado si dependes de procesos de larga duración con mucha CPU y memoria (más de 128 MB por isolate), de librerías nativas que no funcionan en Workers (aunque Containers cubre parte de ese hueco), de bases de datos de cientos de GB sin un PostgreSQL detrás (Hyperdrive lo resuelve en parte) o si prefieres el control total de un VPS. Para eso, un servidor con Coolify o tu propio homelab siguen siendo opciones excelentes.

Sigue leyendo