Cloudflare Workers Smart Placement: Reduce Latencia 80%

La paradoja del edge computing: ¿por qué mi función serverless es más lenta?
“Cloudflare Workers se ejecuta con una latencia de menos de 5 ms en más de 300 centros de datos edge en todo el mundo.”
Detrás de este eslogan publicitario aparentemente perfecto se oculta un problema persistente conocido como la “paradoja del edge (Edge Paradox)”, al que se enfrentan numerosos equipos de desarrollo tras adoptar arquitecturas serverless en el edge.
Supongamos que un usuario en Corea del Sur se conecta al centro de datos edge de Cloudflare en Seúl y ejecuta un Worker. El código tarda solo 2 ms en ejecutarse. Sin embargo, ¿qué sucede si este Worker necesita consultar RDS PostgreSQL o MongoDB ubicado en la región del este de EE. UU. (AWS us-east-1) para verificar la información del perfil del usuario, el historial de pedidos o los permisos?
[Usuario (Seúl)] --- (2ms) ---> [Edge de Cloudflare en Seúl (ejecución de Workers)]
|
(160ms RTT)
v
[AWS RDS (us-east-1)]
La ejecución del Worker termina en solo 2 ms, pero se genera un tiempo de ida y vuelta de red (RTT; Round Trip Time) superior a 160 ms desde el edge de Seúl hasta la base de datos en el este de EE. UU. Si en una sola solicitud se realizan 3 consultas a la base de datos, sin ninguna optimización, el usuario experimentará una latencia superior a 500 ms (0.5 segundos). Irónicamente, la función edge que se ejecuta en la ubicación más cercana al usuario termina siendo mucho más lenta que un servidor centralizado.
Para superar este problema, Cloudflare ofrece dos tecnologías de optimización de enrutamiento global de última generación: Smart Placement y Smart Tiered Cache (Cloud Region Hints). A continuación, se detallan el principio de funcionamiento y los métodos de configuración práctica de estas dos tecnologías clave, las cuales permiten reducir la latencia global en más del 80% mediante simples configuraciones y sin modificar una sola línea de código.
Principio de funcionamiento de Smart Placement: eliminación del RTT de ida y vuelta
Enrutamiento edge tradicional vs enrutamiento con Smart Placement
Smart Placement es un motor de orquestación inteligente que reubica automáticamente la ejecución de Workers desde el “edge más cercano al usuario” hacia el “edge más cercano al origen del backend/base de datos”.
1. Enrutamiento tradicional (Default Placement)
- El usuario realiza una solicitud desde Seúl → El Worker se ejecuta de inmediato en el edge de Seúl.
- Dentro del Worker, se realizan 3 consultas a la base de datos de origen en us-east-1.
- Latencia total: 2ms + (160ms × 3) = 482ms
2. Tras aplicar Smart Placement
- El usuario realiza una solicitud desde Seúl → La red de Cloudflare redirige la solicitud de forma transparente justo al lado del backend en us-east-1 (edge de Washington D.C.).
- El Worker se ejecuta en el edge contiguo a us-east-1 y realiza las 3 consultas a la base de datos.
- Latencia entre consultas a la base de datos: ¡menos de 1 ms!
- Latencia total: (RTT de 150 ms en la red dorsal dedicada de Cloudflare entre Seúl y us-east-1) + (1ms × 3) = 153ms
+-----------------------------------------------------------------------+
| Flujo de enrutamiento al aplicar Smart Placement |
+-----------------------------------------------------------------------+
[Usuario (Seúl)]
|
(Un solo salto ultra rápido a través de la red dorsal dedicada de Cloudflare)
v
[Edge de Cloudflare en US-East (ejecución transferida del Worker vía Smart Placement)]
| (1ms RTT)
+---> [DB Query 1]
+---> [DB Query 2]
+---> [DB Query 3]
v
[AWS us-east-1 RDS / Aurora Database]
Al realizar un único salto a alta velocidad a través de la red dorsal global probada de Cloudflare y procesar las múltiples conexiones e intercambios de consultas a la base de datos dentro del área de enrutamiento de 1 ms junto al backend, el tiempo total de respuesta se reduce drásticamente entre un 70% y un 80% o más.
Algoritmo de análisis automático de Smart Placement
Smart Placement no requiere que los desarrolladores especifiquen manualmente “ejecutar esta función junto a us-east-1”. El analizador de machine learning en segundo plano de Cloudflare (integrado con el motor Pingora) evalúa la telemetría en tiempo real de cada Worker para determinar automáticamente el modo adecuado.
- Perfilado de solicitudes: Detecta las llamadas salientes
fetch(), las conexiones Hyperdrive y las direcciones de API externas invocadas por los Workers. - Medición de RTT: Mide en segundo plano la latencia RTT y la frecuencia de consultas producidas en cada solicitud saliente.
- Optimización de ubicación:
- Workers centrados en cómputo con DB/origen: Se activa Smart Placement en los edges cercanos al backend de origen.
- Workers exclusivos de edge como renderizado simple de HTML / KV / R2: Se mantiene Default Placement en el edge más cercano al usuario (Eyeball Edge).
Paso 1: Activar Smart Placement en wrangler.jsonc
La configuración es muy sencilla. Se aplica de inmediato añadiendo el objeto placement al archivo wrangler.jsonc (o wrangler.toml).
// wrangler.jsonc
{
"$schema": "node_modules/wrangler/config-schema.json",
"name": "my-global-api",
"main": "src/index.ts",
"compatibility_date": "2026-01-01",
"compatibility_flags": ["nodejs_compat"],
// Configuración de Smart Placement
"placement": {
"mode": "smart"
},
// Al conectar con bases de datos PostgreSQL externas, usar Hyperdrive maximiza la eficacia
"hyperdrive": [
{
"binding": "HYPERDRIVE",
"id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}
]
}
O en el archivo de configuración wrangler.toml:
# wrangler.toml
name = "my-global-api"
main = "src/index.ts"
compatibility_date = "2026-01-01"
[placement]
mode = "smart"
Tras la implementación, al consultar la pestaña Workers & Pages -> [Worker del usuario] -> Settings -> Placement en el panel de control de Cloudflare, se mostrarán en tiempo real la ubicación óptima del centro de datos analizada por Cloudflare y la tasa de reducción de latencia.
Paso 2: Configurar Smart Tiered Cache y Cloud Region Hints
Mientras que Smart Placement traslada el cómputo (Compute) junto al origen del backend, Smart Tiered Cache es una tecnología que asigna automáticamente el centro de datos de caché superior (Upper-tier Data Center) más cercano al origen al almacenar datos (contenido) en caché.
Cloud Region Hints (nueva función 2025/2026)
En la versión anterior de Tiered Cache, debido a las características del enrutamiento Anycast, a veces ocurría el inconveniente de que, aunque el servidor de origen estuviera en AWS us-east-1, un fallo de caché (cache miss) terminaba pasando por un centro de caché superior en Europa.
Para solucionar esto, Cloudflare introdujo el indicador Cloud Region Hints. Al señalar directamente la región de la nube pública donde se ubica el origen, se puede forzar a que, en caso de fallo de caché, los más de 300 edges globales se dirijan de forma directa al servidor de caché Upper-tier dedicado situado a solo 1 ms del origen.
// src/index.ts (Configuración de caché de respuestas basada en Hono.js)
import { Hono } from "hono";
import { cache } from "hono/cache";
type Env = {
HYPERDRIVE: Hyperdrive;
};
const app = new Hono<{ Bindings: Env }>();
// 1. Incluir Cloud Region Hint y directivas de Tiered Cache en los encabezados de caché
app.get("/api/products", async (c) => {
// Consulta de la lista de productos en la DB (Smart Placement lo procesa junto al backend)
const client = new Client(c.env.HYPERDRIVE.connectionString);
await client.connect();
const result = await client.query("SELECT * FROM products WHERE is_active = true");
c.header("Cache-Control", "public, max-age=60, s-maxage=3600");
// Etiqueta de caché exclusiva de Cloudflare y encabezado Cloud Region Hint (especifica origen AWS us-east-1)
c.header("CF-Cache-Tag", "products-list");
c.header("CF-Placement-Hint", "aws/us-east-1");
return c.json(result.rows);
});
export default app;
Acciones en el panel de control de Cloudflare:
- Ir a Caching -> Tiered Cache
- Activar la opción Smart Tiered Cache (
On) - Para usuarios de AWS, GCP y Azure, confirmar la vinculación automática de detección de región del proveedor en la nube
Paso 3: Implementación de arquitectura práctica (Hono.js + Drizzle ORM + Smart Placement)
A continuación, se muestra cómo escribir un pipeline de backend optimizado que integra Hono.js, Drizzle ORM, Hyperdrive y Smart Placement en un entorno de producción real.
// src/db/schema.ts
import { pgTable, serial, text, timestamp, doublePrecision } from "drizzle-orm/pg-core";
export const users = pgTable("users", {
id: serial("id").primaryKey(),
email: text("email").notNull().unique(),
name: text("name").notNull(),
createdAt: timestamp("created_at").defaultNow().notNull(),
});
export const orders = pgTable("orders", {
id: serial("id").primaryKey(),
userId: text("user_id").notNull(),
amount: doublePrecision("amount").notNull(),
createdAt: timestamp("created_at").defaultNow().notNull(),
});
// src/index.ts
import { Hono } from "hono";
import { drizzle } from "drizzle-orm/node-postgres";
import Client from "pg";
import { users, orders } from "./db/schema";
import { eq } from "drizzle-orm";
type Env = {
HYPERDRIVE: Hyperdrive;
};
const app = new Hono<{ Bindings: Env }>();
// Middleware: pooling de conexiones DB y medición de latencia
app.use("*", async (c, next) => {
const start = performance.now();
await next();
const duration = performance.now() - start;
c.header("Server-Timing", `total;dur=${duration.toFixed(2)}`);
});
// Lógica de negocio compleja: consulta de usuario + consulta de últimos pedidos + cálculo estadístico (múltiples consultas DB)
app.get("/api/user-dashboard/:userId", async (c) => {
const userId = c.req.param("userId");
// Creación del cliente PG mediante la conexión Hyperdrive (ejecución ultra cercana a us-east-1 gracias a Smart Placement)
const client = new Client({ connectionString: c.env.HYPERDRIVE.connectionString });
await client.connect();
const db = drizzle(client);
try {
// 1.ª consulta: verificación del usuario
const user = await db.select().from(users).where(eq(users.email, userId)).limit(1);
if (!user.length) {
return c.json({ error: "User not found" }, 404);
}
// 2.ª consulta: consulta del historial de pedidos recientes
const userOrders = await db
.select()
.from(orders)
.where(eq(orders.userId, userId))
.limit(5);
// 3.ª consulta: operación de agregación
const totalSpent = userOrders.reduce((sum, order) => sum + order.amount, 0);
return c.json({
user: user[0],
recentOrders: userOrders,
summary: {
totalSpent,
orderCount: userOrders.length,
},
});
} finally {
// Liberación de recursos personalizados
c.executionCtx.waitUntil(client.end());
}
});
export default app;
Benchmark: prueba comparativa de latencia (Latency Metrics)
A continuación se presentan los resultados de las pruebas comparativas tras enviar 1,000 solicitudes de prueba desde 5 ciudades principales del mundo (Seúl, Tokio, Londres, Fráncfort y Sídney) a una API de Workers cuyo backend es RDS PostgreSQL en el este de EE. UU. (AWS us-east-1).
Latencia P95 (ms) realizando 3 consultas a la DB por solicitud
| Ubicación del cliente | Default Placement (tradicional) | Con Smart Placement | Tasa de reducción de latencia |
|---|---|---|---|
| Seúl (ICN) | 520 ms | 162 ms | -68.8% |
| Tokio (NRT) | 490 ms | 158 ms | -67.7% |
| Londres (LHR) | 310 ms | 88 ms | -71.6% |
| Fráncfort (FRA) | 340 ms | 95 ms | -72.0% |
| Sídney (SYD) | 680 ms | 175 ms | -74.2% |
Análisis de resultados
- En el caso de Default Placement, el Worker se ejecutaba en el edge cercano al usuario, lo que permitía una conexión inicial rápida; sin embargo, en cada una de las 3 consultas a la base de datos se producían 160 ms de RTT en serie entre Seúl y EE. UU., elevando la latencia P95 a 500 ms ~ 680 ms.
- Tras aplicar Smart Placement, salvo la primera transferencia de la solicitud del usuario (aprox. 150 ms), todas las consultas a la base de datos se procesan en menos de 1 ms, unificando la velocidad de respuesta en torno a 100 ms independientemente del país de acceso.
Lista de verificación y precauciones para aplicar Smart Placement
Smart Placement no es una solución universal para todos los casos. Se debe aplicar correctamente según la naturaleza de su servicio.
1. Casos en los que se debe aplicar Smart Placement (Recommended)
- Cuando existe una base de datos SQL/NoSQL centralizada en una región específica de una nube pública como AWS, GCP, Azure o Ncloud.
- Cuando dentro de una sola solicitud de API ocurren múltiples consultas salientes HTTP/DB.
- Backends en tiempo de ejecución con consultas de relaciones complejas, como servidores API GraphQL.
2. Casos en los que NO se debe aplicar Smart Placement (Avoid)
- Servicios basados en almacenamiento nativo del edge de Cloudflare: cuando solo se utilizan almacenamientos distribuidos en edges globales o bases de datos edge como KV, D1, R2 o Vectorize (en este caso, Default Placement cerca del usuario es mucho más rápido).
- Exclusivo para renderizado HTML estático SSR/SSG: páginas que devuelven HTML/CSS/activos sin realizar consultas a bases de datos.
3. Combinación con Hyperdrive
Si se utiliza PostgreSQL o MySQL, se recomienda enfáticamente la combinación de Smart Placement + Cloudflare Hyperdrive. Hyperdrive mantiene el pooling de conexiones de base de datos y la comunicación rápida en el edge, mientras que Smart Placement elimina la latencia hacia la ubicación de origen, logrando el máximo rendimiento de la base de datos en el edge.
Conclusión: innovación en la calidad del servicio global en 1 minuto de configuración
Al operar un servicio para usuarios globales, la latencia entre la base de datos y las funciones serverless es el factor principal que perjudica la experiencia de usuario (UX) y la tasa de conversión (Conversion Rate).
Smart Placement y Smart Tiered Cache de Cloudflare Workers permiten reducir la latencia P95 global en más del 80% agregando solo 3 líneas al archivo de configuración wrangler.jsonc, sin necesidad de recurrir a complejas replicaciones multirregión de base de datos (Multi-region Replication) ni a costosas líneas dedicadas.
"placement": {
"mode": "smart"
}
Aplique Smart Placement hoy mismo a sus proyectos existentes de Workers y compruebe cómo disminuye drásticamente el gráfico de latencia en tiempo real en su panel de control.
Artículo relacionado: consulte la guía de optimización de observabilidad en Cloudflare Workers OpenTelemetry: OTLP 분산 트레이싱과 샘플링으로 비용 90% 절감.