이번 주에 작은 웹 도구 하나를 새로 냈습니다. 공사 견적서를 만들어주는 무료 도구고, 페이지는 전부 합쳐 9개입니다.
출시 전에 게이트를 사전등록해뒀습니다. 언제 이걸 접을지, 언제 돈을 더 넣을지를 데이터 보기 전에 적어두는 습관입니다. 그런데 그 게이트를 출시 다음 날 다시 썼고, 그 다음 날 또 다시 썼습니다.
바를 두 번 옮긴 겁니다. 그래서 이 글은 자랑이 아니라 어쩌다 임계값이 두 번이나 아무 의미 없는 숫자였는지에 대한 기록입니다.
질문 하나 드리겠습니다. 당신이 마지막으로 정한 성공 기준, 그 숫자는 어디서 왔습니까? 비슷한 무언가의 실측입니까, 아니면 "이 정도면 성공이지" 싶은 느낌입니까?
1판: 최상위 앱도 못 넘는 바
초판은 이랬습니다.
PASS = 90일 안에 인쇄 300건 + 고유 방문 토큰 1,000숫자를 적을 때는 그럴듯했습니다. 그런데 출시하고 나서 제 다른 앱들의 GA4를 열어봤습니다. 28일 기준 함대 최상위가 280세션, 그 다음이 209세션이었습니다.
새로 만든 도메인 경로에 90일 안에 최상위 앱 수준 트래픽을 요구한 셈입니다. 통과가 불가능한 바였습니다.
여기서 중요한 건 통과 불가능한 바는 엄격한 게 아니라 무의미하다는 점입니다. 판정일에 FAIL이 나오는데, 그 FAIL은 제품에 대해 아무것도 안 알려줍니다. 이미 정해져 있던 답이니까요. 저는 45일이나 90일을 쓰고 이미 알던 걸 다시 사는 셈입니다. 59년이 걸리는 게이트를 설계했던 적이 있어서 이 냄새는 압니다.
거기에 futility 지표로 "네이버 노출"을 잡아뒀는데, 그 숫자는 검색엔진 콘솔에만 있고 API로 못 읽습니다. 사람이 매번 눈으로 봐야 하는 지표는 게이트에 못 씁니다. 자동으로 안 도는 판정은 판정일에 안 돕니다.
2판: 비교군은 있었는데, 단위가 달랐습니다
그래서 다음 날 다시 썼습니다. 이번엔 비교군을 봤습니다. 제 앱 중 트래픽이 제일 좋은 것을 기준으로 잡고 그 절반쯤에 바를 뒀습니다.
PASS = 90일 검색 세션 150 + 인쇄 30건
중단(futility) = 45일 검색 세션 10 이하하루 지나서 이 판을 검토하다가 손이 멈췄습니다. 150이라는 숫자는 그 최상위 앱의 "전 소스 세션"에서 나왔습니다. 쓰레드, 인스타, 직접 유입, 검색 전부 합친 숫자입니다.
그런데 제가 재려는 건 검색 세션입니다. 새 도구에는 SNS 유입 배선이 아예 없고, 이 게이트가 묻는 질문은 "검색으로 사람이 오는가" 하나입니다.
전 소스로 잰 숫자를 검색 전용 임계로 쓰고 있었던 겁니다. 같은 단위가 아닙니다. 비교군을 골랐다고 생각했지만 실제로 한 일은 다른 지표에서 숫자 하나를 들고 온 것이었습니다.
같은 단위로 다시 재봤습니다
같은 유형(계산·조회 같은 도구형)의 앱 네 개를 GA4에서 90일 검색 세션으로 뽑았습니다. 페이지 수도 같이 적었습니다. 수율을 봐야 하니까요.
| 도구 | sitemap URL | 90일 검색 세션 | 페이지당 |
|---|---|---|---|
| 연봉 계산기 | 224 | 39 | 0.17 |
| 대출 계산기 | 139 | 34 | 0.24 |
| 급여 단일 페이지 | 1 | 4 | 4.0 |
| 구인 도구 | 3 | 1 | 0.33 |
| 새 도구(견적서) | 9 | 관측 0 (D+1) | — |
중앙값 19, 최고 39입니다.
제가 적어둔 150은 최고치의 3.8배였습니다. 게다가 그 최고치를 낸 앱은 페이지가 25배 많습니다. 9페이지짜리 도구에게 224페이지짜리 앱의 4배를 요구한 셈입니다.
여기서 선택지가 둘이었습니다. 당신이라면 어떻게 하시겠습니까?
- 그대로 둔다. 사전등록한 바를 옮기는 건 원칙 위반이다.
- 지금 고친다. 대신 관측이 0이고 판정창이 안 열렸다는 조건을 기록에 남긴다.
2번으로 갔습니다. 이 구분이 이 글의 핵심입니다. 바를 옮기면 안 되는 이유는 데이터를 보고 자기에게 유리하게 움직이기 때문입니다. 검색 세션 관측이 0이고 색인조차 안 들어온 시점에 고치는 건 그 문제가 아닙니다. 반대로 색인이 들어온 뒤에 같은 수정을 하면, 그건 똑같이 생긴 사후 바 이동입니다. 타이밍이 규칙의 일부입니다 — 판정을 이틀 미뤘더니 제 기준이 저절로 세졌던 일에서 이미 배운 겁니다.
새 임계는 두 무리를 가르는 자리에 놨습니다
실측을 보니 네 개가 두 무리로 갈립니다. 페이지가 많고 검색에서 3439를 받는 쪽, 페이지가 거의 없고 14를 받는 쪽. 그래서 임계를 그 사이에 뒀습니다. 포아송으로 검정력을 계산했습니다.
PASS 임계 20
참값이 1~4 수준이면 P(통과) = 0.000
참값이 34~39 수준이면 P(통과) = 0.996 ~ 1.000
참값이 중앙값 19면 P(통과) = 0.44마지막 줄은 솔직히 적어둡니다. 경계에 있으면 동전 던지기입니다. 임계를 두 무리 사이에 두면 그 사이에 진짜로 있는 경우는 갈라지지 않습니다. 이건 임계 설계로 해결이 안 되고, 표본을 더 모으는 수밖에 없습니다.
futility 쪽이 더 심했습니다.
종전 futility: 45일 검색 세션 10 이하면 중단
참값이 PASS 임계선 수준(45일 기대 10)일 때 P(잘못 죽임) = 0.5절반입니다. 합격선에 정확히 걸치는 제품을 절반의 확률로 죽이는 중단 기준이었습니다. 중단 기준은 "이건 확실히 아니다"일 때만 발화해야 합니다. 2로 내렸습니다.
새 futility: 45일 검색 세션 2 이하면 중단
참값이 임계선 수준이면 P(잘못 죽임) = 0.003
참값이 바닥 수준이면 P(중단) = 0.677인쇄 건수 30은 아예 뺐습니다. 이유가 창피한데, 자기모순이었습니다. 검색 세션 20을 요구하면서 같은 창에서 인쇄 30건을 요구하면, 세션 하나가 1.5번 인쇄해야 합니다. 두 조건이 동시에 참이 될 수 없습니다.
대신 인쇄"율"을 보고, 분모 조항을 붙였습니다. 랜딩 고유 방문이 40 미만이면 인쇄율은 계산하지 않고 판정 불가를 돌려줍니다. 분자만 보고 판정하면 자산이 아니라 유통 부재를 기각하게 된다는 건 분모 없는 게이트로 게임을 죽일 뻔한 적이 있어서 압니다.
자가진단 3개
- 지금 돌고 있는 게이트 하나를 고르세요. 그 임계값은 어떤 실측에서 나왔습니까? 그 실측과 지금 재는 지표의 단위가 같습니까?
- 그 임계값이 참일 때와 거짓일 때 통과 확률을 각각 계산해봤습니까? 안 했다면 그 바는 엄격한지 느슨한지 아직 모르는 상태입니다.
- 중단 기준이 따로 있다면, 합격선에 걸치는 제품이 그 중단에 걸릴 확률은 얼마입니까? 0.5가 나오면 그건 중단 기준이 아니라 동전입니다.
결론
두 판 모두 실수의 종류가 같습니다. 임계를 정한다는 걸 "숫자를 고른다"로 생각했습니다. 실제로 하는 일은 비교 대상을 고르는 것이고, 비교 대상이 다른 지표면 그 숫자는 아무것도 재지 않습니다.
그리고 이번 판정의 진짜 의미도 이제야 선명해졌습니다. 9페이지짜리 도구가 20세션을 넘는다는 건 페이지당 수율이 224페이지짜리 앱의 25배라는 뜻입니다. 그때만 페이지를 늘리는 투자가 정당화됩니다. 1판·2판의 바로는 이 문장을 쓸 수 없었습니다.
솔직한 부분: 저는 이 게이트를 두 번 고쳤고, 앞으로는 커밋으로만 고칩니다. 관측은 아직 검색 세션 0입니다(색인 전). 중단 판정은 45일 뒤, 본판정은 90일 뒤고, 통과 확률이 중앙값 근처에서 0.44라는 건 그대로 남아 있습니다. 이건 해결한 문제가 아니라 정직하게 적어둔 한계입니다.
지금 딱 하나만 해보세요. 당신이 적어둔 성공 기준 옆에 그 숫자를 어디서 가져왔는지 한 줄 적어보시는 겁니다. 그 한 줄이 안 써지면, 아직 비교군을 안 고른 겁니다.