Context Propagation의 역할
Jaeger Context Propagation은 서비스 경계를 넘어 요청의 인과관계를 유지하는 메커니즘입니다. 구현된 애플리케이션이 새로운 요청을 수신할 때 Trace ID와 Span ID를 생성하고, 나가는 요청에 이 컨텍스트 정보(trace id, span id, baggage)를 첨부합니다. 다운스트림 서비스가 이 컨텍스트를 추출하면 동일한 Trace ID를 사용하여 새로운 Span을 생성하고 호출자의 현재 Span을 부모로 설정하여 분산 시스템 전체에서 일관된 추적이 가능해집니다.
지원되는 전파 형식
Jaeger 클라이언트 라이브러리는 기본적으로 Jaeger 네이티브 전파 형식을 사용하며, W3C Trace-Context와 Zipkin B3 형식도 지원합니다. Jaeger 네이티브 형식은 HTTP_HEADERS 또는 TEXT_MAP 두 가지 형식으로 제공되는데, HTTP_HEADERS는 HTTP 프로토콜의 헤더 제약사항을 처리하며 baggage 값이 URL 인코딩됩니다. W3C Trace-Context를 사용하려면 JAEGER_PROPAGATION 환경변수를 설정하거나 프로그래매틱 방식으로 구성할 수 있습니다.
실무 주의점
혼합 환경에서 여러 전파 형식을 동시에 지원하려면 새로운 서비스가 레거시 Jaeger 형식과 W3C Trace-Context 형식을 모두 이해해야 합니다. 마이크로서비스 간 컨텍스트 전파가 제대로 이루어지지 않으면 분산 추적이 단편화되어 연결되지 않은 트레이스 조각들이 시각화될 수 있습니다. 따라서 전체 분산 시스템에서 동일한 전파 형식을 사용하는 것이 매우 중요합니다.