Definition
Alguna vez has rastreado un paquete online y visto como se mueve de ciudad en ciudad? Ese numero de seguimiento acompana a tu paquete durante todo el viaje de entrega - desde el momento en que sale del almacen, pasando por centros de clasificacion, subiendo a camiones, y finalmente llegando a tu puerta. Un ID de correlacion funciona exactamente de la misma manera en el mundo del software: es un identificador unico que sigue a una peticion mientras viaja a traves de multiples servicios y sistemas.
En las aplicaciones modernas, una sola accion del usuario a menudo desencadena una cadena de eventos a traves de muchos servicios diferentes. Cuando haces clic en “Comprar Ahora” en un sitio de e-commerce, tu peticion podria tocar el servicio de carrito de compras, servicio de inventario, servicio de pagos, deteccion de fraude, calculador de envios, y sistema de notificaciones por email. Si algo sale mal en algun punto de esa cadena, como averiguas que paso? Aqui es donde los IDs de correlacion se vuelven invaluables. Al adjuntar el mismo identificador unico a cada paso del proceso, puedes rastrear exactamente que paso, cuando y donde.
Piensa en ello como darle a cada peticion una etiqueta con nombre unico que lleva durante todo su viaje. Cuando miras tus logs despues, puedes buscar esa etiqueta y ver la historia completa de lo que paso - a traves de cada servicio, cada llamada a base de datos, cada peticion API. Sin IDs de correlacion, estarias mirando millones de entradas de log sin forma de conectar eventos relacionados. Con ellos, puedes reconstruir instantaneamente la secuencia completa de eventos para cualquier peticion especifica.
Example
Escenario Real 1: Depurando una Compra Fallida Un cliente se queja de que su pedido fallo. Soporte al cliente ingresa el ID del pedido, que incluye un ID de correlacion. Ahora pueden ver: la peticion llego al servicio de carrito (exito), paso a pagos (exito), fue a deteccion de fraude (marcada como sospechosa), fue enviada para revision manual, y finalmente agoto el tiempo. Sin el ID de correlacion, encontrar estos eventos conectados a traves de cinco servicios diferentes tomaria horas en lugar de segundos.
Escenario Real 2: Problemas de Streaming en Netflix Cuando presionas play en Netflix y el video no carga, ese boton de play dispara peticiones a docenas de servicios. Netflix usa IDs de correlacion para rastrear: tu peticion a la red de distribucion de contenido, verificacion de autenticacion, validacion de licencia, estimacion de ancho de banda, y seleccion de codificacion de video. Los ingenieros pueden seguir un solo ID de correlacion para ver exactamente donde fallo el inicio del stream.
Escenario Real 3: Emparejamiento de Viajes en Uber Cuando solicitas un Uber, se genera un ID de correlacion. Sigue tu peticion a traves del emparejamiento de conductores, calculo de ETA, precio dinamico, autorizacion de pago, y notificacion al conductor. Si una solicitud de viaje falla, Uber puede rastrear esa peticion especifica a traves de todos estos servicios para encontrar el cuello de botella - quiza el servicio de pagos estaba lento, o el emparejamiento de conductores agoto el tiempo.
Escenario Real 4: Auditorias de Transacciones Bancarias Cuando transfieres dinero entre cuentas, los reguladores pueden despues pedir al banco que demuestre exactamente que paso. El ID de correlacion adjunto a tu transaccion permite al banco producir una pista de auditoria completa: peticion recibida, verificacion de fraude pasada, cuenta del remitente debitada, cuenta del receptor acreditada, confirmacion enviada. Cada paso esta vinculado por ese unico ID.
Analogia
El Testigo de la Carrera de Relevos: En una carrera de relevos, el testigo pasa de corredor a corredor, pero es el mismo testigo durante toda la carrera. Si quisieras analizar la carrera despues, rastrearias el viaje de ese testigo especifico. El ID de correlacion es tu testigo digital - pasa de servicio a servicio, y puedes rastrear su viaje completo.
El Numero de Historia Clinica: Cuando visitas un hospital, obtienes un numero de historia clinica. Ya sea que estes en urgencias, haciendote una radiografia, visitando a un especialista, o recogiendo recetas, ese mismo numero conecta todas tus actividades. Meses despues, tu medico puede buscar ese numero y ver todo lo que paso durante tu visita. Los IDs de correlacion dan a tus peticiones esa misma identidad persistente.
El Numero de Expediente: Cuando presentas una reclamacion de seguro, obtiene un numero de caso. Ya sea que tu reclamacion este siendo procesada por el revisor inicial, enviada a un ajustador, revisada por un gerente, o manejada por el departamento de pagos, ese numero de caso une todo. Puedes llamar y decir “llamo sobre el caso #12345” y pueden ver todo el historial.
La Pegatina del Grupo de Tour: En un tour grupal, todos llevan la misma pegatina de color o siguen la misma bandera numerada. Si el guia necesita contar a todos, busca ese color o numero. El ID de correlacion es como esa pegatina - identifica que peticiones pertenecen juntas mientras se mueven a traves del sistema.
Code Example
// Middleware Express.js para generar/propagar ID de correlacion
const { v4: uuidv4 } = require('uuid');
app.use((req, res, next) => {
// Obtener del header o generar nuevo
const correlationId = req.headers['x-correlation-id'] || uuidv4();
// Adjuntar a la peticion
req.correlationId = correlationId;
// Devolver en respuesta
res.setHeader('X-Correlation-ID', correlationId);
next();
});
// [Logging](https://reference.apios.info/es/terms/logging/) con ID de correlacion
app.get('/api/orders/:id', async (req, res) => {
logger.info('Obteniendo pedido', {
correlationId: req.correlationId,
orderId: req.params.id
});
// Pasar a servicios downstream
const payment = await fetch('https://payment-service/check', {
headers: {
'X-Correlation-ID': req.correlationId
}
});
logger.info('Pago verificado', {
correlationId: req.correlationId
});
});
// Ejemplo de salida de log
// [2024-01-15 10:30:00] INFO correlationId=abc-123 service=api-gateway path=/orders/456
// [2024-01-15 10:30:01] INFO correlationId=abc-123 service=order-service action=fetch
// [2024-01-15 10:30:02] INFO correlationId=abc-123 service=payment-service action=check