「Trustworthy Online Controlled Experiments」를 읽고 : 모두를 위한 입문 2
https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=202962149
앞으로 글 네개에 걸쳐서 이 책 내용을 정리해보려한다.
지은이가 Ron Kohavi ,Ya Xu ,Diane Tang 인데 이 분들 약력을 보면 책에 굉장히 신뢰가 간다.
Part I : 모두를 위한 입문 주제 : https://for-development.tistory.com/155
1. 도입 및 동기
2. 실험 시작과 분석
3. Twyman의 법칙과 실험 신뢰성
4. 실험 플랫폼 및 문화
Part II : 모두를 위한 선택된 주제 : 현재 글
5. 속도의 문제
6. 구조적 지표
7. 실험과 전체 평가 기준으로 쓰일만한 지표들
8. Instituonal Memory(제도적인 기억...? 잘 모르겠다)과 메타 분석
9. 통제 실험에서의 윤리
Part III : 통제된 실험을 위한 보완책
10. 대안적 기술들
11. 관찰가능한 인과적 연구
Part IV : 실험플랫폼을 만들기 위한 고급 주제
12. 클라이언트 측면에서의 실험
13. 계측(Instrumentation)
14. 임의 추출 단위
15. Ramping Experiment Exposure : 퀄리티와, 스피드, 위험도간의 취사선택
16. 실험 분석의 규모 조절
Part V : 실험 분석을 위한 고급 주제
17. 온라인 통제 실험의 통계학
18. 분산 평가와 향상된 민감도: 함정과 그 대안
19. A/A 테스트
20. 향상된 민감도를 위한 트리거
21. 잘못된 샘플 비율과 신뢰성과 연관된 다른 가드레일 지표
22. 변인들간의 상호간섭
5. 속도의 문제
- 아마존에서 100msec 느려지니까 1% 판매량 떨어짐
- 빙에서 100msec 속도 빨라질수록 revenue 0.6% 증가함.
- Optimizely에서 code snippet을 상단에 노출하면 page를 느리게만들고, 아래에 배치하면 화면을 깜빡이게 만듬 그래서 이 책에선 서버사이드 개인화와 최적화를 추천함. 서버에서 HTML 코드도 만들고...
- Metric과 Page LoadTime의 관계는 테일러 급수를 따른다. 페이지 로딩 시간이 0초에서 0.1초로 늘어나는 것보다 5초에서 5.1초로 늘어나는게 메트릭에 더 나쁜 결과를 낳는다.
- Performance 향상 실험을 통해 대답가능한 질문들
- 성능향상으로 인한 즉각적인 이득은 무엇인가?
- 장기적 효과가 있는가?
- 특정한 메트릭에 대한 효과는 무엇인가. 보통 새로운 피처는 degradation 하는데 이걸 상쇄할만큼 tradeoff가 있는지 측정 가능한가?
- 어디서 성능이 제일 유의미한가.
- 어쨋든 성능은 어떻게 측정하는가?
- browser onload event의 request가 온 시간 - 첫 html 요청 시간
- 당연히 Element마다 퍼포먼스가 성과에 미치는 영향이 다르다. 구글에서 검색결과가 늦게 나오는거랑 Gmail이 로딩 늦게되는거랑 유저가 느끼는 바가 많이 다르다.
- 아주 드물게 페이지 로딩속도가 너무 빨라서 사용자의 신뢰도를 감소시키는 경우도 있다.
- 때로는 200ms 정도의 속도차이는 uX에 영향을 안미칠 수도 있지만, 한편 조그마한 속도 차이가 큰 영향을 미칠 수도 있다.
- 서버와 클라이언트의 차이는?
- Difference 1 : Release Process
- Server는 배포가 쉽고 Client는 아니다. 특히 데스크톱앱이랑 모바일은. 배포했다고해도 유저가 업데이트 안하는 경우가 부지기수다.
- Difference 2: Data Communication between Client and Server
- Internet Connectivity :
- Celluar data bandwith : 네트워크 불안정해서 앱 버벅이면 우리가 바꾼 요소랑 상관없이 유저의 참여도가 낮아질 수 있음
- Battery: 휴대폰을 low battery mode로 하면 app이 할 수 있는것에 제약이 걸릴 수 있다.
- CPU, latency, and performance : 폰이 꾸데기면 잘 안될 수 있다.
- Memory and storage : Cache는 참 좋은데, 용량 많이먹어서 이거때문에 앱 지운다는 사람 많다.
- Internet Connectivity :
- tradeoff가 많다. 유저폰에 데이터 저장했다가 wifi 터질때만 받을건지, 아니면 그냥 날릴건지 등등
- Implications for Experiments
- Difference 1 : Release Process
- 초기변화 예측 및 매개변수화
- 클라이언트코드가 유저에게 가닿기 힘들다는 건 세가지 의미가 있다.
- 새로운 앱이 배포될 때 아직 미완성인 피처가 있을 수 있다. 그 피처는 feature flag에 의해 off되어있다가 피처가 완성되면 다시 켜질 수 있다. 때때로 서버가 완성되면 그 기능은 활성화된다.
- 더 많은 기능이 완성될수록 그들은 server side의 configuration을 받을 수 있다. 이건 꼬ㅒ 좋은 방법인데 네트워크등 이슈로 성능이 잘 안나오면 server에서 해당 기능들을 끌 수 있다. 다시 기나긴 클라이언트 앱 매포 사이클을 거치는 것보단 훨씬 낫다.
- 가장 좋은 방법은... new configuration을 활용하는 것이다. 그리고 client code는 이 configuration을 어떻게 parsing할지만 알고 있으면 된다. 예를 들면 윈도우10은 search box를 이렇게 구성했다. 1년넘게 실험한 결과 bing이 가장 많이 사용되도록 했고, 수백만 달러를 벌어들일 수 있었다. 머신러닝 모델도 마찬가지다. Op: 우리가 API 짤 때 paramter를 넘겨주지않나? 그것처럼 A/B 테스트의 variant를 파라미터화한다.
- 지연된 로깅 및 유효 시작 시간 예상
- 실험시작했다고 바로 되는게 아니다. 디바이스가 오프라인이거나, bandwidth가 낮거나 이런 상황에선 새로운 환경변수를 push하는게 오히려 유저에게 안좋은 경험을 줄 수 있다.
- 결국 유저가 앱을 업데이트하지않거나, 여러 이유로 생각보다 데이터가 느리게 쌓일 수 있다. 업데이트 안한 유저는 애초에 실험대상에서 제외되어버리는 문제가 발생한다.
- Wifi가 잘되거나, 폰이 좋거나, 데이터가 짱짱한 유저로 편향된 결과가 도출될 수 있다.
- Control이 먼저 노출될 경우 Caching 되기때문에 유저에게 더 좋은 경험을 선사할 수 있다(Performance와 성과는 정비례관계다) —> 이것도 왜곡된 결과로 나타날 수 있다.
- 오프라인 또는 시작 사례를 처리할 기본값? 만들기
- 유저가 오프라인이거나 처음 앱을 깔아서 실행시켰을 때 보여줄 기본 화면이 필요하다. (서버가 제대로 동작안할 수도 있으니까)
- Triggered Analysis에는 클라이언트 측 실험 할당 추적이 필요할 수 있다
- 유저 액션마다 Server로 시그널을 보내는게 아니라 한 experiment를 통틀어서 한번에 보내는게 낫다.이게아니면 over-triggering 될수있고 유저 경험에 안좋은 영향을 미쳐서 결과를 왜곡할 수 있다.
- 장치 및 앱 레벨 상태에 대한 중요 가드레일 추적
- 디바이스 상태체크해야한다. 예를 들면 더 많은 push를 보내는 비교군이 있을 때, 지금 당장은 별 영향 없을 수 있지만 장기적으로는 안좋은 결과를 낼 수 있다. 앱 사이즈같은 것도 주의해야한다. 앱 사이즈가 크면 덜 다운로드 받는다.
- 준실험적 방법을 통한 전반적인 앱 릴리스 모니터링
- 앱을 릴리즈할 때 구버전과 신버전을 둘다해라 .이러면 용량 두배라서 좀 안좋긴한데, 구버전 사용자가 신버전에 익숙해질 시간이 필요하다.
- 다양한 기기와 플랫폼이 상호작용하는 걸 주의하라
- 한 유저가 다양한 기기(컴퓨터와 휴대폰으로 유튜브보기)로 접속하는건 너무나 익숙하다.
- 다른 기기에는 다른 ID를 배급하는 경우가 많다. 그러면 같은 유저가 다른 디바이스에 다른 variation을 할당받는 경우가 있다.
- 우리는 카카오톡 쓰다가도 link를 눌러서 카톡을 빠져나올 때도 있다. 이러면 정확한 비교가 힘들다. 그리고 한 플랫폼에서 유저의 액션이 다른 플랫폼보다 더 원활하고 좋을 수도 있다. 그 결과 실험에 의한게 아닌데 유저 참여도가 쑥 떨어질 수 있다.
- 한 유저가 다양한 기기(컴퓨터와 휴대폰으로 유튜브보기)로 접속하는건 너무나 익숙하다.