무료 티어는 저렴한 길이 아니다: 병합된 PR당 AI 코딩 옵션 가격 책정
요약
AI 코딩 옵션의 가치를 토큰이나 좌석 수 대신 '병합된 PR당 총비용'으로 재정의해야 합니다. 이 접근법은 단순한 기능 비교를 넘어, 재시도, 검토 시간 등 실제 엔지니어링 비용을 포함하여 객관적인 예산 검토가 가능하게 합니다.
핵심 포인트
- AI 코딩 옵션 가격 책정 단위를 '병합 PR당 총비용'으로 정의해야 함.
- 단순 토큰 사용량보다 재시도, 검토 시간 등 인건비(H)를 포함하는 것이 중요함.
- 데이터는 대시보드가 아닌 레포지토리 내 JSONL 형식으로 관리하여 신뢰성을 확보해야 함.
- 작은 표본 크기 비교는 의미가 없으므로 충분한 데이터 수집이 필수적임.
목요일 오후 4시. 한 플랫폼 리드가 우리 채널에 스크린샷을 올립니다. 무료 토큰, 무료 서버 옵션, 그리고 한 줄의 문구 — "우리가 왜 무엇이든 돈을 내야 하는가?"
공정한 질문입니다. 하지만 단위 자체가 잘못되었습니다. 우리는 결코 토큰에 대해 비용을 지불한 적이 없습니다. 우리가 지불했던 것은 토큰이 포함하지 않는 부분들, 즉 40분을 잡아먹은 재시도(retry), 그럴듯하지만 틀린 마이그레이션을 포착한 검토(review), 아무도 소유하고 싶어 하지 않은 박스에 대한 유지보수 기간 등이었습니다.
그래서 제대로 답변해 봅시다. 기능 격자표가 아니라, 예산 검토에서 방어할 수 있는 숫자로 말입니다.
승자를 정의하기 전에 단위를 정의하라
모든 옵션의 가격을 **병합된 PR당 비용(cost per merged PR)**으로 책정하십시오. 좌석당 비용이 아닙니다. 토큰당 비용도 아니고, '무료'가 아닙니다.
$$
C_{ ext{lane}} = \frac{\text{model spend} + \text{retry minutes} \times H + \text{review minutes} \times H + \text{blocked wait} \times H + \text{amortized ops}}{\text{merged PRs}}
$$
여기서 H는 시간당 엔지니어 비용을 60으로 나눈 값입니다. 네, 검토 시간이 분자에 포함되어야 합니다. 검토 시간을 두 배로 늘리는 무료 옵션은 무료가 아닙니다. 그것은 청구서를 눈에 보이지 않는 사람에게 옮겼을 뿐입니다.
고의적으로 제외할 두 가지 사항:
- 매몰된 설정 비용(Sunk setup cost). 이를 상각하고, 논쟁하지 마십시오. 과거 시간은 증거가 아닙니다.
- **'개발자 만족도(Developer happiness)'**는 프록시(proxy)가 없는 한 제외하십시오. 프록시는 2주 이후 자발적인 옵션 사용 같은 것입니다.
이와 같은 점수표는 객관적 진실이 아니라 대화 도구입니다. 이는 두 사람이 다른 분위기 대신 동일한 숫자에 대해 의견을 달리할 수 있도록 존재합니다.
장부: 12개 필드, 작업당 한 줄
측정하지 않은 옵션은 비교할 수 없습니다. 레포지토리에 커밋되고, 다른 모든 아티팩트처럼 PR에서 검토되는 추가 전용 JSONL 형식입니다.
{"date":"2026-10-15","lane":"free","task":"TICKET-412","tokens_in":8200,"tokens_out":1900,"wait_s":37,"retries":1,"review_min":22,"merged":true}
스프레드시트 없이 하나의 작업을 기록하는 방법:
start=$(date +%s)
# ... 에이전트 또는 어시스턴트를 티켓에 실행 ...
end=$(date +%s)
...
도구에서 토큰 수를 보고하지 않는 경우 null을 작성하고 사용한 프록시를 기록하세요. 라벨이 지정된 프록시는 조작된 정수보다 항상 낫습니다.
대시보드가 아닌 JSONL 형식인 이유
다른 사람이 소유하는 대시보드는 아무도 신뢰하지 않는 숫자가 됩니다. 리포지토리 내 파일은 재견적, 공급업체 변경, 그리고 설정한 사람의 퇴사에도 살아남습니다.
논쟁을 끝내는 스크립트
import json, collections
H = 85 / 60 # 분당 로드된 엔지니어 비용; 귀하의 것으로 대체하세요
...
매주 실행하세요. 만약 어떤 레인(lane)이 병합 PR이 스무 개 미만이라면, 멈추고 더 많은 데이터를 수집하세요. 이 분야에서 작은 표본 크기 비교는 대부분 소수점을 단 장식품에 불과합니다.
손익분기점: 재견적을 견디는 유일한 숫자
자체 호스팅(self-hosted) 또는 유료 레인은 볼륨 임계값 이상에서만 가치가 있습니다:
N* = (고정 월 비용 + 유지보수 시간 × 로드된 시간당 비용) / (PR당 무료 비용 − PR당 호스팅 변동 비용)
작동 예시. 아래 모든 수치는 공급업체 견적이 아닌 설명용 입력값입니다 — 귀하의 값으로 대체하세요.
- 고정 월별 호스팅/좌석 비용: $180
- 설정 시간: 30시간, 12개월에 상각 → 월 2.5시간
- 지속적인 유지보수: 월 6시간 (시간당 $85)
- 무료 레인: 병합 PR당 $4.10 (리뷰 중심, 재시도 빈번)
- 호스팅 레인 변동 비용: 병합 PR당 $0.90
월 고정 등가액 = 180 + (6 + 2.5) × 85 = $902.50. PR당 절감액 = $3.20. 따라서 N* = 282 병합 PR/월입니다.
민감도 분석은 동일한 기본값을 사용하며, 언급된 곳만 다릅니다:
| 변경 사항 | N* |
|---|---|
| 기본값 | 282 |
| ... | |
| 읽을 것은 두 번째 행과 네 번째 행입니다. 결정은 목록 가격보다 무료 레인 비용과 유지보수 시간에 훨씬 더 민감합니다. 이것이 바로 전환하기 전에 측정하는 전체 요점입니다. |
러닝웨이: 무료 할당량이 실제로 얼마나 지속되는가
할당량(allowance)은 손익계산서(P&L) 항목이 아니라 파일럿 예산입니다. 프로젝트 운영자는 1,000만 토큰의 무료 할당량과 무료 서버 옵션을 명시합니다. 할당량은 변하고 스크린샷은 구식이 되므로, 약정하기 전에 현재 조건을 직접 확인하세요.
months_of_runway = allowance / (median_tokens_per_task × tasks_per_month × people)
자체 중앙값(median)을 이용한 예시 계산이며, 약속은 아닙니다: 작업당 9,000 토큰, 개발자 1인당 주당 25개 작업, 개발자 4명 → 월 430개 작업 → 월 3.87M 토큰 → 약 2.6개월. 이는 장부를 채우기에는 충분하지만, 장부를 건너뛰기에는 부족합니다.
MonkeyCode는 해당 스크린샷의 오픈 소스 프로젝트입니다. 공개합니다: 본 기사는 MonkeyCode의 제품 홍보의 일환으로 작성되었습니다. 무료 모델 액세스와 무료 서버 옵션이 아래 실험에서 사용 가능한 제로 비용(zero-cost) 통제군(control arm)을 만드는 요소이며, 이것이 정직한 역할이자 실제 역할을 합니다.
의사 결정표: 기능이 아닌 적합성(fit)
| 귀하의 제약 조건 | 무료 트랙은 다음 경우에 적합합니다… | 자체 호스팅(Self-hosted)은 다음 경우에 적합합니다… | 유료 좌석(Paid seat)은 다음 경우에 적합합니다… |
|---|---|---|---|
| 볼륨 (Volume) | N* 미만, 즉 아직 학습 중일 때 | 2개월 연속으로 N* 초과할 때 | 예측 불가능하고 급증하는(spiky) 경우 |
| ... |
세 개의 관문, 하나의 소유자, 하나의 만료 기한
모든 파일럿은 종료 날짜가 필요하며, 그렇지 않으면 우연히 아키텍처가 됩니다.
- 관문 1 — 도구(Instrument) (0~3일). 소유자: 파일럿을 진행하는 리드 개발자. 종료 조건: 장부에 트랙당 병합된 PR 20개, 또는 비교는 무효합니다.
- 관문 2 — 비교(Compare) (14일차). 종료 조건:
N*를 계산하여 실제 월별 볼륨과 비교합니다. 의사 결정 규칙: 0.5 ×N*미만이면 무료로 유지; 2 ×N*초과이면 호스팅 재견적(re-quote hosted); 그 사이면 서면 사유와 함께 한 번 연장합니다. - 관문 3 — 재검증 및 종료(Re-verify and exit) (30일차). 재확인하는 날짜에 할당량과 서버 약관을 다시 확인하고, 장부를 게시한 후 트랙을 선택합니다. 만료: 관문 1로부터 30일. 무응답 연장은 없습니다.
이 과정에서 제로 비용 통제군을 원한다면, 무료 티어와 무료 서버 옵션은 로깅을 시작하기에 합리적인 장소입니다. 먼저 저장소(repo)의 README를 확인하여 현재 약관을 확인한 후, 장부가 논하도록 두십시오.
이 모델이 깨지는 곳
- 얇은 데이터(Thin data). 레인당 20개 미만의 PR로는
N*는 무대 연극에 불과합니다. - 기록되지 않은 검토 부채(Unlogged review debt). 리뷰어가 회의록을 기록하지 않으면, 무료 레인은 항상 실제보다 더 저렴해 보입니다.
- 허용치 표류(Allowance drift). 파일럿 도중에 할당량 변경이 발생하면, PR당 비용 라인이 아니라 귀하의 활주로 라인을 무효화합니다.
- 절대 기록하지 않은 무료 서버 기대치. 컴퓨팅 자원이 어디에 존재하는지가 장애를 누가 소유하는지와 같지 않습니다. 의존하기 전에 물어보세요.
- 한 팀의 수치.
N*는 검토 문화가 다른 팀 간에는 이전되지 않습니다.
이 접근 방식을 사용해서는 안 되는 팀
2주 동안 기록을 남기는 것을 약속할 수 없는 팀. 업무가 기밀이며 무료 레인 데이터 경로가 검증되지 않은 팀. 한 달에 합병된 PR이 대략 50개 미만으로, 단 하나의 나쁜 주가 평균치를 크게 흔들릴 수 있는 팀. 그리고 이미 내린 결정을 원장(ledger)이 확인해 줄 것이라고 기대하는 모든 사람.
되돌아보는 질문
무언가를 서명하기 전에, 어떤 단일 변수가 당신의 선택을 뒤집을지 적어보세요: 유지 관리 시간, 검토 분, 볼륨, 또는 할당량 자체. 그런 다음 그 하나를 먼저 측정해 보세요.
현재 설정에서 실제로 측정한 적이 없는 숫자는 무엇이며 — 이번 주에 그것을 알아내는 데 얼마의 비용이 들까요?
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기