피드로 돌아가기
Per-Customer LLM Cost Reports (Without Rearchitecting Your Billing Pipeline)
Dev.toDev.to
Backend

OpenTelemetry Baggage를 활용한 무중단 고객별 LLM 비용 추적 설계

Per-Customer LLM Cost Reports (Without Rearchitecting Your Billing Pipeline)

Gabriel Anhaia2026년 5월 24일11intermediate

Context

기존 tracing 시스템의 request_id 중심 설계로 인해 고객별 비용 산정을 위한 customer_id 누락 발생. 모든 서비스의 스팬 방출 지점에 필드를 추가하는 방식은 과도한 리팩토링 공수와 휴먼 에러로 인한 데이터 유실 위험 존재.

Technical Solution

  • OpenTelemetry Baggage를 도입하여 요청 경계(Boundary)에서만 customer_id를 설정하고 전파하는 구조 설계
  • SpanProcessor를 구현하여 Baggage의 특정 키를 모든 하위 Span Attribute로 자동 복제하는 메커니즘 구축
  • 비동기 작업 및 외부 서비스 전파를 위해 W3C Baggage Header 및 Job Payload 직렬화 적용
  • 시간 기반 버전 관리가 가능한 llm_price_book 테이블을 설계하여 과거 시점의 정확한 과금 산정 보장
  • LLM 클라이언트 래퍼에 is_retry 속성을 추가하여 실제 지불 비용(Gross)과 청구 가능 비용(Net)을 분리 집계

1. 컨텍스트 전파 시 비즈니스 로직 내부가 아닌 HTTP 미들웨어, Job Consumer 등 경계 지점에서만 Baggage 설정

2. 과금 데이터의 정합성을 위해 현재 가격이 아닌 요청 시점의 유효 가격을 참조하는 버전 관리 테이블 구축

3. 단순 비용 합산이 아닌 Retry 횟수를 추적하여 인프라 비용과 고객 청구 비용의 괴리 분석

원문 읽기