Phase 6레슨 27

Distributed Tracing

Trace, Span, Context Propagation, OpenTelemetry — 분산 요청 추적

💡ELI5·

택배 추적과 Distributed Tracing

Trace (주문 #12345의 전체 경로):
  [API Gateway] 10ms
    └─ [Order Service] 50ms
         ├─ [DB Query] 30ms
         └─ [Payment Service] 200ms  ← 병목!
              └─ [Payment DB] 180ms
💡 비유택배 추적 번호(Trace ID). 출발지 → 경유지 → 배송 완료까지 각 단계(Span)의 시간과 위치를 추적. 어디서 지연되었는지 한눈에 볼 수 있다.
🔬Deep Dive·

Trace/Span 구조

Trace: traceId=abc123
  Span A (root): API Gateway, 250ms
    Span B: Order Service, 200ms
      Span C: DB Query, 30ms
      Span D: Payment Service, 150ms
        Span E: Payment DB, 120ms
    Span F: Logging, 5ms

각 Span: traceId, spanId, parentSpanId, service, operation, duration
# Context Propagation (W3C Trace Context 헤더)
# 서비스 A → 서비스 B 호출 시 전달
GET /api/orders HTTP/1.1
traceparent: 00-abc123def456-span001-01
# 형식: version-traceId-parentId-flags
🔬Deep Dive·

샘플링 전략

전략방식적합
Head-based요청 시작 시 확률로 결정 (예: 1%)일반 트래픽, 낮은 오버헤드
Tail-based요청 완료 후 에러/지연 여부로 결정에러/느린 요청 100% 추적
Adaptive트래픽 양에 따라 샘플링 비율 조절트래픽 변동 큰 서비스
⚖️Trade-off·

분산 추적의 비용

이점대가
분산 병목 식별전파 오버헤드 (헤더, 컨텍스트)
서비스 의존도 시각화저장 비용 (Trace 데이터)
에러 원인 추적샘플링으로 일부 누락
p99 지연 분석계측(Instrumentation) 코드 필요

❓ 체크포인트 질문

  1. 1.Trace와 Span의 관계는?
  2. 2.Context Propagation이 왜 필요한가?
  3. 3.Dapper(Google)가 분산 추적의 기초가 된 이유는?
  4. 4.분산 추적이 샘플링을 사용하는 이유는?
  5. 5.OpenTelemetry가 업계 표준이 된 이유는?