Some paths require a wider view. Return on a larger screen.
What You Carry
The trace context carries the thread of identity. But sometimes you need to carry something of your own across the boundary.
A checkout request flows through three services: gateway → api → orders. The gateway knows the user is premium. Downstream, the orders service needs the customer tier for priority routing. Without baggage, each service must query the user database separately.
without baggage
gateway
→
api
→
orders
gateway→DB: query tier
api→DB: query tier
orders→DB: query tier
3redundant DB calls for the same value
Every service that needs the customer tier must query the database independently. Three services, three round trips to the same database.
The gateway knows the user is premium. How should downstream services get this info?
What is the difference between trace context and baggage?
Trace context carries telemetry identity. Baggage carries your application data — user tier, priority, feature flags.
Same propagation mechanism, different cargo.
But the line blurs: when a span processor extracts baggage into attributes, that business data becomes an observability dimension — filter traces by customer tier, split metrics by deployment ring, consistently across every service.