Download pdf - On ly 2.0 project Review

Transcript

On-ly 2.0 Project 리뷰(주)엠비안 양경모,이소은

2015.07.31

[email protected]

[email protected]

목차 0. On-ly 2.0 이란?1. On-ly 2.0 History

1.1. On-ly 2.0 첫 미팅1.2. On-ly 2.0 기획1.3. On-ly 2.0 개발

2. On-ly 2.0 시스템 2.1. On-ly 2.0 System Architecture2.2. On-ly 2.0 System 부분 별 상세 설명

3. On-ly 2.0 운영3.1. AWS 구성

4. 산출물

2

3

0. On-ly 2.0이란?

On-ly 소개 자료https://prezi.com/z5dymyp27jfj/on-ly/

4

1. On-ly 2.0 History

1.1 On-ly 2.0 첫 미팅

5

1. On-ly 2.0 History

On-ly 2.0 목표 설정 : On-ly 사용자 수를 늘리자. On-ly 2.0 아이디어 토의 후 필터링 작업

당시 제안 되었던 내용a. 친구들과 데이터를 공유하자b. 시간 달성시 알람을 주자c. 게임 추천을 해주자 d. 게임 별 랭킹, 게임 순위를 보여주자.e. 공짜 item을 획득하게 해주자.

.

.

. 총 17개의 Idea

[On-ly 2.0 첫 미팅 회의 자료 중 일부]

2015.04.02On-ly 2.0 첫 미팅

2015.05.08On-ly 2.0 기획

2015.06.17On-ly 2.0 개발

6

1.2 On-ly 2.0 기획 1. On-ly 2.0 History

1. Elasticsearch 데이터 사이즈 최소화2. Facebook 연동3. 내 게임 책장4. 나와 내 친구는 (나는 게임 폐인 일까?, 나를 폐

인으로 만든 게임은?, 내 친구들이 하는 게임은?)

5. On-ly 2.0 추천하기6. 게임 상세보기7. (일일/주간)목표 달성 알림

최종 Ideas

기획

[On-ly 2.0 기획 안 중 일부]On-ly 2.0 기획안 더 보기 http://www.slideshare.net/embian/on-ly2150617083348lva1app6891

2015.04.02On-ly 2.0 첫 미팅

2015.05.08On-ly 2.0 기획

약 1개월

2015.06.17On-ly 2.0 개발

7

1.3 On-ly 2.0 개발 1. On-ly 2.0 History

최종 Ideas

개발

[최종 Idea를 반영한 On-ly 2.0 중 일부]

2015.04.02On-ly 2.0 첫 미팅

2015.05.08On-ly 2.0 기획

2015.06.17On-ly 2.0 개발

약 1개월

1. Elasticsearch 데이터 사이즈 최소화2. Facebook 연동3. 내 게임 책장4. 나와 내 친구는 (나는 게임 폐인 일까?, 나를 폐

인으로 만든 게임은?, 내 친구들이 하는 게임은?)

5. On-ly 2.0 추천하기6. 게임 상세보기7. (일일/주간)목표 달성 알림

8

2. On-ly 2.0 시스템

9

2.1 On-ly 2.0 System Architecture 2. On-ly 2.0 시스템 GPTLog(Game Play Time Log): 안드로이드에서 수집되는 로그

GPTInfo(Game Play Time Info): API에서 제공하는 정보(데이터)

System Architecture는 변하지 않았지만 기능이 추가 됨

기능 추가1. Elasticsearch 데이터 사이즈 최

소화

2. Facebook 연동3. 내 게임 책장4. 나와 내 친구는 5. On-ly 2.0 추천하기6. 게임 상세보기7. (일일/주간)목표 달성 알림

[On-ly 1.0 System Architecture]

[On-ly 2.0 System Architecture]

a. Agent

- GPTLog(Game Play Time Log) 1분 마다 수집 , 5분마다 5건의 Log를 GPTLog Collector로 전송

[수집 되는 Log 정보 ]ex)

10

2. On-ly 2.0 시스템

{"key":"27a871ab-a75f-472f-a150-9f2d3e171302","appid":"com.supercell.clashofclans","ctimestamp":"2015-06-24T12:09:22.940+09:00","appversion":"44"}

2.3 On-ly 2.0 부분 별 상세 설명

Field Value Desc

key UUID27a871ab-a75f-472f-a150-9f2d3e171302

(128bit Universally Unique Identifier)

appidpackage name com.supercell.clashofclans

ctimestamp 수집 시간 2015-06-24T12:09:22.940+09:00

appversoin On-ly 버전코드 44

2.3.1 On-ly 2.0 안드로이드 앱

a. MQTT(formely MQ Telementry Transport)- 라이트 메시징 프로토콜 - On-ly 시스템에서 역할은 GPTLog 수집

b. GPT(Game Play Time)Log Indexer - GPTLog를 데이터 사이즈 최소화 한 후 Elasticsearch에 기록

c. PlayStoreCrawler- Google Play Store에서 게임 정보 수집 - Redis에 저장된 unknown인 데이터를 Google Play Store에서 정보를 조회하여 , Redis에 등록 및 Elasticsearch에 업데이트 11

2. On-ly 2.0 시스템

2.3 On-ly 2.0 부분 별 상세 설명 2.3.2 GPTLog Collector

Field Value Desc

key UUID 27a871ab-a75f-472f-a150-9f2d3e171302(36 bytes string)

appid package namecom.supercell.clashofclans

(avg. 26 bytes string)

ctimestamp 수집 시간 2015-06-24T12:09:22.940+09:00

appversoin On-ly 버전코드 44

Field Value Desc

key UID165

(8 bytes signed integer)

appid AID3062

(8 bytes signed integer)

@timestamp 수집 시간 2015-06-24T12:09:22.940+09:00

doctype category game

appversoin On-ly 버전코드 44

[GPTLOG 데이터 사이즈 최소화 하기 전 ][GPTLOG 데이터 사이즈 최소화 한 후 ]

{"key":"27a871ab-a75f-472f-a150-9f2d3e171302","appid":"com.supercell.clashofclans","ctimestamp":"2015-06-24T12:09:22.940+09:00","appversion":"44"}

12

2. On-ly 2.0 시스템

a. Redis

[Redis 데이터 구조도]

- On-ly 1.0에서 저장하는 역할을 보다 빠르게 데이터를 가져 오는 것(Cache)이 필요했고 심플하고 사용하기 편한 Redis를 사용하게 됨. - Redis에서는 수집 된 앱 정보, 사용자 정보 관리

Prefix Key Value Type Value Desc

app

appid Strings 64bit signed Integer ID (AID)

AID Hashes 게임 정보(id, name, icon url, desc)

aid_incr Integer AID Autoincrement

user

UUID Strings 64bit signed Integer ID (UID)

UID Hashes 사용자 정보(key, fid, week, daily, gcm, etc..)

FID Strings 64bit signed Integer ID (UID)

uid_incr Integer UID Autoincrement

- app_set Sets Set of appid

- unknown_set Sets Set of appid

[Redis 데이터 구조 표]

On-ly 2.0에서 새로 추가

2.3 On-ly 2.0 부분 별 상세 설명 2.3.3 Storage

com.progimax.shotgun.free8e9ec614-403b-4c6f-ba86-191519dd8a8c

- On-ly 시스템에서 쌓이는 로그는 거의 Search가 대부분이기 때문에 가장 성능 좋게 search할 수 있는 Elasticsearch 사용- GPTInfo API에서 검색 - GPTLog Collector에서 데이터사이즈 최소화 된 GPTLog를 저장

13

2. On-ly 2.0 시스템

Field Value Desc

_index index name only-YYYY.mm

_type types logs

_id index id

_score score

@version index version

key UID 165 (64bit signed integer)

appid AID 3062 (64bit signed integer)

@timestamp 수집 시간 2015-06-24T12:09:22.940+09:00

doctype category unknown, game, sns, app

appversoin On-ly 버전코드 44

Elasticsearch index과정에서 생성

[Elastcisearch에 기록되는 GPTLog]

2.3 On-ly 2.0 부분 별 상세 설명 2.3.3 Storage

b.Elasticsearch

{"key":"165", "appid":"3062", "@timestamp":"2015-06-24T12:09:22.940+09:00", "doctype":"unknown", "appversion":"44"}

2.3 On-ly 2.0 부분 별 상세 설명

14

GPTInfo(Game Play Time Info) APIGPTInfo API 요청은 , HTTP 요청으로 안드로이드 앱에서 Web API 서버로 요청하는 것을 의미수집된 GPTLog를 기반으로 “일별 플레이 시간", “주별 플레이 시간”, “게임별 프레이 시간”, “친구의 게임 플레이 시간” 등의 GPTInfo를 추출하여 안드로이드 앱에 제공총 17개 API 존재

2. On-ly 2.0 시스템

[GPTInfo API를 사용하여 디스플레이 된 UI 중 일부 ]

2.3.4 GPTInfo API

15

3. On-ly 2.0 운영

3.1 AWS 구성

16AWS EC2(Amazon Elastic Compute Cloud)

3. On-ly 2.0 운영

AWS LVS

GPTInfo API

Elsasticsearch

Instance Type: t2.mediumStorage Size : 16GiB

Only-01

GPTInfo API

Elsasticsearch

Instance Type: t2.mediumStorage Size : 16GiB

Only-02

GPTLog Collector

Elsasticsearch

Instance Type: t2.mediumStorage Size : 16GiB

Only-03

Redis Elasticsearch Cluster

API SERVER QUEUE SERVER

17

4. 산출물

18

4. 산출물

a. 주니어 개발자의 On-ly 2.0 프로젝트 경험기 - 개발편 http://blog.embian.com/89b. 주니어 개발자의 On-ly 2.0 프로젝트 경험기 - 기획편http://blog.embian.com/87c. On-ly 2.0 소개 문서https://prezi.com/z5dymyp27jfj/on-ly/

Thank you

19


Recommended