A/B 테스트
규칙
- 해시 기반 할당:
hash(userId + experimentId) % 100을 사용한 결정적 변형 선택 — 세션 간 무작위성 변동 없음 - 변형 구성: 실험을
{ id, name, variants: [{ id, weight }], status }형태의 구성 객체에 저장 — 변형을 하드코딩하지 않음 - 서버 측 트래픽 분할: 미들웨어나 API 경로에서 할당하고, 일관성을 위해 쿠키 설정 — 클라이언트 측 분할은 깜빡임 유발
- 통계적 유의성: 승자를 선언하기 전에 95% 신뢰도(p < 0.05) 필요 — 비율에는 z-검정 사용
- 표본 크기: 시작 전에 최소 표본 크기 계산 —
n = (Z^2 * p * (1-p)) / E^2(E는 최소 감지 효과) - 실험당 하나의 지표: 사전에 주요 지표(전환율, 클릭률, 수익) 정의 — 보조 지표는 탐색적 용도로만 사용
- 상호 배제: 한 실험의 사용자가 충돌하는 실험과 겹치지 않도록 함 — 실험 레이어 사용
- 기능 플래그: 실험 코드를 기능 플래그 검사로 감싸기 — 실험 종료 후 실패한 변형 정리
- 기간: 최소 1-2 전체 비즈니스 주기(7-14일) 동안 실행하여 요일 효과 고려
- 로깅: 모든 노출 및 전환 이벤트에 대해
experiment_id,variant_id,user_id,timestamp추적
주의사항
- 표본 크기에 도달하기 전에 결과를 엿보지 않음 — 거짓 양성 비율 증가
- 실험 중간에 매개변수를 변경하지 않음 — 통계 분석 무효화
- 한 번에 너무 많은 변형을 테스트하지 않음 — 필요한 표본 크기가 기하급수적으로 증가
- 쿠키 없이 클라이언트 측 변형 할당을 하지 않음 — 깜빡임과 불일치 경험 유발