Rails A/B test: Split, Vanity, and SimpleAbs

개발중인 웹사이트에 간단한 A/B 테스트를 하려고 조사를 좀 했는데 대여섯개의 레일즈 젬을 발견했고 그 중 세 개를 직접 설치해 봤다. 최종 선택은 Split. 과정을 정리해 봤다.

A/B test가 뭔가?

빨간 버튼(A)이 나은지 파란 버튼(B)이 나은지 싸우지 말고 둘 다 올려본 다음 사람들이 많이 클릭하는 걸로 결정하기로 할 때 쓰는 방법. 월요일부터 화요일까지 A 올렸다가 수, 목 B 올려보고 정해도 되지만 동시에 무작위로 해보면 다른 변수를 덜 신경써도 되니까 이를 위한 기법이 발달함.

A/B test(에이비테스트) 말고 Split test라고 부르기도 하고 experiment한다고 하기도 함. 이름이 A/B테스트지만 꼭 두 가지만 놓고 해야하는 건 아니고 여러 선택사항(alternatives라고 부르기도 하고 variants라고도 한다.)을 줘도 된다.

고려할 것들

Optimizely 같은 서비스를 쓰거나, Google Analytics의 Experiments라는 기능을 활용하는 방법도 있지만

  1. Optimizely는 비주얼 툴로 비개발자가 쉽게 테스트를 만들 수 있게 해주는데, 결과적으로 페이지에 심은 JavaScript가 웹페이지를 이렇게 혹은 저렇게 바꾸는 방식이다. 내가 개발자라서 그런지 tricky해 보여서 패스. 개발자가 없거나, 페이지의 일부만 테스트 할 때 적당할 듯.
  2. GA Experiments는 선택마다 페이지 주소가 달라야하는 점이 장점이 될 수도, 단점이 될 수도 있겠다. 나는 페이지의 일부만 바꿀거고, 심지어 중요한 페이지라서 URL이 달라지게 하고 싶지는 않았다. 워드프레스같은 CMS를 쓴다면 실험할 페이지 추가해서 해보기 좋을 것 같다.

내가 원한 건 레일즈에 쉽게 통합해서 쓸 수 있는 툴이었고 다음을 고려했다.

  • 한 방문자는 계속 같은 화면을 봐야된다.
  • Alternative 별 weight 설정: 전체 방문자 중 10%만을 대상으로 테스트 하고 싶다면?
  • Dashboard 제공 : 몇 명이 뭘 선택했는지 쉽게 보고싶다.
  • Google Analytics integration : 꼭 필요한 건 아니지만...
  • Override by a URL parameter : 개발중에 각 선택사항을 쉽게 전환해서 보면 편하겠다.

몇 가지 gem을 찾았고

simple_abs

거의 이걸 고를뻔 했는데 weight 설정을 하고 싶어서 탈락. 다시 말해 weight 주고 싶지 않으면 굉장히 가볍고 좋다. 다른 것들은 Redis 같은 백엔드 저장소가 필요하지만 이건 쿠키만으로 작동한다.

Split

나는 이것을 선택. Redis(혹은 MongoDB) backend 필요하지만 Sidekiq 때문에 쓰던게 있어서 부담이 없었다. 심지어 Cookie로 대체 할 수도 있다. 쉽게 마운트 할 수 있는 대시보드도 제공하고 URL override도 되고. 어느 정도 테스트 하다 대시보드에서 클릭!하면 그 옵션으로 고정된다. 내가 원하는게 다 있었다.

Vanity

기능도 많고 좋아 보여서 처음에 이걸 세팅해 봤는데, 닭 잡는데 소 잡는 칼 쓰는 기분이라 그만뒀다. 나중에 더 복잡한 테스트가 필요해지만 다시 봐야겠다. Split + 알파라고 생각하면 될 것 같다.

References

About Sanghyun Park

a.k.a Baxang. Software engineer lives in Sydney, Australia born in Seoul, South Korea.