64
<애드브릭스> 라이브 마이그레이션 분투기 달리는 분석 툴의 바퀴를 갈아 끼워보자! 아이지에이웍스 백정상

[NDC16] (애드브릭스) 라이브마이그레이션 분투기 - 달리는 분석 툴의 바퀴를 갈아 끼워보자!

Embed Size (px)

Citation preview

Page 1: [NDC16] (애드브릭스) 라이브마이그레이션 분투기 - 달리는 분석 툴의 바퀴를 갈아 끼워보자!

<애드브릭스> 라이브 마이그레이션 분투기달리는 분석 툴의 바퀴를 갈아 끼워보자!

아이지에이웍스

백정상

Page 2: [NDC16] (애드브릭스) 라이브마이그레이션 분투기 - 달리는 분석 툴의 바퀴를 갈아 끼워보자!

저작권법 제 35조의 3 ‘공정이용‘ 조항에 따라교육과 연구 목적으로 이용하고 있습니다.

혹시 문제가 있을 경우 [email protected]으로연락 주시면 적절한 조치를 취할 수 있도록 하겠습니다.

저작물 인용

Page 3: [NDC16] (애드브릭스) 라이브마이그레이션 분투기 - 달리는 분석 툴의 바퀴를 갈아 끼워보자!

아이지에이웍스 애드브릭스 개발 팀장

왕년엔 게임 개발자지금은 앱 애널리틱스 개발자

크로스피터와인 홀릭

발표자 소개

Page 4: [NDC16] (애드브릭스) 라이브마이그레이션 분투기 - 달리는 분석 툴의 바퀴를 갈아 끼워보자!

애드브릭스

Page 5: [NDC16] (애드브릭스) 라이브마이그레이션 분투기 - 달리는 분석 툴의 바퀴를 갈아 끼워보자!

아이지에이웍스에서 제공하는모바일 앱 애널리틱스

마케팅 유입 트래킹마케팅 성과 및 매출 분석앱 내 주요지표 분석

글로벌 무료 서비스 중

Page 6: [NDC16] (애드브릭스) 라이브마이그레이션 분투기 - 달리는 분석 툴의 바퀴를 갈아 끼워보자!

애드브릭스의 시작

Page 7: [NDC16] (애드브릭스) 라이브마이그레이션 분투기 - 달리는 분석 툴의 바퀴를 갈아 끼워보자!

스마트폰 게임 시장의 골드러시 시절아이지에이웍스는 모바일 앱 마케팅에 한창이었던 그 때

때는 2013년

Page 8: [NDC16] (애드브릭스) 라이브마이그레이션 분투기 - 달리는 분석 툴의 바퀴를 갈아 끼워보자!

마케팅을 진행했는데 유저는 얼마나 유입되었나요?유입 된 유저의 DAU와 리텐션은 어떤가요?어떤 마케팅 채널에서 가장 효과가 좋았나요?

고객님의 요청

Page 9: [NDC16] (애드브릭스) 라이브마이그레이션 분투기 - 달리는 분석 툴의 바퀴를 갈아 끼워보자!

당시 선택지

Page 10: [NDC16] (애드브릭스) 라이브마이그레이션 분투기 - 달리는 분석 툴의 바퀴를 갈아 끼워보자!

마케팅 성과 지표를 보여주지 않거나웹 마케팅 위주의 분석 지표모바일 앱 마케팅 성과를 측정하기 편리한 툴이 없었다

우리가 만들어서 제공하자!

적합한 툴의 부재

Page 11: [NDC16] (애드브릭스) 라이브마이그레이션 분투기 - 달리는 분석 툴의 바퀴를 갈아 끼워보자!

앱 마케팅 트래킹 링크와 그 성과 측정클릭, 실행, 신규 실행, CVR

앱 기본 분석지표신규 유저 유입, 리텐션, 액티브 유저

Minimum Viable Product

Page 12: [NDC16] (애드브릭스) 라이브마이그레이션 분투기 - 달리는 분석 툴의 바퀴를 갈아 끼워보자!

가장 신뢰할 수 있는 구조로 빠르게 개발하여 출시

출시 후 곧바로 무료 애널리틱스 툴로 입소문 타면서 많은 고객 사용

2013년 4월

Page 13: [NDC16] (애드브릭스) 라이브마이그레이션 분투기 - 달리는 분석 툴의 바퀴를 갈아 끼워보자!

Adbrix User

MobileDevice

Route 53

AnalyticsWeb Service

MSSQLAnalytics

AWS Tokyo region

TrackingWeb API

MSSQLActivityStorage

Page 14: [NDC16] (애드브릭스) 라이브마이그레이션 분투기 - 달리는 분석 툴의 바퀴를 갈아 끼워보자!

모바일 앱 마케팅 발전에 따른기능 고도화

Page 15: [NDC16] (애드브릭스) 라이브마이그레이션 분투기 - 달리는 분석 툴의 바퀴를 갈아 끼워보자!

마케팅 비용과 유저 매출간의 ROI는 어떤지어떤 마케팅 매체가 우리 앱에 잘 맞는지마케팅으로 유입된 유저는 우리 앱에서 어떤 행동을 하는지매출이 일어나긴 하는데 어떤 아이템이 잘 팔리는지유저가 언제 처음 구매 / 재구매를 하는지우리 유저들은 언제 이탈하는지우리 앱은 어떤 국가 / 성별 / 연령 유저들이 주로 이용하는지

주요 마케팅 지표의 증가

Page 16: [NDC16] (애드브릭스) 라이브마이그레이션 분투기 - 달리는 분석 툴의 바퀴를 갈아 끼워보자!

앱을 잘 만들어서 대박을 내는 것이 무엇보다 중요

자체 분석 지표를 직접 개발해 보려고 하니앱 마케팅에 대한 깊은 이해가 필요

가장 중요한 점은 앱을 잘 만들기에도 빠듯한 인력과 시간

중견 개발 업체의 어려움

Page 17: [NDC16] (애드브릭스) 라이브마이그레이션 분투기 - 달리는 분석 툴의 바퀴를 갈아 끼워보자!

자체 분석툴과 팀이 이미 존재하며국내 최강 분석력을 자랑

하지만 트래킹 시스템은 국내 / 해외 매체와의 협업이 문제성과 트래킹 기능을 직접 개발하기가 어려움

대형 개발 업체의 어려움

Page 18: [NDC16] (애드브릭스) 라이브마이그레이션 분투기 - 달리는 분석 툴의 바퀴를 갈아 끼워보자!

어려움의 해결책

트래킹 => 분석 => 액션애드브릭스 쓰면 되겠네애드브릭스에서 해줬으면 좋겠다

Page 19: [NDC16] (애드브릭스) 라이브마이그레이션 분투기 - 달리는 분석 툴의 바퀴를 갈아 끼워보자!

게다가 모바일 앱의 수명은 짧은 편

Page 20: [NDC16] (애드브릭스) 라이브마이그레이션 분투기 - 달리는 분석 툴의 바퀴를 갈아 끼워보자!

http://www.slideshare.net/igaworks/igaworks-game-tech2015keynotever20?qid=c61b426e-78b8-4cbd-bf5f-b03380f2e02d&v=&b=&from_search=1

Page 21: [NDC16] (애드브릭스) 라이브마이그레이션 분투기 - 달리는 분석 툴의 바퀴를 갈아 끼워보자!

어려움의 해결책

트래킹 => 분석 => 액션애드브릭스 쓰면 되겠네

애드브릭스에서빨리 해줬으면 좋겠다

Page 22: [NDC16] (애드브릭스) 라이브마이그레이션 분투기 - 달리는 분석 툴의 바퀴를 갈아 끼워보자!

저희 마케팅 진행해야 하는데 이런 기능 지원 가능한가요?언제 하시는데요?

내일 모레요

그러다 보니

Page 23: [NDC16] (애드브릭스) 라이브마이그레이션 분투기 - 달리는 분석 툴의 바퀴를 갈아 끼워보자!

© 베가본드, 다케히코이노우에, 슈에이샤

Page 24: [NDC16] (애드브릭스) 라이브마이그레이션 분투기 - 달리는 분석 툴의 바퀴를 갈아 끼워보자!

애드브릭스 개발팀은내부를 돌아볼 새도 없이최대한 빠르게 고객이 원하는 기능을제공하는 것을 목표로

숨막히는 레이스를 펼침

http://www.motorian.kr/?p=39154

Page 25: [NDC16] (애드브릭스) 라이브마이그레이션 분투기 - 달리는 분석 툴의 바퀴를 갈아 끼워보자!

딥링크 성과 측정 (예정)노출 기반 성과 측정 (예정)매체 / 광고주 이벤트 포스트백페이스북 앱 인스톨 캠페인 지원구글 애드워즈 UAC 캠페인 트래킹 지원트래킹링크 시스템 개편매체 성과 포스트백 기능 추가구글 애드워즈 포스트백 국내 최초 지원애드브릭스 열람 권한 개편글로벌 전체 해외 매체 파트너십 연동모바일 비즈니스 플랫폼 개편

최근 애드브릭스 업데이트

1년 만에업데이트 한 내용들

Page 26: [NDC16] (애드브릭스) 라이브마이그레이션 분투기 - 달리는 분석 툴의 바퀴를 갈아 끼워보자!

이렇게 개발팀 전체가 숨 막히는 마라톤을 진행하다 보니

Page 27: [NDC16] (애드브릭스) 라이브마이그레이션 분투기 - 달리는 분석 툴의 바퀴를 갈아 끼워보자!

애드브릭스의 성장

Page 28: [NDC16] (애드브릭스) 라이브마이그레이션 분투기 - 달리는 분석 툴의 바퀴를 갈아 끼워보자!

-

1,000

2,000

3,000

4,000

5,000

6,000

7,000

8,000

9,000

10,000

May-13

Jun-13

Jul-

13

Aug-13

Sep-13

Oct-

13

Nov-13

Dec-13

Jan-14

Feb-14

Mar-

14

Apr-

14

May-14

Jun-14

Jul-

14

Aug-14

Sep-14

Oct-

14

Nov-14

Dec-14

Jan-15

Feb-15

Mar-

15

Apr-

15

May-15

Jun-15

Jul-

15

Aug-15

Sep-15

Oct-

15

Nov-15

누적 등록 앱 수

Page 29: [NDC16] (애드브릭스) 라이브마이그레이션 분투기 - 달리는 분석 툴의 바퀴를 갈아 끼워보자!

-

50,000,000

100,000,000

150,000,000

200,000,000

250,000,000

May-13

Jun-13

Jul-

13

Aug-13

Sep-13

Oct-

13

Nov-13

Dec-13

Jan-14

Feb-14

Mar-

14

Apr-

14

May-14

Jun-14

Jul-

14

Aug-14

Sep-14

Oct-

14

Nov-14

Dec-14

Jan-15

Feb-15

Mar-

15

Apr-

15

May-15

Jun-15

Jul-

15

Aug-15

Sep-15

Oct-

15

Nov-15

누적 등록 기기 수

Page 30: [NDC16] (애드브릭스) 라이브마이그레이션 분투기 - 달리는 분석 툴의 바퀴를 갈아 끼워보자!

수백여 앱 -> 수만여 앱

수천만 디바이스 -> 수억 디바이스

수십만 클릭 -> 수십억 클릭

수백만 액티비티 -> 수백억 액티비티

Page 31: [NDC16] (애드브릭스) 라이브마이그레이션 분투기 - 달리는 분석 툴의 바퀴를 갈아 끼워보자!

고객이 원하는 많은 기능을 빠르게 제공하면서안정적인 기반으로 시스템 개선하는

두 마리 토끼를 잡아야 하는 상황

Page 32: [NDC16] (애드브릭스) 라이브마이그레이션 분투기 - 달리는 분석 툴의 바퀴를 갈아 끼워보자!

애드브릭스 시스템 개선안

Page 33: [NDC16] (애드브릭스) 라이브마이그레이션 분투기 - 달리는 분석 툴의 바퀴를 갈아 끼워보자!

Adbrix User

MobileDevice

Route 53

AnalyticsWeb Service

MSSQLDatabasesAnalytics

AWS Tokyo region

Tracking APIMSSQL

DatabasesActivityStorage

Page 34: [NDC16] (애드브릭스) 라이브마이그레이션 분투기 - 달리는 분석 툴의 바퀴를 갈아 끼워보자!

대규모 트래픽 유입을 대비해 시스템 분산이 가능해야페이스북 / 트위터와 같이 대용량 데이터 스트리밍을 하자

데이터 레이크가 필요하다데이터 레이크에서 여러 시스템이 데이터를 활용할 수 있었으면

액티비티 트래킹

Page 35: [NDC16] (애드브릭스) 라이브마이그레이션 분투기 - 달리는 분석 툴의 바퀴를 갈아 끼워보자!

Adbrix User

MobileDevice

Route 53

EC2Analytics

Web Service

MSSQLDatabasesAnalytics

AWS Tokyo region

Activity Storage

Activity Stream Worker

Activity Streams

Activity Tracking Web API

Page 36: [NDC16] (애드브릭스) 라이브마이그레이션 분투기 - 달리는 분석 툴의 바퀴를 갈아 끼워보자!

Adbrix User

MobileDevice

Route 53

EC2Analytics

Web Service

MSSQLDatabasesAnalytics

AWS Tokyo region

EC2Tracking API

MSSQLDatabases

ActivityStorage

Page 37: [NDC16] (애드브릭스) 라이브마이그레이션 분투기 - 달리는 분석 툴의 바퀴를 갈아 끼워보자!

데이터의 양에 상관없이스케일 아웃을 통해 분석 시간을 줄일 수 있었으면

분석 배치 프로세스를 돌릴 때에만 비용을 지불하고 싶다

데이터 분석 시스템

Page 38: [NDC16] (애드브릭스) 라이브마이그레이션 분투기 - 달리는 분석 툴의 바퀴를 갈아 끼워보자!

Adbrix User

MobileDevice

Route 53

EC2Analytics

Web Service

MSSQLAnalytics DB

AWS Tokyo region

Activity Storage

Activity Stream Worker

Activity Streams

Activity TrackingWeb API

SparkDaily Batch

Process

Page 39: [NDC16] (애드브릭스) 라이브마이그레이션 분투기 - 달리는 분석 툴의 바퀴를 갈아 끼워보자!

설계도는 다 만들어졌고관련 기술도 전부 학습했는데

어떻게 새 시스템으로 갈아타지?

Page 40: [NDC16] (애드브릭스) 라이브마이그레이션 분투기 - 달리는 분석 툴의 바퀴를 갈아 끼워보자!

라이브 마이그레이션의 시작

Page 41: [NDC16] (애드브릭스) 라이브마이그레이션 분투기 - 달리는 분석 툴의 바퀴를 갈아 끼워보자!

국내 대다수 마케터들이 사용하는 툴트래킹 서비스 특성 상 24시간 365일 서비스가 되어야 함한번도 정기 점검을 해본 적이 없음

‘마치 없었던 일 처럼‘ 시스템을 교체해야 하는 상황

무중단 업데이트의 필요성

Page 42: [NDC16] (애드브릭스) 라이브마이그레이션 분투기 - 달리는 분석 툴의 바퀴를 갈아 끼워보자!

달리는 자동차의바퀴를 갈아 끼운다

Page 43: [NDC16] (애드브릭스) 라이브마이그레이션 분투기 - 달리는 분석 툴의 바퀴를 갈아 끼워보자!

https://www.youtube.com/watch?v=MQm5BnhTBEQ

Page 44: [NDC16] (애드브릭스) 라이브마이그레이션 분투기 - 달리는 분석 툴의 바퀴를 갈아 끼워보자!

기존 시스템은 빠르게 소비자의 요구에 부응하고그 와중에 새로운 시스템을 구현

기존 데이터를 데이터 레이크에 올린 뒤양쪽에 동일한 데이터를 입력해서 동일한 결과를 출력하는지 확인동일한 결과를 출력한 지 2주일이 지나면‘마치 없었던 일 처럼‘ 시스템을 교체한다!

컨셉

Page 45: [NDC16] (애드브릭스) 라이브마이그레이션 분투기 - 달리는 분석 툴의 바퀴를 갈아 끼워보자!

시스템 양쪽에 실시간 데이터를 전달할지기존에 저장된 데이터를 데이터 레이크에 어떻게 옮길지양쪽에서 동일한 결과물을 출력하는지 어떻게 확인할지시스템을 교체하는 동안 유입되는 신규 유저 액티비티는 어떻게 보관할지

막막한 상황

실제로 하려니

Page 46: [NDC16] (애드브릭스) 라이브마이그레이션 분투기 - 달리는 분석 툴의 바퀴를 갈아 끼워보자!

중간에 액티비티 큐를 하나 두고,큐에 있는 데이터를 읽는 워커가 양쪽으로 데이터를 전달

기존에 저장된 스토리지 데이터는레플리카를 제작해서 우선 데이터를 안전하게 카피하고카피한 데이터를 데이터 레이크에 올리자

기존 시스템은 기존처럼 고객에게 지표를 제공하고새 시스템은 개발자가 직접 지표를 확인

해결책

Page 47: [NDC16] (애드브릭스) 라이브마이그레이션 분투기 - 달리는 분석 툴의 바퀴를 갈아 끼워보자!

Adbrix User

MobileDevice

Route 53

AnalyticsWeb Service

MSSQLAnalytics

AWS Tokyo region

Tracking API

MSSQLActivityStorage

Activity Queue

Activity Storage

Activity Stream Worker

Activity Streams

Web API

SparkDaily Batch

Process

AdbrixDeveloper

ActivityWorker

MSSQLActivityStorageReplica

Page 48: [NDC16] (애드브릭스) 라이브마이그레이션 분투기 - 달리는 분석 툴의 바퀴를 갈아 끼워보자!

라이브 마이그레이션 분투기

Page 49: [NDC16] (애드브릭스) 라이브마이그레이션 분투기 - 달리는 분석 툴의 바퀴를 갈아 끼워보자!

목요일 새벽에 시스템 교체예상과는 다르게 큰 문제 없이 수 분 내에 바로 교체완료

Page 50: [NDC16] (애드브릭스) 라이브마이그레이션 분투기 - 달리는 분석 툴의 바퀴를 갈아 끼워보자!

Adbrix User

MobileDevice

Route 53

AnalyticsWeb Service

MSSQLAnalytics

AWS Tokyo region

TrackingWeb API

Activity Storage

Activity Stream Worker

KinesisActivity Streams

TrackingWeb API

SparkDaily Batch

Process

Activity Queue

ActivityWorker

Page 51: [NDC16] (애드브릭스) 라이브마이그레이션 분투기 - 달리는 분석 툴의 바퀴를 갈아 끼워보자!

© 슬램덩크, 다케히코이노우에, 슈에이샤

Page 52: [NDC16] (애드브릭스) 라이브마이그레이션 분투기 - 달리는 분석 툴의 바퀴를 갈아 끼워보자!

금요일에 분석 결과에서 신규 유저 수치에 이슈 발생키네시스 스트림 리텐선 피리어드 1주일로 연장분석 지연시키고 바로 로직 확인

이슈 발생

Page 53: [NDC16] (애드브릭스) 라이브마이그레이션 분투기 - 달리는 분석 툴의 바퀴를 갈아 끼워보자!

데이터 저장 시 유저 번호 발급 로직에 문제새로운 스트림 워커에서 데이터 리스토어

리스토어된 데이터에서 분석 다시 진행

이슈 해결

Page 54: [NDC16] (애드브릭스) 라이브마이그레이션 분투기 - 달리는 분석 툴의 바퀴를 갈아 끼워보자!

Adbrix User

MobileDevice

Route 53

AnalyticsWeb Service

MSSQLDatabasesAnalytics

AWS Tokyo region

Activity Storage

Activity Stream Worker

KinesisActivity Streams

Activity TrackingWeb API

SparkDaily Batch

Process

ActivityRestore Stream Worker

Activity Restore Storage

Page 55: [NDC16] (애드브릭스) 라이브마이그레이션 분투기 - 달리는 분석 툴의 바퀴를 갈아 끼워보자!

금요일 신규유저 수치에도 문제 발생

왜지??

아무리 찾아봐도 문제가 보이지 않음

그런데 토요일에

Page 56: [NDC16] (애드브릭스) 라이브마이그레이션 분투기 - 달리는 분석 툴의 바퀴를 갈아 끼워보자!

© 강동원

Page 57: [NDC16] (애드브릭스) 라이브마이그레이션 분투기 - 달리는 분석 툴의 바퀴를 갈아 끼워보자!

모든 팀원 멘붕에 CTO 출동!CTO와 토요일 밤새 원인을 찾아본 결과

1. 리스토어 데이터에 기존 수집한 데이터 추가한 게 문제2. 참고했던 앱이 구글 플레이 피쳐드 영향으로 실제 신규유저수가 증가했음

멘 to the 붕

Page 58: [NDC16] (애드브릭스) 라이브마이그레이션 분투기 - 달리는 분석 툴의 바퀴를 갈아 끼워보자!

일요일에 목, 금, 토, 배치 프로세스 다시 돌리고마이그레이션 무사히 완료

해결

Page 59: [NDC16] (애드브릭스) 라이브마이그레이션 분투기 - 달리는 분석 툴의 바퀴를 갈아 끼워보자!

결과

Page 60: [NDC16] (애드브릭스) 라이브마이그레이션 분투기 - 달리는 분석 툴의 바퀴를 갈아 끼워보자!

데이터 유실 제로데이터 수치 모두 정상마케팅 성과 측정 문제 없었음분석 결과는 2일 지연되어 제공 (ㅠ_ㅠ)월요일부터 성공적으로 새 시스템에서 분석 시작

Page 61: [NDC16] (애드브릭스) 라이브마이그레이션 분투기 - 달리는 분석 툴의 바퀴를 갈아 끼워보자!

소감

Page 62: [NDC16] (애드브릭스) 라이브마이그레이션 분투기 - 달리는 분석 툴의 바퀴를 갈아 끼워보자!

애드브릭스 개발팀은시장의 요구를 충족하기 위해서고객이 원하는 기능을 최대한 빨리 제공하면서시스템의 개선도 무중단으로 진행해야 했습니다

라이브 마이그레이션은 매우 어려웠습니다중간에 많은 어려움이 있었지만지혜롭게 극복했습니다

Page 63: [NDC16] (애드브릭스) 라이브마이그레이션 분투기 - 달리는 분석 툴의 바퀴를 갈아 끼워보자!

© 이말년

Page 64: [NDC16] (애드브릭스) 라이브마이그레이션 분투기 - 달리는 분석 툴의 바퀴를 갈아 끼워보자!

감사합니다

[email protected]