Ir al contenido
RT
Volver

Cloudflare Workers explicado sin buzzwords

Un Cloudflare Worker es código serverless que responde requests en la red global de Cloudflare.

La forma más simple de pensarlo:

request -> Worker -> response

Escribes un handler, casi siempre fetch(). Cuando llega un request a tu dominio o a una ruta asociada, Cloudflare ejecuta ese código y espera una Response.

No estás administrando una VM. No estás levantando un Express en un VPS. No estás cuidando un proceso Node que se cae a las 3 a.m.

Estás desplegando una pieza de código que la plataforma puede ejecutar por ti.

Qué significa “edge” (y qué no)

“Edge” se traduce como “borde”, pero casi nadie lo usa así en una conversación técnica.

En este contexto:

ubicaciones de red más cercanas al usuario que un backend central tradicional.

Si tu backend vive solo en us-east, un usuario en Colombia, México o Chile puede pagar latencia de ida y vuelta en cada request importante. Con Workers, parte de tu lógica HTTP puede correr en la red global de Cloudflare.

Eso no significa que todo sea mágicamente más rápido o mejor diseñado. Significa que tienes otra capa donde poner lógica de entrada.

No digas:

“Tu backend empieza en el edge.”

Mejor:

“La primera capa de tu API puede correr en la red de Cloudflare, normalmente más cerca del usuario que tu backend central.”

Qué problema resuelve (y cuál no)

Muchas apps empiezan así y está bien:

usuario -> CDN -> backend central -> base de datos -> respuesta

No hay que tirar ese modelo a la basura.

Pero hay requests que no necesitan viajar hasta el backend principal:

Workers sirve para poner esa lógica cerca de la entrada.

No lo pienses como “reemplazo mi backend completo”.

Piensa:

tengo una capa HTTP programable antes, durante o alrededor de mi backend.

El Worker mínimo

export default {
  async fetch(request, env, ctx): Promise<Response> {
    return Response.json({
      ok: true,
      message: "Hola desde Workers",
      path: new URL(request.url).pathname,
    });
  },
} satisfies ExportedHandler<Env>;

Tres piezas:

Para el primer día, con esto basta:

fetch recibe un Request y devuelve una Response.

Dónde encaja en la arquitectura

cliente -> Worker -> recurso o servicio

Ese recurso puede ser otro backend, R2, D1, KV, una Queue, un Durable Object, AI Gateway u otro Worker. Cuando conectas esos recursos, entran los bindings.

Por eso Workers no se aprende solo como “una función”. Se aprende como puerta de entrada a la plataforma.

Ejemplo: una ruta concreta

export default {
  async fetch(request, env, ctx): Promise<Response> {
    const url = new URL(request.url);

    if (url.pathname === "/api/health") {
      return Response.json({
        status: "ok",
        service: "pricing-api",
      });
    }

    return new Response("Not found", { status: 404 });
  },
} satisfies ExportedHandler<Env>;

Este ejemplo no intenta ser una app completa. Ese es el punto: Workers brilla resolviendo piezas concretas de la capa HTTP.

Cuándo usaría Workers

Usaría Workers para:

Cuándo no metería todo ahí

Tendría cuidado si:

Dentro del mismo ecosistema:

NecesitasMira
Estado por entidadDurable Objects
Trabajo asyncQueues
Proceso multi-paso durableWorkflows
Object storageR2
SQLD1
Key-value simpleKV

Error común: el Worker gigante

El primer Worker empieza limpio. Luego le agregan auth, emails, imágenes, IA, analytics, CRM y coordinación de sesiones. De pronto tienes una función imposible de depurar.

Mejor modelo mental:

Worker = entrada HTTP
Queue = trabajo async
Durable Object = estado por entidad
Workflow = proceso largo con pasos
R2 / D1 / KV = almacenamiento según el caso

Antes de producción

  1. Qué rutas atiende.
  2. Qué debe responder de inmediato.
  3. Qué puede ir a una Queue.
  4. Qué recursos aparecen en env.
  5. Qué logs necesitas para debug.
  6. Cómo separas dev, staging y producción.
  7. Qué pasa si falla una dependencia.

Un Worker pequeño puede ser simple. Un sistema de Workers necesita diseño.

La frase para recordar

Request -> fetch() -> Response

Workers es la puerta. La arquitectura aparece cuando decides qué debe hacer esa puerta y qué debe delegar.


Serie Cloudflare para builders: Workers · Bindings · Durable Objects · Queues

Docs: Workers · How Workers works · Runtime APIs · Bindings


Share this post on:

Anterior
Bindings en Cloudflare Workers: permiso + API en env