비즈니스 현실7 분 읽기

내 원가는 2분짜리 통화가 정한 값이었다

실시간 음성 앱의 분당 원가를 실측했더니 적자였습니다. 가격을 다 뜯어고친 다음에야, 그 숫자가 122초짜리 표본에서 나왔다는 걸 알았습니다.

#reality-check#first-principles#analytics#gotchas
Left panel: a 122-second sample yielding $0.20 per minute. Right panel: a 34-minute call yielding $0.12 per minute.
같은 앱, 같은 모델. 표본 길이만 달랐습니다.

실시간 음성 대화 앱을 만들고 있습니다. 사용자가 말하면 모델이 소리 내어 답하는 구조라, 원가는 통화 시간에 정비례합니다. 규모의 경제가 없습니다. 그래서 분당 원가 하나가 사업 전체를 결정합니다.

그 숫자를 실측했습니다. 분당 $0.1885. 애플 수수료를 빼면 순매출은 분당 $0.1416. 구독 세 종류가 전부 적자였습니다.

대응은 빨랐습니다. 구독에 포함된 분량을 1/3로 줄였습니다(60/120/300분 → 20/40/100분). 소모성 분 팩도 새로 붙였습니다. 서버와 앱을 함께 고쳐 배포했습니다.

그리고 다음 날, 그 원가가 틀렸다는 걸 알았습니다.

여러분의 가격표 뒤에도 이런 숫자가 하나 있을 겁니다. 그 값은 몇 건에서 나왔습니까?

표본이 2분이었습니다

원가를 다시 잰 건 다른 이유 때문이었습니다. 조직 사용량 API를 읽을 권한이 없어서, 그동안은 대시보드 숫자와 DB 기록을 맞춰 보는 방식이었습니다. 권한이 있는 키를 확보하고 서버 정본을 처음 봤습니다.

일자별로 갈라 보니 이렇게 나왔습니다.

  • 08-22: 통화 122초, 비용 $0.41 → 분당 $0.20
  • 08-25: 통화 1,052초, 비용 $4.28 → 분당 $0.25
  • 08-24: 통화 1,300초, 비용 $1.11 → 분당 $0.05

같은 앱, 같은 모델인데 5배가 벌어집니다. 08-24가 싼 이유는 금방 찾았습니다. 그날은 결제 테스트를 46세션 돌린 날이라 대화 없이 시간만 흐른 세션이 분모를 부풀렸습니다. 알려진 함정이었고, 메모리에도 적혀 있었습니다.

문제는 반대쪽이었습니다. 08-22의 122초는 2분짜리 통화 두 건이었습니다.

짧은 통화는 원가가 비쌉니다

분 단위로 사용량을 뜯어보니 원인이 보였습니다. 08-25의 34분짜리 연속 대화에서, 입력 토큰 499,252개 중 373,632개가 캐시였습니다. 캐시 단가는 오디오 입력의 1/80입니다.

대화가 길어질수록 앞선 턴이 캐시에 얹히고, 분당 원가는 계속 떨어집니다. 반대로 2분짜리 통화는 캐시가 거의 0입니다. 세션을 여는 고정 비용(페르소나 지시문 전송)이 짧은 통화에 통째로 실립니다.

제가 잰 "실측 원가"는 가장 비싼 구간의 값이었습니다.

실사용에 가까운 표본으로 다시 계산하니 분당 약 $0.12였습니다. 현재 가격에서 분당 순매출은 $0.4246이니, 마진은 71%입니다. "전부 적자"가 아니라 건강한 구조였습니다.

당신이라면 어느 쪽을 믿겠습니까

여기서 갈립니다. 이미 가격을 고쳐서 나갔습니다. 되돌릴 것인가, 둘 것인가.

저는 두기로 했습니다. 분량 축소는 결과적으로 옳은 방향이었고(분당 소매가가 3배 올랐습니다), 되돌리면 이미 그 조건으로 산 사람들과 어긋납니다. 다만 왜 옳았는지에 대한 설명이 틀렸다는 건 기록해 뒀습니다. 다음에 이 숫자를 근거로 뭔가를 결정할 사람이 같은 착각을 하지 않도록요.

자가진단 세 가지

원가나 전환율 같은 단가를 근거로 결정을 내리기 전에, 이 세 가지를 확인해 보세요.

  1. 분모가 몇 건입니까? 두 건이면 그건 측정이 아니라 일화입니다.
  2. 그 표본이 사용자의 전형입니까? 개발자가 테스트로 만든 짧은 세션은 실사용과 원가 구조가 다릅니다.
  3. 비용이 규모에 따라 변합니까? 캐시·고정 오버헤드가 있으면 짧은 표본은 항상 비싸게 나옵니다.

솔직한 부분

이 글의 교훈이 "더 큰 표본을 쓰라"는 건 아닙니다. 그건 누구나 압니다. 진짜 문제는 제가 틀린 숫자로 이미 행동했다는 것입니다. 코드를 고치고, 서버를 배포하고, 앱을 새로 올린 뒤에 숫자가 틀렸다는 걸 알았습니다.

측정과 결정 사이에 하루만 두었어도 달랐을까요. 아마 아닐 겁니다. 다음 날에도 표본은 2분이었을 테니까요. 필요했던 건 시간이 아니라 "이 숫자가 몇 건에서 나왔나"를 묻는 습관이었습니다.

분모를 놓쳐 결론이 뒤집힌 이야기는 전에도 쓴 적이 있습니다 — 제 판정 기준은 게임을 죽이려던 게 아니었습니다 — 노출 1회를 죽이려 했습니다.

지금 여러분의 대시보드에서 가장 중요한 숫자 하나를 고르고, 그게 몇 건에서 나온 값인지 확인해 보세요. 저는 그걸 안 해서 하루를 썼습니다.

유튜브

내 원가는 2분짜리 통화가 정한 값이었다

관련 글