gw auth api ord inv db
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: gatewayapiorders. 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
3 redundant 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.
with baggage
gateway
api
orders
baggage: user.tier=premium api reads tier orders reads tier
1 DB call at gateway, zero downstream

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.

Continue →