Inicio › Tecnología › Observabilidad Distribuida
La observabilidad distribuida aplica los principios generales de la observabilidad al contexto específico de arquitecturas de microservicios y sistemas distribuidos, donde una sola petición de usuario puede atravesar decenas de servicios independientes desplegados en distintos nodos. Su elemento central es la traza distribuida: cada petición recibe un identificador único (trace ID) qué se propaga entre servicios mediante cabeceras, y cada tramo del recorrido genera un span con su duración y metadatos, de modo qué se puede reconstruir el camino completo y detectar exactamente dónde se introdujo un retraso o un error. Dado el volumen de tráfico en sistemas grandes, suele aplicarse muestreo (sampling) para capturar solo una fracción representativa de trazas sin saturar el almacenamiento ni degradar el rendimiento del propio sistema instrumentado.
Es seguir el rastro de una sola petición de usuario mientras pasa por muchos servicios distintos, como seguir el testigo en una carrera de relevos donde cada corredor es un componente diferente del sistema. Sin este seguimiento, un fallo o una lentitud en un sistema con muchas piezas conectadas sería casi imposible de localizar, porque cada servicio solo ve su propio trozo del problema. Con él, se puede reconstruir el viaje completo de principio a fin y ver exactamente dónde se atascó.
En el proceso de compra de una tienda online qué atraviesa quince microservicios distintos (carrito, pagos, inventario, envío, notificaciones...), asignar un mismo trace ID a la petición desde qué entra hasta qué se completa permite abrir una herramienta como Jaeger y ver de un vistazo qué servicio concreto añadió dos segundos de más al tiempo total de respuesta. Sin esa correlación entre servicios, diagnosticar el mismo problema exigiría revisar logs sueltos de cada equipo por separado, con el riesgo de no coincidir nunca en el tiempo exacto del fallo.
Porque en un monolito toda la lógica corre en un mismo proceso y los logs quedan naturalmente en un mismo lugar, mientras qué en un sistema distribuido cada servicio genera sus propios registros por separado, y hace falta correlacionarlos explícitamente mediante identificadores compartidos para reconstruir el recorrido completo de una petición.
Es un identificador único qué se genera al inicio de una petición y se propaga a través de las cabeceras HTTP o de mensajería entre todos los servicios qué la procesan, permitiendo agrupar y ordenar cronológicamente todos los eventos relacionados con esa petición concreta en las herramientas de análisis.
Es la técnica de capturar y almacenar solo una parte del tráfico total de trazas, en lugar de absolutamente todas las peticiones, porque instrumentar y guardar el cien por cien del tráfico en sistemas de alto volumen sería costoso en almacenamiento y podría afectar al rendimiento del propio sistema observado.