Design a Distributed Tracing System

Problem

Design Dynatrace's domain: a distributed tracing system that captures and assembles end-to-end request traces across microservices.

Requirements

Functional:

  • Propagate trace context across services
  • Collect and assemble spans into traces
  • Query traces by service/latency/error
  • Sampling to control volume

Non-functional:

  • Millions of spans/sec
  • Low overhead on customer apps
  • Fast trace lookups

Discussion points

  1. Context propagation and span model
  2. Sampling strategies (head vs tail)
  3. Span collection and trace assembly
  4. Storage and indexing for queries
  5. Multi-tenant isolation
added …
LeaderboardSalaryAccount