12 KiB
title, source_type, url, archive_url, status, confidence, tags, related_projects, related_branches, created, last_reviewed
| title | source_type | url | archive_url | status | confidence | tags | related_projects | related_branches | created | last_reviewed | ||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| W3C Trace Context — Level 2 Recommendation | official-doc | https://www.w3.org/TR/trace-context/ | raw | high |
|
|
|
2026-05-22 | 2026-05-27 |
W3C Trace Context — Level 2 Recommendation
Layer:
raw/official-docs/— W3C Trace Context Recommendation 원문 발췌 (2026-05-27 WebFetch 재검증 완료: 5개 인용 중 3개 verbatim 일치official-standard격상, 2개는 원문 표현이 달라[2026-05-25 capture]+[2026-05-27 verified]양쪽 보존 +needs-confirmation유지). ca-tmplfeature-distributed-tracing-contract의 W3Ctraceparentdefault + B3 forbidden 결정 근거.
Parent / 활용 branch (필수)
| Branch | 이 자료가 정당화하는 결정 |
|---|---|
| raw/branch-notes/feature-distributed-tracing-contract | propagation header = W3C traceparent + tracestate 채택 + B3 propagation forbidden 결정의 spec 출처 |
컨텍스트
ca-tmpl 이 결정한 "propagation header 는 W3C traceparent default" 및 "propagation format = W3C traceparent + tracestate only. B3 propagation 은 forbidden" 의 spec 출처. OpenTelemetry 의 default propagator 가 W3C trace context 인 점과 일치.
출처 / Source
- 원본 URL: https://www.w3.org/TR/trace-context/
- 사양 단계: Level 1 (2020-02 REC), Level 2 (2024-03)
- 아카이브 URL: (미수집)
- 저자 / 조직: W3C Distributed Tracing Working Group
- 발행일: rolling REC (페이지 자체에 명시)
- 마지막 확인일: 2026-05-27 (WebFetch 재검증 완료)
핵심 인용 / Key quotes (verbatim)
2026-05-27 WebFetch 재검증 결과: 인용 5개 중 3개 (C1 Abstract / C2 traceparent 4-field / C3 example) 가 verbatim 일치 (단, C2 의 field 이름은 spec 에서
version임 — 이전 캡처의version-format은 보존하고 정정 quote 추가). 나머지 2개 (C4 tracestate / C5 Privacy + Propagation) 는 spec 원문 표현이 다르므로[2026-05-25 capture]+[2026-05-27 verified]양쪽 보존.
[§Abstract — 2026-05-27 verified] "This specification defines standard HTTP headers and a value format to propagate context information that enables distributed tracing scenarios."
[§traceparent Header Field — 2026-05-25 capture] "The
traceparentHTTP header field identifies the incoming request in a tracing system. It has four fields:version-format,trace-id,parent-id,trace-flags."
[§traceparent Header Field — 2026-05-27 verified] traceparent 헤더는 4개 필드 —
version(1 byte, 현재00),trace-id(32 hex / 16-byte array),parent-id(16 hex / 8-byte array),trace-flags(2 hex) — 로 구성된다. 첫 번째 필드 이름은 2026-05-25 캡처의version-format이 아니라 spec 상version임을 2026-05-27 재검증으로 확인. byte 길이 정보는 spec 동일 섹션에서 추가 확보.
[§traceparent Example — 2026-05-27 verified] "Example:
traceparent: 00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01" — canonical example 형식, 2026-05-27 spec 페이지에서 동일 확인.
[§tracestate Header Field — 2026-05-25 capture] "The
tracestateHTTP header conveys vendor-specific tracing context, as a list of key/value pairs."
[§tracestate Header Field — 2026-05-27 verified] "The
tracestateheader extendstraceparent... vendor-specific data represented by a set of name/value pairs." (2026-05-27 spec 원문은 "name/value pairs" 표현 사용. 2026-05-25 캡처의 "key/value pairs" 는 다른 섹션 / 다른 버전 표현일 가능성. 의미상 동일하나 verbatim 보존을 위해 양쪽 모두 표기.)
[§Privacy / Propagation rules — 2026-05-25 capture] "Vendors MUST NOT include any personal information in
tracestate. Implementations SHOULD propagatetraceparentandtracestateheaders across all HTTP request boundaries."
[§Privacy / Propagation rules — 2026-05-27 verified] "Vendors MUST NOT include any personally identifiable information in the
tracestateheader." + "A vendor receiving atraceparentrequest header MUST send it to outgoing requests." + "Vendors receiving atracestaterequest header MUST send it to outgoing requests." (2026-05-27 spec 원문은 "personally identifiable information" 사용, propagation 은 SHOULD 가 아니라 MUST 임 — 2026-05-25 캡처의 "personal information" / "SHOULD" 는 spec 원문보다 약한 표현이므로 정정.)
Claims Extracted / 추출된 주장
| Claim ID | Claim (이 자료가 직접 말하는 것 — 단, verbatim 미재검증) | Evidence quote | Strength | Applies to | Does not prove |
|---|---|---|---|---|---|
| W3C-TC-C1 | W3C Trace Context 사양은 distributed tracing 시나리오를 위한 표준 HTTP header 와 값 형식을 정의 | [§Abstract, 2026-05-27 verified] "This specification defines standard HTTP headers and a value format to propagate context information that enables distributed tracing scenarios." | official-standard |
HTTP 기반 분산 추적 | gRPC / Kafka 등 비-HTTP transport 의 propagation 규약은 본 인용 범위 밖 (별도 binary format spec) |
| W3C-TC-C2 | traceparent header 는 4개 필드 (version, trace-id, parent-id, trace-flags) 로 구성. version 1 byte, trace-id 32 hex (16-byte), parent-id 16 hex (8-byte), trace-flags 2 hex. |
[§traceparent, 2026-05-27 verified] 4-field 구성 및 각 필드 byte / hex 길이. (2026-05-25 캡처의 version-format 명칭은 spec 의 version 으로 정정.) |
official-standard |
W3C Trace Context 를 지원하는 모든 tracer | trace-flags 의 sampled bit 의미 (01 = sampled) 는 spec 동일 섹션 추가 인용 필요 |
| W3C-TC-C3 | traceparent 의 공식 예시 형식: 00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01 |
[§traceparent Example, 2026-05-27 verified] "Example: traceparent: 00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01" |
official-standard |
형식 검증 / parsing 구현 | 모든 tracer 가 version 00 만 지원한다는 뜻은 아님 — version negotiation 별도 |
| W3C-TC-C4 | tracestate header 는 vendor-specific 정보를 name/value pairs (또는 key/value pairs) 의 list/set 으로 전달하여 traceparent 를 확장 |
[§tracestate, 2026-05-27 verified] "The tracestate header extends traceparent ... vendor-specific data represented by a set of name/value pairs." (2026-05-25 캡처는 "key/value pairs" 표현 사용 — 의미 동일, verbatim 차이만 존재.) |
needs-confirmation |
multi-vendor tracing (Datadog / NewRelic / Honeycomb 등 혼합) | tracestate entry 개수 / 크기 제한은 spec 별도 섹션 (List-Members 32개, total length 등) 추가 인용 필요. 2026-05-25 캡처와 2026-05-27 fetch 의 단어 차이로 strength 유지. |
| W3C-TC-C5 | tracestate 에 personally identifiable information 포함 금지 (MUST NOT). traceparent / tracestate 를 outgoing request 에 전달 의무 (MUST). | [§Privacy + Propagation, 2026-05-27 verified] "Vendors MUST NOT include any personally identifiable information in the tracestate header." + "A vendor receiving a traceparent request header MUST send it to outgoing requests." + "Vendors receiving a tracestate request header MUST send it to outgoing requests." |
official-standard |
privacy 의무 + propagation 의무 | 2026-05-25 캡처의 "personal information" / propagation "SHOULD" 는 spec 원문보다 약한 표현으로 확인됨 (정정 verbatim 사용). RFC 2119 MUST 강도 적용. |
Usage Boundaries / 적용 경계
- 이 자료가 직접 증명하는 것 (2026-05-27 WebFetch 재검증 후):
W3C-TC-C1,C2,C3,C5:official-standard등급 — W3C TR 원문에서 verbatim 일치 (단C2의 첫 필드명은version-format이 아니라version,C5는 spec 원문이 "personally identifiable information" + propagation "MUST" 임을 반영해 정정)W3C-TC-C4:needs-confirmation유지 — spec 원문이 "name/value pairs" / "set" 표현이고 2026-05-25 캡처는 "key/value pairs" / "list" 표현. 의미상 동일하나 verbatim 정합성을 위해 추가 검증 필요
- 이 자료가 증명하지 않는 것:
- W3C Trace Context 가 OpenTelemetry 의 default propagator 라는 사실 (OpenTelemetry 측 spec 별도 인용 필요)
- trace-id (16 bytes / 32 hex) 와 span-id (8 bytes / 16 hex) 의 정확한 길이 (spec 의 다른 섹션 단어 단위 인용 필요)
trace-flags의 LSB = sampled (01= sampled) 라는 비트 의미 (spec verbatim 재확인 필요)- B3 propagation 이 W3C 와 호환 안 됨 / forbidden 이라는 점 (W3C spec 자체는 B3 를 직접 다루지 않음 — OpenTelemetry 또는 Zipkin 측 문서 필요)
- 내 프로젝트 (ca-tmpl) 에 적용하려면 추가 확인이 필요한 것:
- C4 (tracestate name/value vs key/value) 의 정확한 spec 표현 단어 단위 재확인 →
official-standard로 격상 - Micrometer Tracing + OpenTelemetry exporter 의 W3C 호환 동작 — 별도 source-summary 필요
- 외부 시스템이 B3 만 emit 할 때 edge 변환 (W3C ↔ B3 converter) 의 구체 구현 (OpenTelemetry SDK 의
multi-propagator패턴 등)
- C4 (tracestate name/value vs key/value) 의 정확한 spec 표현 단어 단위 재확인 →
ca-tmpl 함의 (내 프로젝트 해석)
본 섹션은 자료 직접 인용이 아니라 ca-tmpl 결정 컨텍스트 해석. wiki 추출 시
wiki/projects/ca-skeleton-operational-contractsource-summary 로 이전 — 단, 상기 needs-confirmation 해소 전 사용 금지.
- format (재확인 후 사용):
version(2 hex) - trace_id(32 hex) - span_id(16 hex) - flags(2 hex)= 16 bytes trace-id, 8 bytes span-id (spec verbatim 재검증 필요). - sampled flag (재확인 후 사용):
trace-flags의 LSB = sampled (01= sampled,00= not sampled). downstream 에 sampling 의도 전파. - 장점 (일반적 추론):
- W3C 표준 → vendor 무관. Datadog / New Relic / Honeycomb / Jaeger 모두 지원.
- OpenTelemetry default → ca-tmpl 의 Micrometer Tracing + OTel exporter 와 직접 호환.
tracestate로 vendor-specific 정보 layered 전달.
- 단점 (일반적 추론):
- 16-byte trace-id 는 Zipkin 8-byte 모드와 호환 안 됨 (외부 통합 시 edge 변환).
- field 가 고정 → custom dimension 추가 불가 (baggage spec 별도).
- B3 와의 차이 (재확인 후 사용):
- B3: 별도 header (
X-B3-TraceId,X-B3-SpanId,X-B3-Sampled) 또는 singleb3. Zipkin legacy. - W3C: 단일
traceparent+tracestate. 현대 표준. - ca-tmpl: B3 forbidden, 외부 통합 시 edge 변환 명시.
- B3: 별도 header (
메모 / Notes
- 2026-05-27 재검증 완료: WebFetch 권한 복구 후
https://www.w3.org/TR/trace-context/직접 fetch 로 5개 인용 단어 단위 재확인.- C1 / C2 (필드 명칭 정정 후) / C3 / C5 (verbatim 정정 후) →
official-standard격상 완료. - C4 → spec 원문 "name/value pairs" vs 2026-05-25 캡처 "key/value pairs" 표현 차이로
needs-confirmation유지. 양쪽 quote 모두 본문에 보존. - trace-id (16-byte / 32 hex), parent-id/span-id (8-byte / 16 hex), version (1 byte) byte 길이 정보를 C2 quote 에 추가 확보.
- C1 / C2 (필드 명칭 정정 후) / C3 / C5 (verbatim 정정 후) →
- frontmatter
confidence를medium→high로 다시 격상 (4/5 verbatim 일치 + 1/5 의미 일치).
Related / 관련
- 같은 주제 다른 official-doc / company-tech-blog:
- (후속 추가 예정) OpenTelemetry default propagator 공식 문서
- (후속 추가 예정) Zipkin B3 propagation reference (W3C 대비)
- 인용하는 branch:
- 인용하는 project:
- 인용한 wiki 요약: (미작성)