ndc15_백정상_최종_모바일_앱의_실시간_운영을_위한_유저분석과_타게팅_기법

68
모모모 모모 모모모 모모모 모모 모모모모모 모모모 모모 아아아아아아아 모모모

Upload: jeongsang-baek

Post on 28-Jul-2015

2.121 views

Category:

Technology


0 download

TRANSCRIPT

모바일 앱의 실시간 운영을 위한유저분석과 타게팅 기법

아이지에이웍스

백정상

발표자 소개

아이지에이웍스블루윈드엔씨소프트넥슨

얼마 전까지 스타트업 개발자였습니다

게임 스타트업에서 제일 중요한 것

빠른 출시

아이디어 프로토타이핑컨텐츠 개발수익화 모델 준비운영 및 관리툴 개발퍼블리싱 준비런칭

1~2 년 버틸 돈으로 시작

모바일 게임을 만드는 길

아이디어 프로토타이핑컨텐츠 개발수익화 모델 준비운영 및 관리툴 개발퍼블리싱 준비런칭

6 개월 ~ 1 년

아이디어 프로토타이핑컨텐츠 개발수익화 모델 준비

운영 및 관리툴 개발퍼블리싱 준비런칭

어떡하지 ??

벼락치기 1“ 유저에게 친구가 방문하면 푸쉬로 알려주고 싶어요"

기획자 : “ 친구가 방문하면 푸시로 알려줘야 할 것 같아요”나 : “ 저 지금 컨텐츠도 수정 중인데…”기획자 : “ 당장 내일 퍼블리셔 만나야 하는데 푸시 없으면 안돼요 ㅠㅠ“

갑자기 다가와 상냥한 말투로

푸시 서버

게임 서버유저 A

유저 B

유저 B 방문

푸시알림 요청

GCM/APN 으로푸시 알림

Node.js 모듈 다운받아서 3 시간 만에 구현GCM/APNS 그런 건 모르겠고

“ 전체유저 푸시는 부하 때문에 안 되요“

벼락치기 2“ 모든 유저에게 푸시 메시지를 보내야겠어요"

푸시 서버

게임디비

콘솔 프로그램

전체 유저 데이터요청

10000 명씩 발송

요청당 1000 명씩 발송

발송 시각은 개발자가 수동으로 설정발송 시점마다 매번전체 유저에게 제대로 발송 되었는지유저가 실제 메시지를 봤는지

“ 구글 / 애플이 하라는 대로 했어요““ 잘 날아갔을 거에요“

왜 이랬을까

보통 혼자 아니면 둘게임은 재미있어야 돈을 번다재미있게 만들기에도 빠듯한 개발기간당연히 운영 / 관리툴은 날림으로

누군가가 나 대신 해줬으면 좋겠다

내가 삽질을 돕자

운영 시스템 개발“ 스테이지 100 판이상 깬 유저에게만 푸시를 보내고 싶어요““ 그중 몇 명이나 푸시를 열어봤는지 알고 싶어요“

푸시 메시지 발송공지 팝업쿠폰크로스프로모션

대표적 앱 운영 캠페인

마케터가 웹 페이지로직접 푸시 이벤트를 등록하고해당 푸시가 필요한 유저에게만예약 된 시간에 발송하고몇 명이나 푸시를 봤는지 알려줬으면

프론트백엔드타게팅 디비푸시 센더액티비티 트래커

개발자의 도움 없이 마케터가 직접 푸시 이벤트 등록타게팅 데이터 기반으로 유저 타게팅

ASP.net MVC + Bootstrap잘 만들어진 생산성 높은 웹 프레임워크

프론트

푸시 이벤트 등록 / 변경유저 타게팅 정보 관리

Restful 하게 프로토콜을 구현하긴 어렵다내부 리소스를 사용자가 제어하게 두면 관리가 어려움HTTP(POST) + JSONnode.js 로 빠르게 구현하자

백엔드

여러 종류의 앱이정의되지 않은 유저 타게팅 데이터를빠르게 입력 /검색해야 하는 데이터베이스1 앱 == 1 콜렉션

NoSQL 이 답이 시스템의 실시간을 책임진다node.js 와 궁합이 좋은 mongoDB 로 빠르게 구현하자

타게팅 디비

자주 변경되지 않는 정보디바이스 , 국가 , 언어 , 결제금액 , 결제횟수

빈번하게 변경되는 정보게임 데이터 : 스테이지 , 레벨 , 직업마케팅 데이터 : 이벤트 참여 , 수익화 : 결제 , 오퍼월 리워드 지급

타게팅 정보

자주 변경되지 않는 정보분석 시스템에서 매일 갱신하자

빈번하게 변경되는 정보앱에서 실시간으로 직접 받아 갱신

타게팅 정보 업데이트

npm 에 푸시를 전송하는 기능은 충분히 많은 모듈이 존재

최적화를 통해 GCM 은 1 분당 30 만건 정도 전송APNS 는 best effort 로 전송됨

푸시센더

푸시 반응 트래킹푸시를 받고 24 시간 안에 실행했다면 반응대신 1 시간 단위로 반응 수치를 보여주자

타게팅 데이터 트래킹스테이지 클리어유료 결제오퍼월에서 리워드 지급개발사에서 마음대로 커스텀 가능

액티비티 트래커

초기 시스템 구성

초기 시스템 요약총 개발기간 : 약 3 개월가장 필요한 기능 위주

타게팅 데이터 매니저푸시 이벤트 예약 / 발송발송유저 타게팅푸시 총 반응 리포트

클로즈 베타“ 클베 시작 하자마자 500 만 유저 유입 감사"

클로즈 베타

일본에서 이미 히트한 모 게임

“ 출시 전에 푸시서비스 만들어야 하는데 잘 됐네요““ 테스트해야 했는데 잘 되었네요““원하는 것을 다 해드리겠습니다”

연동 후 출시

출시 하자마자 인기무료 1 위그 뒤로 약 2 주간 1 위

출시 하자마자 바로 100 만 이상의 유저유입

서비스 폭발유저 로딩하는데 100 초

인덱싱 이슈WAS 를 아무리 투입하고 스케일 - 업해도 계속 CPU 100 퍼센트

아 이건 디비 이슈다디비 상태를 보니 CPU 100 퍼센트mms 를 보니 요청이 전부 디비 풀스캔

아 이건 인덱스 이슈다몇몇 타게팅 데이터에 인덱스를 걸자 기적과 같이 서비스가 말짱해짐

인덱싱 이슈 (cont.)

개발사에서 타게팅 데이터를 추가할 때 마다서버에서 자동으로 해당 값을 인덱싱8 개의 타게팅 데이터 == 8 개의 인덱스 추가몽고디비 인덱스 64 개 제한의 압박

처음엔 DMP 에서 프로필을 추출해 일괄 입력 했었음mongodb 는 insert 가 느림2.6 버전 락 구조상 전체 성능저하 이슈

유저가 수백만이 되자 일괄 입력이 성능상 불가능유저 로그인 시점에 DMP 에서 비동기 갱신하자

타게팅 데이터 갱신이슈

기능 개선매번 타게팅 하려니 귀찮다

실시간 유저그룹 , 타게팅 정보 관리매번 이벤트 등록하려니 귀찮다

요일 , 시간별 이벤트 관리경쟁사는 HTML 이나 이미지로 이쁘게 푸시 보내던데

HTML, 이미지 푸시 지원동일 그룹에 메시지를 다르게 보내서 성과를 측정하고 싶다

A/B 테스팅 추가푸시를 받으면 특정 앱 페이지로 이동시키고 싶다딥링킹 추가

정식 서비스마케터가 직접 푸시 캠페인을 운영하세요

출시

지스타에 맞춰 기능개선 후 출시지스타에서 최초 공개 후 폭발적인 반응“무료 1 위 게임 XX 도 쓴 그 서비스입니다“

이슈 해일

write 가 빠를 때 == 모든 데이터가 램에 올라와 있을 때사용자가 늘어나자 캐시 미스 발생콜렉션당 도큐먼트가 200 만개가 넘어가면 성능에 영향

AWS ElasticCache 적용동일한 유저그룹 요청일 경우 캐시에서 전송

몽고디비의 배신

일괄입력 , 일괄 업데이트 금지일괄처리의 휴리스틱 최대치는 1000 개

MapReduce 나 Aggregate 는 시기상조Read 는 Secondary preferred 로

Lock 관리

100여개 앱이 사용하자 바로 100GB+디스크는 1TB꽉 차면 어쩌지 ?

디스크가 꽉 차면 어쩌지 ?

몽고디비 샤딩은 컬렉션 기반오토 리밸런스는 재앙앱 추가될 때 마다 컬렉션 생성하고 수작업으로 샤딩 ;;;현실적으로 손이 많이 감

샤딩

온라인 게임 서버 증설하는 방식기존 리플리카 셋은 페더레이션 0 번 이후 1 씩 증가새로운 페더레이션 멤버가 추가되면 수작업앱별 페더레이션 맵퍼 구현

수동 페더레이션

백업은Glacier 에 저장

삭제 유저는6 개월마다 스위핑

타게팅 데이터 관리

푸시 이벤트가 많이 처리되다 보니푸시 API -> 푸시 센더로의 http 요청이 가끔 실패하는 경우가 있음SQS 를 통해 푸시 전송 요청 메시지 유실 방지푸시 센더 병렬화가 간편해짐

푸시가 계속 발송중 상태에요

대부분 고객사 자체적으로 푸시 서비스를 만들어 쓰는 상황APNS 는 큰 문제가 없으나GCM 은 register 를 누가 먼저 어떻게 하느냐에 따라 푸시 발송불가

멀티푸시가 가능하도록 구현 및 가이드 제공

우리 자체 푸시도 써야 되는데

꿀팁 : 푸시 이벤트 운영 노하우리포트를 통해 성과 최적화

전체 유저에게 지속적으로 보내면 반응이 하락최근 1 일 내 접속 유저에게만 보내면 반응이 상승점심보단 저녁에 보내는 것이 효과적

동일한 메시지를

주중보다 주말에 푸시를 더 많이 볼까 ?어느 시간대에 푸시를 보내야 할까 ?

전체 데이터 중 일부를 샘플링하여 분석

요일 / 시간대별 반응

월요일 화요일 수요일 목요일 금요일 토요일 일요일

요일별 푸시 메시지 반응

금 , 토요일에 소폭 상승이 있을 뿐요일별 차이는 크게 없음요일 / 시간별로 보면 어떨까 ?

결과

전체적인 반응이 점심 , 저녁시간에 집중되어 있음금요일 18~19 시는 최고조 불금 !월요일 점심 , 저녁 시간은 의외

재미있는 결과

맺음

개발기간 : 1 년 +앱 : 200+디바이스 : 31,400,000+진행된 캠페인 : 9,100+푸시 발송건수 : 540,000,000+

성과

마케팅 캠페인 기능 추가공지팝업 New!

마케팅 및 운영에 필요한 실시간 정보 제공방금 접속한 유저의 성향 알림최근 1 시간동안의 매출정보

실시간 정보 기준 유저 타게팅

앞으로의 과제

팔지 말고 돕자고객이 불편하면 우리 잘못애정이 있어서 쓴 소리도 하시는 것

고객이 필요한 기능은 우리의 다음 발걸음

느낀 점

DONE IS BETTER THAN PERFECT

감사합니다

WE’RE HIRING!

[email protected]