Guía para Principiantes sobre Cloudflare Workers
Si buscas crear aplicaciones web modernas sin gestionar servidores, Cloudflare Workers ofrece una solución convincente que va mucho más allá de simples funciones serverless. A diferencia de las plataformas tradicionales, Workers ahora proporciona todo lo necesario para aplicaciones full-stack: bases de datos SQL a través de D1, conexiones a PostgreSQL o MySQL existentes mediante Hyperdrive, alojamiento de activos estáticos y amplia compatibilidad con Node.js—todo ejecutándose en el edge, cerca de tus usuarios.
Este tutorial de Cloudflare Workers cubre los conceptos y herramientas esenciales que necesitas para comenzar, desde comprender la ejecución basada en edge hasta construir aplicaciones completas con conectividad moderna de bases de datos y gestión de activos.
Puntos Clave
- Cloudflare Workers ejecuta JavaScript, TypeScript y Python, y también puede ejecutar Rust cuando se compila a WebAssembly, todo en ubicaciones edge a menos de 50 ms de usuarios en todo el mundo
- D1 proporciona bases de datos SQLite serverless con replicación automática en el edge
- Hyperdrive permite conexiones eficientes a bases de datos PostgreSQL y MySQL existentes
- Workers soporta aplicaciones full-stack con alojamiento de activos estáticos y compatibilidad con Node.js
¿Qué son los Cloudflare Workers?
Ejecución Basada en Edge Explicada
Los Cloudflare Workers son funciones de JavaScript, TypeScript, Python o Rust que se ejecutan en la red global de centros de datos de Cloudflare. En lugar de ejecutarse en un único servidor, tu código se ejecuta en la ubicación edge más cercana a cada usuario, típicamente a menos de 50 milisegundos de cualquier persona en la Tierra.
Este modelo basado en edge significa que tu aplicación responde más rápido porque las solicitudes no viajan a un servidor central. La plataforma maneja automáticamente el escalado—ya sea que tengas diez usuarios o diez millones, Workers se ajusta sin configuración.
Conceptos Fundamentales: Bindings y Entorno
Los Workers utilizan bindings (enlaces) para conectar tu código a recursos. Estos no son variables de entorno tradicionales sino conexiones directas a servicios:
- Namespaces KV para almacenamiento clave-valor
- Bases de datos D1 para operaciones SQL
- Buckets R2 para almacenamiento de objetos
- Service bindings a otros Workers
- Conexiones Hyperdrive a bases de datos externas
Cada binding aparece como una propiedad en el objeto env pasado a tu Worker:
export default {
async fetch(request, env, ctx) {
// Access D1 database
const result = await env.DB.prepare('SELECT * FROM users').all()
return Response.json(result)
}
}
Opciones Modernas de Bases de Datos con Cloudflare D1 Database
D1: SQL Listo para Producción en el Edge
La base de datos Cloudflare D1 lleva SQLite al edge con replicación automática y copias de seguridad. A diferencia de las bases de datos serverless tradicionales, D1 se ejecuta en las mismas ubicaciones que tus Workers, eliminando la latencia de red para las consultas de base de datos.
Crear una base de datos D1 es sencillo:
npx wrangler d1 create my-database
npx wrangler d1 execute my-database --file=./schema.sql
Tu Worker accede a D1 a través de bindings, haciendo que las consultas se sientan locales:
const user = await env.DB.prepare('SELECT * FROM users WHERE id = ?')
.bind(userId)
.first()
Conectividad Hyperdrive para Bases de Datos Existentes
La conectividad Hyperdrive resuelve un desafío común: conectar Workers a bases de datos PostgreSQL o MySQL existentes, incluyendo aquellas en redes privadas. Hyperdrive mantiene pools de conexiones en el edge de Cloudflare, reduciendo la sobrecarga de conexión hasta 30 veces.
Configurar Hyperdrive requiere una configuración mínima:
npx wrangler hyperdrive create my-postgres \
--connection-string="postgresql://user:pass@host:5432/db"
Tu Worker entonces utiliza bibliotecas de bases de datos familiares con la conexión Hyperdrive:
import { Client } from 'pg'
export default {
async fetch(request, env) {
const client = new Client(env.HYPERDRIVE.connectionString)
await client.connect()
const result = await client.query('SELECT * FROM products')
return Response.json(result.rows)
}
}
Discover how at OpenReplay.com.
Construcción de Aplicaciones Full-Stack
Activos Estáticos y Enrutamiento de Workers
Los activos estáticos de Workers eliminan la necesidad de alojamiento separado. Tu HTML, CSS, JavaScript e imágenes se despliegan junto con tu código API. La plataforma sirve automáticamente archivos estáticos con encabezados de caché apropiados y compresión.
El manejo de activos estáticos requiere una entrada assets en wrangler.toml apuntando a tu directorio público.
Estructura de proyecto para un Worker full-stack:
my-app/
├── src/
│ └── index.js # Worker code
├── public/
│ ├── index.html # Static assets
│ ├── style.css
│ └── app.js
└── wrangler.toml # Configuration
El enrutamiento maneja tanto solicitudes estáticas como dinámicas:
export default {
async fetch(request, env, ctx) {
const url = new URL(request.url)
if (url.pathname.startsWith('/api/')) {
// Handle API routes
return handleAPI(request, env)
}
// Serve static assets
return env.ASSETS.fetch(request)
}
}
Beneficios de la Capa de Compatibilidad con Node.js
La capa de compatibilidad con Node.js permite que miles de paquetes npm funcionen en Workers. A diferencia de las versiones tempranas que solo soportaban APIs estándar web, Workers ahora soporta módulos integrados de Node.js como Buffer, crypto, stream y path.
Habilita la compatibilidad con Node.js en tu wrangler.toml:
compatibility_flags = ["nodejs_compat"]
Esta compatibilidad significa que el código Node.js existente a menudo funciona con cambios mínimos, haciendo que la migración desde servidores tradicionales sea directa.
Flujo de Trabajo de Desarrollo Local
Configuración de tu Entorno
Comienza con Wrangler, la herramienta CLI de Cloudflare:
npm create cloudflare@latest my-app
cd my-app
npm run dev
Wrangler proporciona desarrollo con recarga en caliente con acceso a todos los bindings localmente. Tus bases de datos D1, namespaces KV e incluso conexiones Hyperdrive funcionan en modo de desarrollo.
Pruebas y Despliegue
El servidor de desarrollo local imita el comportamiento de producción:
# Test with local D1 database
npx wrangler d1 execute DB --local --file=./seed.sql
# Deploy to production
npm run deploy
Características Adicionales de la Plataforma
Aunque este tutorial se enfoca en conceptos fundamentales, Workers ofrece capacidades adicionales que vale la pena explorar:
- Queues para procesamiento de trabajos en segundo plano
- Notificaciones de eventos R2 para disparadores de almacenamiento de objetos
- Despliegues Graduales para lanzamientos seguros
- Workers Analytics y registro estructurado para observabilidad
Estas características se integran sin problemas a medida que tu aplicación crece.
Conclusión
Cloudflare Workers ha evolucionado de simples funciones edge a una plataforma completa para aplicaciones web modernas. Con D1 para SQL serverless, Hyperdrive para conectividad de bases de datos existentes, alojamiento integrado de activos estáticos y compatibilidad integral con Node.js, puedes construir aplicaciones full-stack que se ejecutan globalmente con configuración mínima.
Comienza con un Worker simple, agrega una base de datos D1 para persistencia de datos e incorpora gradualmente características como Hyperdrive o R2 según sea necesario. La plataforma maneja la complejidad de la distribución global, permitiéndote enfocarte en construir tu aplicación.
Preguntas Frecuentes
Sí, Workers puede manejar la mayoría de las tareas backend incluyendo endpoints API, operaciones de base de datos, autenticación y almacenamiento de archivos. Con D1 para SQL, KV para caché, R2 para almacenamiento de objetos e Hyperdrive para bases de datos existentes, Workers proporciona una solución backend completa que escala automáticamente.
Workers cobra por solicitud y tiempo de cómputo con un generoso nivel gratuito de 100,000 solicitudes diarias. A diferencia del alojamiento tradicional con costos mensuales fijos, solo pagas por el uso real. Esto hace que Workers sea rentable tanto para proyectos pequeños como para aplicaciones de alto tráfico.
Utiliza Queues para procesamiento en segundo plano, Durable Objects para operaciones con estado, o divide las tareas en fragmentos más pequeños. Para tareas que exceden los límites, considera combinar Workers con servicios externos o usar Workers programados de Cloudflare para procesamiento por lotes.
Workers proporciona desarrollo local con wrangler dev para pruebas, registro de consola visible en logs en tiempo real e integración con Chrome DevTools. La principal diferencia es comprender el ciclo de vida basado en solicitudes y usar registro estructurado para depuración en producción.
Gain Debugging Superpowers
Unleash the power of session replay to reproduce bugs, track slowdowns and uncover frustrations in your app. Get complete visibility into your frontend with OpenReplay — the most advanced open-source session replay tool for developers. Check our GitHub repo and join the thousands of developers in our community.