DEV Community

Cover image for 마케팅 실험 플랫폼 설계 — 사내 A/B 시스템의 5가지 원칙
HyunSeok Jeong
HyunSeok Jeong

Posted on • Originally published at blog.trysitely.com

마케팅 실험 플랫폼 설계 — 사내 A/B 시스템의 5가지 원칙

Meta·Google의 자체 A/B 도구는 광고 자체 효과만 보고, Optimizely·VWO는 비싸고 마케팅 데이터와 안 맞습니다. 사내 마케팅 실험 플랫폼을 직접 만들 때 깔아야 할 5가지 원칙이 있습니다. 한 가지라도 빠지면 결과가 흔들리고, 다섯 가지가 함께 깔리면 분기 실험이 정직한 의사결정의 기반이 됩니다.

마케터가 이 글을 읽어야 하는 이유: 사내 실험 플랫폼은 분석가·엔지니어가 만들지만, 마케터가 그 5가지 원칙을 모르면 결과 보고를 제대로 해석 못 합니다. 어떤 자리에서 어떤 보정이 필요한지, SRM 알림이 뜨면 무엇을 의심해야 하는지 — 이걸 알면 회의에서 결정 속도가 한 단계 올라갑니다.

사용자 → split assignment → exposure log → 결과 집계 → SRM 검정 → 보고 5단계 데이터 플로우 다이어그램
실험 플랫폼의 골격은 단순하지만 각 단계의 디테일이 결과 신뢰도를 결정한다.

1. 원칙 1 — 결정론적 split assignment

1-1. 직관

같은 사용자가 실험에 여러 번 진입해도 항상 같은 그룹에 배정되어야 함. 매번 다른 그룹에 들어가면 결과가 흩어짐.

1-2. 표준 구현

사용자 ID와 실험 ID를 결합한 해시로 그룹 결정.

group(u,e)=hash(ue)modN \text{group}(u, e) = \text{hash}(u \oplus e) \bmod N

uu 는 사용자 ID, ee 는 실험 ID, NN 은 그룹 수. SHA-256·MurmurHash3 등 빠른 해시 사용. 결정론적이라 같은 입력에는 항상 같은 출력.

1-3. 흔한 실수

  • 시간 기반 ID 사용 → 매번 다른 그룹
  • 실험 ID 빠뜨림 → 한 사용자가 모든 실험에서 같은 그룹 (의도된 균등 배정 깨짐)
  • 캠페인 단위 실험인데 사용자 단위 split → 노출 빈도 차이로 편향

📌 이 글의 전제

독자가 A/B 테스트를 일상으로 운영하는 마케터·분석가를 가정합니다. 코드를 직접 짠 적은 없어도 OK이고, 사내 시스템·CDP·BigQuery 같은 단어를 받아들인다고 가정합니다.

2. 원칙 2 — exposure log

2-1. 직관

사용자가 실험 그룹에 배정된 시점·맥락을 모두 기록. 결과 분석에 그 로그가 진실의 기반.

2-2. 필수 필드

필드 의미
user_id 사용자 식별자
experiment_id 실험 ID
variant 배정된 그룹 (A/B/C...)
timestamp 노출 시점
context 디바이스·페이지·세그먼트 등

이 5개 필드만 정확하면 후속 분석의 80%가 가능.

2-3. 노출 vs 의도 (intent-to-treat)

A/B 결과 분석의 표준은 ITT(Intent-to-Treat) — 그룹에 배정된 사용자가 실제로 처리를 받았는지와 무관하게 그룹 단위로 분석. 이 원칙을 지키려면 exposure log가 "어느 그룹에 속해야 했는가"를 기록해야 함. 실제 처리를 받았는지는 별도 컬럼.

3. 원칙 3 — SRM(Sample Ratio Mismatch) 자동 검정

3-1. 직관

50:50 그룹이 51:49로 깨졌으면 그룹 자체가 다른 분포일 수 있음. 카이제곱 검정으로 자동 점검.

χ2=i(OiEi)2Ei \chi^2 = \sum_{i} \frac{(O_i - E_i)^2}{E_i}

OO 는 관측 빈도, EE 는 기대 빈도(균등 분배 가정). p-value 0.001 이하면 SRM 의심.

3-2. SRM이 뜨면 의심할 것

  • bot·크롤러가 한쪽에 몰림
  • 캐시 정책이 그룹별 다르게 작동
  • 라우팅 로직 오류
  • 트래픽 폭주로 한쪽 서버 과부하

3-3. 자동화

실험 시작 후 1시간·1일·1주 단위로 SRM 자동 체크. 알림 시 즉시 실험 일시 중지·원인 추적.

Simpson's Paradox에서 다룬 거의 모든 함정의 시작이 SRM이라 가장 먼저 잡아야 함.

4. 원칙 4 — Sequential safe 분석

4-1. 직관

전통적 t-test는 한 번만 봐야 함. 여러 번 보면 false positive 폭증. Sequential testing이 여러 번 봐도 안전한 통계.

4-2. peeking 함정

매일 결과 보면서 "유의미하면 종료" 룰 → 실험 5번 반복하면 false positive가 5배.

4-3. 표준 도구

  • mSPRT (mixture Sequential Probability Ratio Test) — Optimizely·VWO 기본
  • always-valid p-value
  • Bayesian A/B (prior + posterior, 매번 봐도 정직)

Sequential testing에서 깊이 다룸.

4-4. 마케팅 자리

분기 회의에서 "지금까지 결과 어때?" 질문이 자주 옴. Sequential safe 통계가 깔려 있어야 그 자리에 정직한 답 가능.

질문 빈도 통계 도구
실험 끝 후 1번만 t-test, chi-square
분기 한 번 점검 Sequential test
매주 점검 mSPRT 또는 Bayesian
매일 점검 Bayesian A/B

5. 원칙 5 — 메타데이터·표준화

5-1. 직관

플랫폼이 받는 모든 실험에 표준 메타데이터를 강제. 후속 분석·보고가 자동화 가능.

5-2. 필수 메타

필드 의미
실험 가설 "B안이 A보다 CVR +2%p"
Primary KPI CVR, ROAS, 매출 등
사전 등록 MDE 검출 가능한 최소 효과
사전 등록 표본 power analysis 결과
종료 조건 표본 도달 또는 기간
결과 책임자 의사결정 담당

5-3. 사전 등록(preregister)이 보장하는 것

  • 결과 보고 임의 조정 방지
  • p-value hacking 방지
  • 다중 비교 함정 회피
  • 결과 신뢰도 유지

5-4. 코드 한 묶음 — 실험 메타 schema

이게 글에 박는 유일한 코드입니다.

from pydantic import BaseModel
from typing import Literal
from datetime import datetime

class ExperimentMeta(BaseModel):
    experiment_id: str
    hypothesis: str
    primary_kpi: Literal["cvr", "roas", "revenue", "ctr", "retention"]
    mde_absolute: float       # 검출 최소 효과
    sample_size_per_group: int
    expected_duration_days: int
    end_condition: Literal["sample_reached", "time_elapsed"]
    owner: str
    created_at: datetime
    status: Literal["draft", "running", "ended", "stopped"]

# 실험 시작 전 메타 등록
exp = ExperimentMeta(
    experiment_id="exp-2026-q2-cta-color",
    hypothesis="빨강 CTA가 파랑 CTA 대비 CVR +1.5%p",
    primary_kpi="cvr",
    mde_absolute=0.015,
    sample_size_per_group=8136,
    expected_duration_days=8,
    end_condition="sample_reached",
    owner="marketing-team",
    created_at=datetime.utcnow(),
    status="draft",
)
print(exp.model_dump_json(indent=2))
Enter fullscreen mode Exit fullscreen mode

이 스키마를 BigQuery·실험 테이블에 박아두면 모든 실험이 같은 양식으로 등록되고, 분기 보고 자동화가 가능.

6. 분석 단계 — 결과 보고의 표준 양식

실험 종료 후 결과 보고에 들어가야 할 항목.

항목 값 (예시)
실험 ID exp-2026-q2-cta-color
가설 빨강 CTA +1.5%p
표본 (그룹당) 8,200 / 8,150
SRM 검정 p-value 0.42 (균형 OK)
Primary KPI 효과 +1.8%p (95% CI: +0.9%p - +2.7%p)
Sequential test 결과 유의 (p = 0.018)
운영 의미 ROPE ±1%p 밖, 의미 있음
결정 B안 채택, 전체 노출 전환

이 양식이 실험 플랫폼의 출력으로 자동 생성되면 의사결정 속도가 크게 빨라짐.

⚠️ 실험 결과 해석의 함정 5가지

  • Primary KPI 외 secondary KPI도 보면 다중 비교 함정 (FDR 보정 필요)
  • 세그먼트별 분리 분석은 사전 등록 안 됐으면 exploratory로만
  • SRM 안 보고 결과 발표하면 자가 선택 편향
  • 단기 실험으로 장기 효과 외삽 금지
  • novelty effect: 첫 1-2주 결과 부풀려짐

{/* TODO_HUNY: huny가 운영 중인 사내 실험 플랫폼이 5가지 원칙 중 어느 것을 가장 잘 갖추고 있고 어느 것이 부족한지 한 단락 추가해주세요. */}

7. 외부 SaaS vs 사내 플랫폼 트레이드오프

항목 외부 SaaS (Optimizely, VWO) 사내 플랫폼
도입 속도 빠름 6-12개월
비용 월 $1K-10K+ 인건비·인프라
마케팅 데이터 통합 약함 강함 (CDP·BQ 직결)
통계 도구 표준 (Sequential, Bayesian 내장) 직접 구현
커스터마이징 제한적 자유
운영 부담 거의 없음

소규모 팀: 외부 SaaS. 대규모 팀(분기 100+ 실험): 사내 플랫폼이 비용·통합 우위.

8. 마치며 — 실험 플랫폼은 마케팅의 인프라

마케팅 의사결정의 신뢰도가 분기마다 올라가려면 실험 플랫폼이 5가지 원칙 위에 깔려 있어야 합니다. split assignment, exposure log, SRM 자동 검정, sequential safe 분석, 메타 표준화 — 한 가지라도 빠지면 결과가 흔들리고 의사결정자가 데이터를 안 믿게 됩니다. 마케터가 그 5가지를 알면 분석 결과 회의에서 정직한 질문을 던지고 정직한 답을 받을 수 있습니다.

다음 분기에 한 번만 시도해 볼 만한 것은 사내 실험 플랫폼의 메타데이터 등록·SRM 자동 검정 두 가지를 표준화하는 흐름입니다. 두 가지만 깔려도 분기 실험의 신뢰도가 한 단계 올라갑니다.

{/* TODO_HUNY: 사내 마케팅팀이 분기에 돌리는 실험 수와 그 중 사전 등록·SRM 검정이 들어가는 비율 한 단락 추가해주세요. */}

다음에 읽을 글

참고

Top comments (0)