Trazado Distribuido
Técnica de observabilidad que rastrea requests a través de múltiples servicios en sistemas distribuidos, permitiendo identificar cuellos de botella y diagnosticar fallos.
seed#tracing#distributed#opentelemetry#jaeger#spans#observability
¿Qué es?
El trazado distribuido rastrea una request desde su origen hasta su destino a través de todos los servicios que toca. Cada servicio genera un «span» con timing y metadata, y todos los spans se agrupan en un «trace» que muestra el flujo completo.
Conceptos
| Concepto | Descripción | Ejemplo |
|---|---|---|
| Trace | El viaje completo de una request | Request HTTP desde el cliente hasta la respuesta |
| Span | Una operación dentro del trace (inicio, fin, metadata) | Llamada a base de datos, invocación de servicio |
| Context propagation | Pasar el trace ID entre servicios | Header traceparent (W3C Trace Context) |
| Sampling | No trazar el 100% de requests para reducir costo | Head-based (1%), tail-based (solo errores) |
Flujo
Cliente → API Gateway (span 1)
→ Auth Service (span 2)
→ Product Service (span 3)
→ Database (span 4)
→ Response
Herramientas
| Herramienta | Tipo |
|---|---|
| Jaeger | Open-source (CNCF) |
| Grafana Tempo | Open-source, integrado con Grafana |
| AWS X-Ray | Managed AWS |
| Datadog APM | SaaS |
| OpenTelemetry | Estándar de instrumentación |
¿Por qué importa?
En sistemas distribuidos, un request atraviesa múltiples servicios. Sin trazado distribuido, diagnosticar latencia o errores es como buscar una aguja en un pajar. Las trazas conectan los puntos entre servicios y revelan dónde se pierde el tiempo.
Referencias
- OpenTelemetry Tracing — Documentación oficial.
- Jaeger — CNCF, 2024. Sistema de tracing distribuido open source.
- Zipkin — OpenZipkin, 2024. Sistema de tracing distribuido.