1 of 28

크로키닷컴 데이터 분석가 임광빈

Amazon Athena를 활용한 AB테스트

2 of 28

저는 어떤 사람 일까요?

호기심 많고 이것저것 배우기 좋아하는 사람입니다.

임광빈

스타트업만 4년째..

통계학 전공

개발하는 거 좋아함

3 of 28

저는 어떤 일을 하고 있을까요?

데이터 기반의 UX 개선을 통해서 지그재그 앱 사용자들에게 최고의 사용 경험을 선사하려고 노력하고 있습니다.

UX(User Experience)?

사용자가 어떤 제품, 서비스 , 시스템 등을 직간접적으로 이용하면서 느끼는 경험

UX를 개선한다는 것은?

앱에서 UI 개선, 사용성 개선등을 통해서 유저에게 최고의 경험을 선사 할 수 있도록 하는 것

4 of 28

이야기 할 주제는 무엇인가요?

주제선정

킥오프/아이데이션

디자인

개발

AB테스트

프로덕트 적용

<UX팀 기능개발 프로세스>

A/B테스트 란?

�앱이나 웹페이지의 화면UI 혹은 어떤 기능이 사용자에게 효과적인지 평가하기 위해

두 집단으로 나눠 어떤 버전이 사용자들에게 긍정적인 영향을 주는지 분석하는 방법

Amazon Athena를 활용해서 AB테스트 유저와 성과를 어떻게 관리하는지 발표해보려고 합니다.

5 of 28

Amazon Athena?

서버리스: 직접적인 리소스 관리가 필요 없음

Amazon Athena은 표준 SQL을 사용해 S3에 저장된 데이터를 간편하게 분석 할 수 있는 대화식 쿼리 서비스

쿼리당 비용지불: 데이터 스캔 기준 1TB당 5 USD

빠른 속도: 병렬방식으로 쿼리를 자동으로 실행

Presto SQL: ANSI SQL를 지원하는 Presto 사용, 다양한 표준 데이터 형식과 호환(CSV, JSON, ORC, Avro, Parquet …)

6 of 28

Amazon Athena?

별도의 설치 없이도 웹 콘솔에서 SQL을 이용하여 분석 할 수 있음

7 of 28

Amazon Athena?

지그재그에서는 parquet 형식의 데이터로 S3에 저장한 뒤 아테나로 데이터를 읽어서 분석하고 있음

8 of 28

AB테스트는 어떻게 이루어지나요?

AB테스트의 프로세스는 크게 테스트 시작전 해야할 것 과 테스트 시작 후에 해야할 것으로 나뉨

테스트군 선정

성과 지표 설계

화면 로그 설계

데이터 모니터링

데이터 분석

<AB 테스트 시작 전 해야할 것>

<AB 테스트 시작 후 해야할 것>

9 of 28

기존 방식의 AB테스트 설계방식

서버에서 유저 분기 정보를 API 형태로 클라이언트가 받아서 유저에게 다른 화면으로 분기처리 함

서버

클라이언트

유저 메타정보

테스트 A안

테스트 B안

10 of 28

기존에 AB테스트를 하기 위해서는 설계한 내용을 바탕으로 사내 백앤드 개발자분들께 분기처리를 요청을 해야하는 상황 이였음.

기존 방식의 AB테스트 설계방식

상품검색을 n회 이상 사용한 유저가 테스트 대상 유저가 되야 해요.

기존/신규 유저로 나눠야 해요.

대조군, 테스트 A, B군 전부 4:3:3 비율로 들어가야 해요.

조건 및 규모 산출

특정 userId 패턴을 가진 유저로 분기처리 해주세요.

제가 특정 조건의 userId를 뽑아 드릴테니 분기 처리해주세요.

다음주에 테스트가 끝나니 배포 일정에 맞춰서 분기처리를 제거해주세요.

백앤드 개발자분께 요청

테스트 설계는 DA가 하지만 테스트의 컨트롤은 개발자분들이 해줘야 하는 상황

DA가 테스트를 컨트롤 해야하지 않을까?

11 of 28

AB테스트 플랫폼

AB테스트를 관리할 수 있는 서버를 따로 만들어 기존 서버에서 유저 분기정보를 AB테스트 서버에 요청하는 방식으로 설계

서버

클라이언트

테스트 A안

테스트 B안

AB테스트 서버

유저 분기정보

유저 메타정보

지그재그 데이터 엔지니어, 백앤드, 프론트엔드 개발자 분들께서 DA가 AB테스트를 직접 설계 및 배포 할 수 있는 툴을 개발해주심

유저 정보요청

12 of 28

AB테스트 플랫폼

지그재그 백오피스에 있는 AB테스트 관리 툴을 통해서 DA가 AB테스트를 직접 설계하고 배포 할 수 있음

  • 유저 랜덤 분기처리하는 테스트를 등록

  • 특정 조건의 유저를 테스트로 등록

  • QA시 그룹을 유연하게 바꾸면서 테스트

  • 테스트 종료 및 삭제

13 of 28

AB테스트 플랫폼

특정조건의 유저, 랜덤으로 유저 분기처리, 신규/기존 유저 분기처리와 같은 조건의 테스트를 설계 및 배포 할 수 있음

<특정 유저 테이블 직접 insert>

<랜덤으로 유저 분기처리>

<신규/기존 유저 분기처리>

14 of 28

EMR 환경에서 유저 테이블 등록하기

분석용 EMR 클러스터 안에 주피터 노트북을 띄워서 데이터 분석에 활용하는 구조

15 of 28

EMR 환경에서 유저 테이블 등록하기

주피터 노트북을 활용해서 분석용 S3에 Parquet 형태로 세그먼테이션 테이블 저장

16 of 28

EMR 환경에서 유저 테이블 등록하기

백오피스에서 세그먼테이션 테이블을 입력하면 알아서 아테나 테이블을 읽어서 테스트가 등록 됨

17 of 28

EMR 환경에서 유저 테이블 등록하기

등록된 테스트는 아테나를 통해서 확인 할 수 있음, 차후 분석시 그룹별 uuid를 이용해서 유저의 행동 패턴을 분석함

18 of 28

AB테스트 성과관리

AB테스트에서 중요한건 성과지표를 명확히 정해서 수집, 분석 하는 것

유저의 검색을 늘리고 싶다 -> UI 개선 -> 실제로 검색량이 늘었는가? -> 검색량이 늘어서 유저의 재방문 비율이 증가했는가?

대조군: 상단 배치

테스트 A안: 중단 배치

테스트 B안: 하단 배치

<검색창 개선 예시>

19 of 28

AB테스트 성과관리

성과지표 모니터링을 위해서 일배치로 데이터를 마트에 적재 후, 리대시와 아테나를 이용해 시각화 및 분석

<성과지표 데이터 처리 과정>

유저 로그가 s3에 저장됨

EMR 클러스터에서 spark로 성과지표를 계산

Airflow에서 EMR 배치작업 관리

처리 된 데이터를 s3에 저장

데이터 마트 관리 및 성과 분석

성과지표 모니터링

20 of 28

AB테스트 성과관리

Airflow와 Pyspark를 통해서 AB테스트의 성과지표들을 S3에 일배치로 저장

<분석 Airflow 내에서 돌고 있는 Spark Job들>

21 of 28

AB테스트 성과관리

리대시에 아테나를 연결하여 쿼리를 생성하고 결과를 시각화 할 수 있음

<Redash 쿼리>

22 of 28

AB테스트 성과관리

쿼리를 통해 만든 그래프들을 모아서 대시보드화

<Redash를 통한 지표 모니터링>

23 of 28

AB테스트 성과분석

아테나를 통해서 데이터 마트에 있는 데이터를 이용해 성과 분석하거나 분석에 필요한 데이터 추출

<아테나를 활용한 성과분석>

24 of 28

AB테스트 성과분석

테스트군과 대조군의 그래프와 단순 평균차이를 비교 함

A

B

C

  • “B 테스트군이 평균 검색 수가 다른 유저군에 비해서 00%가 높았습니다.”
  • “B 테스트군이 다른 유저군에 비해서 D1~D7 복귀하는 비율이 00% 더 높았습니다.”

25 of 28

AB테스트 성과분석

  • “A집단과 B집단의 검색 수 평균차이를 비교해본 결과, B집단이 A집단에 비해 검색 수가 유의미하게 높다는 결론이 나왔습니다.”

통계적 기법을 통한 평균차이를 비교

26 of 28

결론 도출

데이터 분석결과 해당 테스트가 성공 했다면 프로덕트에 도입,실패해도 얻은 인싸이트를 바탕으로 다른 시도를 해봄

“모두 고생하셨습니다! 해당 기능은 00에 배포될 예정입니다”

“검색창의 위치가 검색 수를 결정하는 것은 아닌것 같네요! 다른 접근방법이 필요할 것 같습니다.”

성공했을때

실패했을때

27 of 28

결과 관리

노션에서 테스트 설계, 배포 일정, 데이터, 분석결과 관리

28 of 28

Thank You!