🔥 고급2026-04-139분
LLM 비용 관측 — 엔드포인트·사용자·기능별 단가를 실시간으로 본다
월말에 청구서 보고 놀라면 늦다. 호출마다 비용을 차원 태그와 함께 적재하는 관측 파이프라인.
운영비용최적화observability
왜 미리 보나
- 비용 이상 탐지: 특정 사용자가 갑자기 10배 쓰면 1시간 안에 알림
- 기능별 ROI: "요약 기능이 월 $3k 쓰는데 유료 전환율 0.2%" 같은 의사결정
- 프롬프트 비용 회귀: 프롬프트를 바꿨더니 평균 토큰이 30% 증가했더라
표준 로깅 스키마
interface LLMCall {
ts: Date
request_id: string
session_id: string
user_id: string
feature: string // "summary" | "classifier" | "agent_loop"
model: string // "claude-sonnet-4-6"
input_tokens: number
output_tokens: number
cache_read_tokens: number
cache_write_tokens: number
cost_usd: number
latency_ms: number
stop_reason: string
tool_calls: string[] // 사용된 도구 이름
}
호출 래퍼
const PRICING: Record<string, { in: number; out: number; cacheRead: number; cacheWrite: number }> = {
"claude-opus-4-7": { in: 5, out: 25, cacheRead: 0.5, cacheWrite: 6.25 },
"claude-sonnet-4-6": { in: 3, out: 15, cacheRead: 0.3, cacheWrite: 3.75 },
"claude-haiku-4-5": { in: 1, out: 5, cacheRead: 0.1, cacheWrite: 1.25 },
}
async function callAndLog(feature: string, userId: string, params: any) {
const t0 = Date.now()
const msg = await client.messages.create(params)
const u = msg.usage
const p = PRICING[params.model]
const cost =
(u.input_tokens / 1e6) * p.in +
(u.output_tokens / 1e6) * p.out +
((u.cache_read_input_tokens ?? 0) / 1e6) * p.cacheRead +
((u.cache_creation_input_tokens ?? 0) / 1e6) * p.cacheWrite
await logger.info({
feature, user_id: userId, model: params.model,
input_tokens: u.input_tokens,
output_tokens: u.output_tokens,
cache_read_tokens: u.cache_read_input_tokens ?? 0,
cache_write_tokens: u.cache_creation_input_tokens ?? 0,
cost_usd: cost,
latency_ms: Date.now() - t0,
stop_reason: msg.stop_reason,
})
return msg
}
저장소
- 핫: ClickHouse / BigQuery — 분 단위 집계, 대시보드
- 콜드: S3/Parquet — 월 단위 감사
핵심 대시보드 4개
- 시간당 총 비용 — 이상 탐지 임계선
- feature × model 히트맵 — 어느 기능이 Opus를 많이 쓰나
- 사용자 Top 20 — abuse 의심 탐지
- 캐시 적중률 — 시스템 프롬프트 설계 회귀 감시
알림 규칙 예
- 시간당 비용이 지난 7일 평균의 2σ 이상 → Slack
- 단일 사용자가 5분 내 $10 초과 → 자동 제한 + 관리자 알림
- 캐시 적중률이 전일 대비 30% 하락 → 엔지니어 온콜
예측·예산
월초에 "이 달 추세대로면 $X 쓸 것" 값을 매일 계산해 대시보드에 띄워라. 청구서 공포 사라진다.
체크리스트
- [ ] 모든 호출이 래퍼 통과
- [ ] feature·user·model 태그
- [ ] cost_usd 저장 (토큰만 저장 X)
- [ ] 시간당 이상 탐지 알림
- [ ] 월별 예상 비용 계산