OpenTelemetry Baggage es una característica de OpenTelemetry que permite adjuntar y propagar pares clave-valor (key-value pairs) a través de los límites de un servicio o proceso, y entre servicios en un sistema distribuido. A diferencia de los 'span attributes', que están vinculados a un 'span' específico y se utilizan para describir una operación particular, 'Baggage' se propaga globalmente con el contexto de la traza (trace context). Esto significa que cualquier 'span' subsiguiente en la misma traza puede acceder a los datos de 'Baggage', independientemente de dónde se haya originado. Es fundamentalmente un mecanismo de propagación de contexto que viaja junto con los identificadores de traza y span.
En el mundo real, 'OpenTelemetry Baggage' se utiliza para inyectar y transportar información contextual relevante para el negocio o la depuración a través de microservicios. Por ejemplo, una aplicación de e-commerce podría usar 'Baggage' para propagar un 'customer_id', 'session_id' o 'tenant_id' desde la solicitud inicial hasta todos los servicios downstream involucrados en el procesamiento del pedido. Esto permite a los ingenieros filtrar y analizar trazas por estos identificadores de negocio en herramientas APM como Jaeger, Grafana Tempo o Datadog, facilitando la depuración de problemas específicos de un cliente o sesión. También puede usarse para flags de feature, niveles de logging dinámicos o información de A/B testing que necesita ser consistente a lo largo de una transacción distribuida.
Para un arquitecto, 'OpenTelemetry Baggage' es una herramienta estratégica para enriquecer la observabilidad y mejorar la capacidad de depuración en sistemas distribuidos complejos. Permite correlacionar datos de telemetría con métricas de negocio o identificadores de usuario sin tener que modificar las firmas de las funciones o pasar explícitamente estos datos a través de cada capa de la aplicación. Sin embargo, es crucial considerar los trade-offs: el 'Baggage' debe usarse con moderación, ya que la propagación de grandes cantidades de datos o datos de alta cardinalidad puede aumentar el tamaño de los encabezados HTTP o de los mensajes de cola, impactando el rendimiento de la red y el consumo de memoria. Los arquitectos deben definir políticas claras sobre qué datos son apropiados para 'Baggage' (generalmente datos de baja cardinalidad y tamaño pequeño) y cuándo es más adecuado usar 'span attributes' o 'logs' para evitar la sobrecarga del sistema.