문제 ν•΄κ²°

πŸ“˜

이 λ¬Έμ„œμ— λŒ€ν•˜μ—¬

이 λ¬Έμ„œλŠ” SDK 연동 κ³Όμ • 쀑 비정상 λ™μž‘μœΌλ‘œ μ˜μ‹¬λ˜κ±°λ‚˜, κ·Έ μ™Έ λ²„κ·Έλ‘œ μ˜μ‹¬λ˜λŠ” λ¬Έμ œκ°€ λ°œμƒν•  λ•Œ μ°Έκ³ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
μ–΄λ– ν•œ κΈ°λŠ₯의 지원 μ—¬λΆ€, κ΅¬ν˜„ λ…Έν•˜μš°λ‚˜ 쑰언을 κ΅¬ν•˜λŠ” μ§ˆλ¬Έμ€ 자주 λ¬»λŠ” 질문 λ¬Έμ„œλ₯Ό μ°Έκ³ ν•˜μ‹œκΈ° λ°”λžλ‹ˆλ‹€.

1. μ‚¬μš©μž μ§€μ • μ‹λ³„μžλ₯Ό λ„£μ–΄ variation λ©”μ†Œλ“œ 호좜 μ‹œ μ—λŸ¬ λ°œμƒ

Q. JavaScript SDK 이용 μ€‘μž…λ‹ˆλ‹€. variation λ©”μ†Œλ“œλ₯Ό ν˜ΈμΆœν•˜λŠ”λ° μ‚¬μš©μž μ‹λ³„μžμ™€ κ΄€λ ¨λœ μ—λŸ¬κ°€ λ°œμƒν•©λ‹ˆλ‹€. νŒŒλΌλ―Έν„°λ‘œ 저희가 λ§Œλ“  μ‚¬μš©μž μ‹λ³„μžλ₯Ό λ„˜κ²ΌλŠ”λ° μ–΄λ–€ λ¬Έμ œμΈκ°€μš”?

A. JavaScript SDK인 경우 variation λ©”μ†Œλ“œμ— μ‚¬μš©μž 정보λ₯Ό λ„˜κΈΈ λ•Œ 였브젝트 ν˜•νƒœλ‘œ λ„˜κ²¨μ•Ό ν•©λ‹ˆλ‹€. μ•„λž˜ μ˜ˆμ‹œ μ½”λ“œμ˜ 잘λͺ»λœ μ‚¬λ‘€μ²˜λŸΌ λ‹¨μˆœ string type만 λ„˜κΈ΄ 것이 μ•„λ‹Œμ§€ ν™•μΈν•΄λ³΄μ‹œκΈ° λ°”λžλ‹ˆλ‹€.

hackleClient.variation(6, "user_id")       // 잘λͺ»λœ 사둀
hackleClient.variation(6, {id: "user_id"}} // μ˜¬λ°”λ₯Έ 사둀

πŸ‘

개발 ν”Œλž«νΌ 별 μ‚¬μš©μž μ§€μ • μ‹λ³„μž λ„£λŠ” 방법

SDK μΉ΄ν…Œκ³ λ¦¬ 내에 μžˆλŠ” μ‚¬μš©μž μ‹λ³„μž λ¬Έμ„œμ— μ–Έμ–΄ 별 μ˜ˆμ‹œκ°€ μžˆμŠ΅λ‹ˆλ‹€.

2. μ‚¬μš©μž μ§€μ • μ‹λ³„μž 전달 μ‹œ μ§€ν‘œ 이상

Q. 핡클 SDKλ₯Ό μ—°λ™ν–ˆκ³  저희가 λ§Œλ“  μ‚¬μš©μž μ‹λ³„μžλ₯Ό μ΄μš©ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. μ§€ν‘œ κ²°κ³Όκ°€ μ΄μƒν•œλ° μ˜μ‹¬ν•  ν¬μΈνŠΈκ°€ μžˆμ„κΉŒμš”?

A. variation λ©”μ†Œλ“œ 및 track λ©”μ†Œλ“œ λ‘˜ λ‹€ μ‚¬μš©μž μ‹λ³„μžλ₯Ό μ „λ‹¬ν•˜κ³  μžˆλŠ”μ§€ ν™•μΈν•΄λ³΄μ‹œκΈ° λ°”λžλ‹ˆλ‹€. 두 λ©”μ†Œλ“œ 쀑 ν•˜λ‚˜λΌλ„ μ‚¬μš©μž μ‹λ³„μžλ₯Ό μ „λ‹¬ν•œλ‹€λ©΄ λ‹€λ₯Έ ν•˜λ‚˜λ„ μ „λ‹¬ν•΄μ•Όλ§Œ ν•©λ‹ˆλ‹€.

// 잘λͺ»λœ 사둀
hackleClient.variation(7, { id : "12345"} ) // μ‚¬μš©μž μ‹λ³„μž 직접 전달
hackleClient.track("purchase") // μ‚¬μš©μž μ‹λ³„μž μ „λ‹¬ν•˜μ§€ μ•ŠμŒ

// μ˜¬λ°”λ₯Έ 사둀
// (1μ•ˆ) μ‚¬μš©μž μ§€μ • μ‹λ³„μž μ‚¬μš©
hackleClient.variation(7, { id : "12345"}) 
hackleClient.track("purchase", { id : "12345"})

// (2μ•ˆ) λ‚΄λΆ€μ μœΌλ‘œ κ΄€λ¦¬λ˜λŠ” λ””λ°”μ΄μŠ€ μ‹λ³„μž μ‚¬μš©
hackleClient.variation(7) 
hackleClient.track("purchase")

잘λͺ»λœ μ‚¬λ‘€μ˜ 경우 variationκ³Ό track의 μ‹λ³„μžκ°€ 달라져 μ§€ν‘œ 계산이 μ •μƒμ μœΌλ‘œ 이루어지지 μ•ŠμŠ΅λ‹ˆλ‹€.
μ‚¬μš©μž 뢄배와 이벀트 전솑 μ‹œ μ‚¬μš©μž μ‹λ³„μž 전달 방식을 λ™μΌν•˜κ²Œ μ‚¬μš©ν•΄μ•Ό λ™μΌν•œ μ‚¬μš©μžλ‘œ μΈμ‹ν•˜κ³  μ§€ν‘œλ₯Ό κ³„μ‚°ν•©λ‹ˆλ‹€.
즉, λ‘˜ 쀑 ν•˜λ‚˜λ§Œ μ‚¬μš©μž μ‹λ³„μžλ₯Ό 전달할 경우 두 λ©”μ†Œλ“œλŠ” μ„œλ‘œ λ‹€λ₯Έ μ‚¬μš©μžλ₯Ό λŒ€μƒμœΌλ‘œ μ‚ΌλŠ” κ²ƒμœΌλ‘œ 인지할 κ°€λŠ₯성이 μžˆμŠ΅λ‹ˆλ‹€.

3. μ‹€μ‹œκ°„ λ…ΈμΆœ ν˜„ν™© κ²°κ³Ό 이상

Q. λ™μΌν•œ μ‚¬μš©μžλ‘œ variation λ©”μ†Œλ“œλ₯Ό μ—¬λŸ¬ 번 ν˜ΈμΆœν–ˆλŠ”λ° μ‹€μ‹œκ°„ λ…ΈμΆœ ν˜„ν™©μ΄ μ¦κ°€ν•©λ‹ˆλ‹€. 였λ₯˜μΈκ°€μš”?

A. 정상 λ™μž‘μž…λ‹ˆλ‹€. μ‹€μ‹œκ°„ λ…ΈμΆœ ν˜„ν™©μ˜ 경우 variation 호좜 카운트(ν˜ΈμΆœν•œ λ…ΈμΆœ 횟수)와 λ™μΌν•©λ‹ˆλ‹€. 즉, 쀑볡 제거 μ—†λŠ” 전체 λ…ΈμΆœ μˆ˜κ°€ 좜λ ₯λ©λ‹ˆλ‹€.
반면 λͺ©ν‘œ κ³„μ‚°μ—μ„œλŠ” 쀑볡을 μ œκ±°ν•˜μ—¬ UV둜 κ³„μ‚°λ©λ‹ˆλ‹€. 즉 λͺ©ν‘œμ—μ„œλŠ” uniqueν•œ μ‚¬μš©μž μˆ˜κ°€ 좜λ ₯λ©λ‹ˆλ‹€.

4. A/B ν…ŒμŠ€νŠΈ μ’…λ£Œ ν›„ νŠΈλž˜ν”½ 이상

Q. A/B ν…ŒμŠ€νŠΈλ₯Ό μ’…λ£Œν•˜κ³  Winner 그룹을 μ„ νƒν–ˆμŠ΅λ‹ˆλ‹€. 아직 Winner 그룹의 λ‘œμ§μ„ μ μš©ν•˜μ§€λŠ” μ•Šμ„ 생각인데 λͺ¨λ“  νŠΈλž˜ν”½μ΄ Winner 그룹으둜 κ°€λŠ” 것 κ°™μŠ΅λ‹ˆλ‹€.

A. νŠΉμ • 그룹으둜 Winnerλ₯Ό μ„ νƒν•˜λ©΄ ν•΄λ‹Ή A/B ν…ŒμŠ€νŠΈμ— ν•΄λ‹Ήν•˜λŠ” λͺ¨λ“  νŠΈλž˜ν”½μ€ Winner 그룹으둜 ν–₯ν•©λ‹ˆλ‹€.
λ”°λΌμ„œ A/B ν…ŒμŠ€νŠΈ μ’…λ£Œ μ‹œ μ•„λž˜μ˜ μˆœμ„œλŒ€λ‘œ μ§„ν–‰ν•˜μ‹œκΈ° λ°”λžλ‹ˆλ‹€.

  1. 핡클 λŒ€μ‹œλ³΄λ“œμ—μ„œ A/B ν…ŒμŠ€νŠΈ μ’…λ£Œ 및 Winner κ·Έλ£Ή 선택
  2. 운영 ν™˜κ²½(Production)μ—μ„œ A/B ν…ŒμŠ€νŠΈμ™€ κ΄€λ ¨λœ μ½”λ“œ μ‚­μ œ
  3. 핡클 λŒ€μ‹œλ³΄λ“œμ—μ„œ 1번의 A/B ν…ŒμŠ€νŠΈμ— λŒ€ν•΄ ν…ŒμŠ€νŠΈ λ³΄κ΄€μ²˜λ¦¬ ν΄λ¦­ν•˜μ—¬ 보관 μƒνƒœλ‘œ μ „ν™˜

5. JavaScript SDKμ—μ„œ μˆ˜λ™ ν• λ‹Ή λ―Έλ™μž‘

Q. JavaScript SDK μ‚¬μš© μ€‘μž…λ‹ˆλ‹€. 개발 ν™˜κ²½μ—μ„œ νŠΉμ • μ‚¬μš©μž λŒ€μƒμœΌλ‘œ ν…ŒμŠ€νŠΈ κΈ°κΈ°λ₯Ό λ“±λ‘ν•˜μ—¬ ν…ŒμŠ€νŠΈν•˜λ €κ³  ν•˜λŠ”λ° μ§€μ •ν•œ λŒ€λ‘œ ν…ŒμŠ€νŠΈ 그룹에 λΆ„λ°°λœ 것 κ°™μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

A. JavaScript SDK의 경우 μ‚¬μš©μž latencyλ₯Ό μœ„ν•΄μ„œ μ„€μ • 값을 cacheν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ μ œλŒ€λ‘œ ν• λ‹Ήλ˜μ§€ μ•Šμ€ κ²ƒμ²˜λŸΌ 보일 수 μžˆμŠ΅λ‹ˆλ‹€. 이 경우 크둬 λΈŒλΌμš°μ €μ˜ κ°•λ ₯ μƒˆλ‘œκ³ μΉ¨ κΈ°λŠ₯을 μ΄μš©ν•˜μ—¬ μ¦‰κ°μ μœΌλ‘œ λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€.
λ§Œμ•½ 이 방법도 ν†΅ν•˜μ§€ μ•ŠμœΌλ©΄ 개발자 도ꡬλ₯Ό μ—΄κ³  μƒˆλ‘œκ³ μΉ¨ λ²„νŠΌμ—μ„œ 였λ₯Έμͺ½ 클릭 ν›„ μΊμ‹œ λΉ„μš°κΈ° 및 κ°•λ ₯ μƒˆλ‘œκ³ μΉ¨μ„ ν΄λ¦­ν•˜μ—¬ λ‹€μ‹œ μ‹œλ„ν•˜μ‹œκΈ° λ°”λžλ‹ˆλ‹€.

868

크둬 λΈŒλΌμš°μ €μ˜ μΊμ‹œ λΉ„μš°κΈ° 및 κ°•λ ₯ μƒˆλ‘œκ³ μΉ¨

6. ν…ŒμŠ€νŠΈ κ·Έλ£Ή A에 μ λ¦¬λŠ” ν˜„μƒ

Q. μ‹€μ‹œκ°„ λ…ΈμΆœ ν˜„ν™©μ„ 톡해 λΆ„λ°°λœ 그룹을 보고 μžˆλŠ”λ° μœ λ… ν…ŒμŠ€νŠΈ κ·Έλ£Ή Aμ—λ§Œ λͺ°λ¦¬λŠ” 것 κ°™μŠ΅λ‹ˆλ‹€.

A. A/B ν…ŒμŠ€νŠΈμ— ν• λ‹Ήλ˜μ§€ μ•Šμ•˜κ±°λ‚˜ μˆ˜λ™ ν• λ‹Ή λŒ€μƒμΈ 경우, μ—λŸ¬ λ°œμƒ λ“± μ—¬λŸ¬ κ°€μ§€ 이유둜 κΈ°λ³Έ 그룹인 ν…ŒμŠ€νŠΈ κ·Έλ£Ή A에 λ“€μ–΄κ°ˆ 수 μžˆμŠ΅λ‹ˆλ‹€. ν…ŒμŠ€νŠΈ κ·Έλ£Ή 뢄배와 상관 없이 ν…ŒμŠ€νŠΈ κ·Έλ£Ή A둜 κ°€λŠ” κ²½μš°μ— λŒ€ν•΄μ„œλŠ” ν…ŒμŠ€νŠΈ κ·Έλ£Ή λΆ„λ°° κ³Όμ • 및 ν…ŒμŠ€νŠΈ κ·Έλ£Ή λΆ„λ°° 원리 λ¬Έμ„œμ—μ„œ μ„€λͺ…ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

SDKμ—μ„œ μ œκ³΅ν•˜λŠ” λ©”μ†Œλ“œλ₯Ό ν†΅ν•΄μ„œ 원인을 νŒŒμ•…ν•  수 μžˆμŠ΅λ‹ˆλ‹€. variationDetail λ©”μ†Œλ“œλ₯Ό μ§€μ›ν•˜λŠ” SDK의 경우 νŠΉμ • 그룹으둜 λΆ„λ°°λœ μ‚¬μœ λ₯Ό ν•¨κ»˜ λ°˜ν™˜ν•©λ‹ˆλ‹€. ν•΄λ‹Ή λ©”μ†Œλ“œλ₯Ό 적극 ν™œμš©ν•΄λ³΄μ‹œκΈ° λ°”λžλ‹ˆλ‹€.