What Must Travel
context = small metadata riding WITH every request:
W3C traceparent format (the standard):
traceparent: 00-<trace-id>-<parent-span-id>-<flags>
version- traceid spanid sampled-flag
also common: b3 single/multi-header (zipkin heritage),
vendor formats historically — w3c is the convergence point.
propagation = read incoming → create child span → write
outgoing to every downstream call. EVERY call. one missed
branch = severed subtree in your waterfall.
The Propagation Matrix
where context must survive, and how:
HTTP/REST: headers (middleware does it — verify!)
gRPC: metadata; interceptors standard
MESSAGE QUEUES: message headers/properties — THE gap:
producer injects into kafka headers / sqs message attrs
consumer extracts BEFORE processing starts
ASYNC frameworks: task/thread-pool hops must CAPTURE and
RESTORE context (executor wrapping!) or spans orphan
SCHEDULED jobs: synthesize root spans per execution
EXTERNAL calls out: propagate INTO third parties? only if
they support it; else new root with correlation linkage
the thread-pool case is the sneakiest:
async servlet/futures losing context across executor
boundaries — spans appear parentless, waterfalls fragment.
solved by context-aware executors; discovered by missing-
span dashboards.
Baggage: Context Beyond Tracing
baggage propagates arbitrary KEY-VALUES alongside:
baggage: tenant=acme, tier=premium, debug-session=x9
uses that earn their keep:
□ tenant/tier available DEEP in call chains without
parameter-drilling through every signature
□ routing/policy decisions at mesh level per baggage
□ forced-sampling flags for special debug sessions ✓
discipline (baggage abuse is real):
□ tiny payloads only (every hop carries it)
□ SECURITY review of what's included (it leaks into logs/spans)
□ documented schema; not a free-form dumping ground
Verification Culture
broken propagation is silent until you look:
□ CONNECTED-RATIO metric: % of traces with >1 service span;
drops after deploys flag severed instrumentation ✓
□ ORPHAN-span alerts: roots appearing mid-flow where children
were expected
□ PROPAGATION TESTS in CI: mock multi-hop flows asserting
context continuity through every transport the service uses
□ NEW-TRANSPORT CHECKLIST: any new client/queue/library gets
propagation wired + tested as part of adoption, not later
treat context like authentication middleware:
infrastructure-owned, tested, assumed-present everywhere.
Interview Framing
“Traces show disconnected fragments between our API and worker services” scored shape: context anatomy explained (traceparent), queue-header injection/extraction identified as the likely break, thread-pool-executor subtlety named, connected-ratio monitoring proposed, baggage mentioned scoped-with-discipline. Propagation questions test whether tracing was WIRED or WISHED — the verification culture answer separates them.
Premium Content
Unlock Trace Context Propagation and all premium lessons with a subscription.
All premium lessons
Ad-free experience
Priority support
From ₹199.99/year — See plans