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.
Contenido
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.
La serie
La serie tiene 24 artículos a fondo en tres bloques. Este es el índice.
Construir aplicaciones
| Artículo | De qué trata |
|---|---|
| Cloudflare Workers a fondo | El runtime: isolates, bindings, ficheros estáticos, crons, caché, tests y despliegue |
| Cloudflare Pages a fondo | Sitios estáticos con Functions, y la migración a Workers |
| Cloudflare R2 a fondo | Almacenamiento de objetos compatible con S3 sin coste de salida |
| Cloudflare D1 a fondo | SQLite gestionado, migraciones y réplicas de lectura |
| Cloudflare Workers KV a fondo | Clave-valor global para datos que se leen mucho |
| Cloudflare Durable Objects a fondo | Estado con coordinación, WebSockets y SQLite por objeto |
| Cloudflare Queues a fondo | Colas de mensajes con reintentos y cola de fallidos |
| Cloudflare Workflows a fondo | Procesos largos por pasos que sobreviven a fallos y esperas |
| Cloudflare Hyperdrive a fondo | Tu PostgreSQL o MySQL de siempre, rápido desde Workers |
| Cloudflare Containers a fondo | Contenedores Docker controlados desde un Worker |
| Cloudflare Browser Run a fondo | Chrome sin servidor para capturas, PDF y scraping |
| Cloudflare Images a fondo | Redimensionar y convertir imágenes al vuelo |
| Cloudflare Stream a fondo | Subir, codificar y reproducir vídeo, también en directo |
| Cloudflare Email a fondo | Email Routing, Email Workers y envío de correo |
| Planes de Cloudflare Workers: Free frente a Paid | Qué incluye cada plan y cómo se calcula la factura |
Inteligencia artificial
| Artículo | De qué trata |
|---|---|
| Cloudflare Workers AI a fondo | Modelos abiertos en GPUs de Cloudflare, facturados en neuronas |
| Cloudflare Vectorize a fondo | Base de datos vectorial y un RAG completo |
| Cloudflare AI Gateway a fondo | Logs, caché, límites y facturación para tus llamadas a modelos |
Red y seguridad
| Artículo | De qué trata |
|---|---|
| Cloudflare DNS a fondo | Nube naranja, TTL, CNAME flattening, DNSSEC y migraciones |
| Cloudflare CDN y caché a fondo | Qué se cachea, Cache Rules, Tiered Cache, Cache Reserve y purgas |
| Cloudflare WAF y protección DDoS a fondo | DDoS, reglas del WAF, rate limiting y bots |
| Cloudflare Turnstile a fondo | La alternativa al CAPTCHA y cómo validar el token |
| Cloudflare Tunnel a fondo | Publicar servicios de tu red sin abrir puertos |
| Cloudflare Zero Trust a fondo | Access, 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.

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... | Usa | Por qué |
|---|---|---|
| Ficheros (imágenes, PDF, vídeos, copias) | R2 | Objetos grandes, salida gratis, API de S3 |
| Datos relacionales que consultas por campos | D1 | SQL, índices, transacciones |
| Configuración, flags, sesiones, caché | KV | Lecturas globales rapidísimas; cambios poco frecuentes |
| Estado que muchos modifican a la vez | Durable Objects | Un solo hilo por objeto, consistencia fuerte |
| Un PostgreSQL o MySQL existente | Hyperdrive | Conexiones rápidas y caché sin migrar datos |
| Embeddings para búsqueda semántica | Vectorize | Búsqueda por similitud |
| Trabajo pendiente de hacer | Queues (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
| Servicio | Qué es | Gratis (Workers Free) | Workers Paid incluye |
|---|---|---|---|
| Workers | Código en el borde | 100.000 peticiones al día, 10 ms de CPU | 10 M de peticiones y 30 M de ms de CPU al mes |
| Ficheros estáticos | Assets de Workers y Pages | Ilimitados | Ilimitados |
| KV | Clave-valor global | 100.000 lecturas y 1.000 escrituras al día, 1 GB | 10 M de lecturas, 1 M de escrituras, 1 GB |
| D1 | SQLite gestionado | 5 M de filas leídas y 100.000 escritas al día, 5 GB | 25.000 M leídas, 50 M escritas, 5 GB |
| Durable Objects | Estado con coordinación | 100.000 peticiones y 13.000 GB-s al día (solo SQLite) | 1 M de peticiones, 400.000 GB-s |
| Queues | Colas de mensajes | 10.000 operaciones al día | 1 M de operaciones |
| Hyperdrive | Conexión a tu PostgreSQL/MySQL | 100.000 consultas al día | Ilimitadas |
| Workers AI | Modelos de IA | 10.000 neuronas al día | 10.000 neuronas al día, y pago por uso |
| Workflows | Procesos duraderos | 3.000 pasos al día | 500.000 pasos |
| Containers | Contenedores Docker | No disponible | 25 GiB-h de memoria, 375 vCPU-min y 200 GB-h de disco al mes |
| Vectorize | Base de datos vectorial | 30 M de dimensiones consultadas al mes, 5 M almacenadas | 50 M consultadas, 10 M almacenadas |
| AI Gateway | Proxy para modelos de IA | Funciones básicas gratis | Funciones básicas gratis; Logpush |
| Browser Run | Chrome sin servidor | 10 minutos de navegador al día | 10 horas al mes |
| Email Routing | Correo entrante y Email Workers | Ilimitado | Ilimitado, y 3.000 envíos al mes a cualquier destinatario |
| R2 (va aparte) | Objetos compatibles con S3 | 10 GB, 1 M de clase A, 10 M de clase B al mes | Igual: R2 se factura aparte |
| Images (va aparte) | Transformación de imágenes | 5.000 transformaciones únicas al mes | Plan 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:
| Servicio | Qué es | En el plan gratuito |
|---|---|---|
| DNS | DNS autoritativo con proxy opcional | Incluido, con DNSSEC |
| CDN y caché | Caché en todo el mundo | Incluida, con Tiered Cache Smart; Cache Reserve es de pago |
| WAF y DDoS | Seguridad delante del origen | DDoS sin límite, Free Managed Ruleset, 1 regla de rate limiting |
| Turnstile | Alternativa al CAPTCHA | Gratis, hasta 20 widgets |
| Tunnel | Publicar sin abrir puertos | Incluido |
| Zero Trust | Access, Gateway, Cloudflare One | Hasta 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ónLo 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
- Cloudflare Workers a fondo: por dónde empezar.
- Cloudflare R2 a fondo, Cloudflare D1 a fondo, Cloudflare Workers KV a fondo y Cloudflare Durable Objects a fondo: dónde guardar los datos.
- Cloudflare Queues a fondo, Cloudflare Workflows a fondo y Cloudflare Containers a fondo: trabajo en segundo plano, procesos largos y contenedores.
- Cloudflare Hyperdrive a fondo y Cloudflare Pages a fondo: tu base de datos de siempre y sitios estáticos.
- Cloudflare Workers AI a fondo, Cloudflare Vectorize a fondo y Cloudflare AI Gateway a fondo: IA de principio a fin.
- Cloudflare Browser Run a fondo, Cloudflare Images a fondo, Cloudflare Stream a fondo y Cloudflare Email a fondo: navegador, imágenes, vídeo y correo.
- Cloudflare DNS a fondo, Cloudflare CDN y caché a fondo y Cloudflare WAF y protección DDoS a fondo: la red delante de tu web.
- Cloudflare Turnstile a fondo, Cloudflare Tunnel a fondo y Cloudflare Zero Trust a fondo: formularios, servicios privados y acceso.
- Planes de Cloudflare Workers: Free frente a Paid: la factura, al detalle.
- Hono a fondo: el framework más cómodo para escribir APIs en Workers.