읽은 글 : 개발자를 위한 A/B 테스트 해시 샘플링

·2020년 9월 12일
1

아침 글읽기

목록 보기
6/7

개발자를 위한 A/B 테스트 해시 샘플링


내가 재직 중인 회사는 파이어베이스 리모트컨피그를 이용한 A/B 테스트를 진행하고 있는데, 이번에 내가 참여하는 MVP 프로젝트에서부터는 서버에서 A/B 테스트를 세팅해야 한다는 소식을 들었다. 3주 안에 새 서버도 만들고, 와중에 서버에서 A/B 테스트를 진행, 관리할 수 있도록 해야한다니 보통 부담이 아니다 ㅎㅎ...

피쳐만을 놓고 보면 사실 되게 재미있는 피쳐인데 서버에서 어떻게 구현할 수 있을지 의견을 구하거나 검토할 기회를 주지 않고 '이거 이번부터 서버에서 하는걸로 정해졌다', '급하다' 형태의 커뮤니케이션이 계속해서 누적되다보니 동기부여가 많이 떨어지는 것이 사실이다.

그러나 개발은 텐션 관리가 반인걸 🌟 어떤 형태로 왔든 내 앞에 놓인 피쳐이니 예쁘게 잘 만들어보자.


A/B 테스트 프로세스 중 개발자의 역할

개발자는 '실험을 설계하고 실행하는 단계'를 담당한다. 그리고 개발자가 주로 고민해야 할 내용은 '사용자를 어떻게 A와 B로 효율적으로 나눌 수 있을지' 이며 이것을 '사용자 샘플링' 이라고 부른다.

보통 유저 아이디를 이용하여 유저가 A, B 중 어느 그룹에 속하는지를 의미하는 버킷 넘버를 부여한다. 그리고 이 버킷 넘버를 부여할 때는 특정 값을 넣었을 때 언제나 같은 결과를 반환하는 해시 함수를 이용한다. 해시 함수를 이용한다는 것은, 결국 이 유저가 어느 그룹에 속했는지를 따로 DB 에 저장하지 않고도 알 수 있다는 것을 의미한다.

(유저 아이디를 사용하면 한 유저는 어느 테스트를 하든 평생 똑같은 그룹인거 아니야? 라는 의문이 있었는데, 이 문제를 해결하기 위해 보통 아이디에 실험번호나 날짜를 더한 형태를 해시한다!)

버킷 넘버를 부여하고 난 이후에는?

A와 B라는 두 그룹이 있다. 테스트의 목적은 A와 B그룹의 행동이 달랐는지, 달랐다면 어떻게 얼마나 달랐는지를 파악하기 위함이다. 그렇다면, 서버에서는 단순히 유저를 A와 B로 나누어주는 것이 아니라 전체 유저 중 어떤 유저들이 테스트 대상이었는지 (= 테스트 기간 동안 접속을 했었고) 를 알아야 관리가 될 것 같다.

왜냐면 지금 상태로는,'abc 라는 유저가 A였어요 B였어요?' - 라는 질문에는 답할 수 있지만, '전체 유저 중 테스트 대상이었던 A와 B를 알려주세요' 에는 대답을 할 수가 없기 때문..

0개의 댓글