Il problema del tracing distribuito
Le architetture a micro-servizi generano cascate di chiamate: una request HTTP entra, attraversa 5-50 servizi, ciascuno con le proprie latenze, errori, dipendenze downstream. I log tradizionali non bastano: serve tracing distribuito che correla tutti gli span di una singola transazione con trace ID condiviso.
Dapper (Google, 2010) e Zipkin (Twitter, 2012) sono i precursori. Uber costruisce Jaeger dopo aver superato Zipkin in scala interna.
Il rilascio
Jaeger è rilasciato open source da Uber nell’aprile 2017. Lead engineer: Yuri Shkuro. Scritto in Go, licenza Apache 2.0. Donato alla CNCF nell’ottobre 2017, graduated nell’ottobre 2019. Nome: Jägermeister (cacciatore in tedesco).
Architettura
- Agent — sidecar/DaemonSet che raccoglie span dai servizi
- Collector — riceve span, processa, scrive in storage
- Query service + UI — interroga storage per visualizzare trace
- Storage — Cassandra (originale), Elasticsearch, Kafka, gRPC plugin, Badger (embedded)
- Ingester — Kafka → storage (deployment async)
Instrumentazione
Supporto:
- OpenTracing API (storico) — interfaccia cross-vendor precedente
- OpenTelemetry (OTel) — standard corrente CNCF; Jaeger è backend OTel-compatible
- Jaeger native clients — Go, Java, Python, Node, C++
Molte librerie/framework hanno instrumentazione auto: Express, Spring Boot, gRPC, Kafka client, HTTP client, SQL driver.
Caratteristiche UI
- Trace search — per servizio, operazione, tag, duration
- Service dependency graph — dipendenze tra micro-servizi
- Flame graph — latenza per span
- Compare traces — diff tra due esecuzioni
Concorrenti
- Zipkin (Twitter, 2012) — storico, più semplice
- Tempo (Grafana Labs, 2020) — storage-first, integrato con Loki/Prometheus
- AWS X-Ray, Google Cloud Trace, Azure Monitor — managed
- Datadog APM, New Relic, Dynatrace — commerciali
- SigNoz — OSS full stack
- Honeycomb — analytics-oriented
Declino relativo
Dal 2023-2024 molti team stanno migrando a Grafana Tempo o SigNoz per avere stack osservabilità unificato (log + metrics + traces). Jaeger resta dominante dove già installato e stabile.
Nel contesto italiano
Jaeger è presente in:
- Telco — TIM, Vodafone per trace B/OSS distribuiti
- Fintech e challenger bank — debug flussi transazionali
- Grandi e-commerce con micro-servizi
- PA digitale — progetti con tante integrazioni inter-ente
- SaaS B2B che vendono APIs
Lo stack tipico è OpenTelemetry SDK → Collector → Jaeger in 2024-2026.
Riferimenti: Jaeger (Uber, aprile 2017). Yuri Shkuro. Licenza Apache 2.0. Scritto in Go. CNCF graduated (ottobre 2019). OpenTracing / OpenTelemetry backend. Storage Cassandra, Elasticsearch, Kafka.
