목차
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 Architecture
2.2. On-ly 2.0 System 부분 별 상세 설명
3. On-ly 2.0 운영
3.1. AWS 구성
4. 산출물
2
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.02
On-ly 2.0 첫 미팅
2015.05.08
On-ly 2.0 기획
2015.06.17
On-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.02
On-ly 2.0 첫 미팅
2015.05.08
On-ly 2.0 기획
약 1개월
2015.06.17
On-ly 2.0 개발
7
1.3 On-ly 2.0 개발
1. On-ly 2.0 History
최종 Ideas
개발
[최종 Idea를 반영한 On-ly 2.0 중 일부]
2015.04.02
On-ly 2.0 첫 미팅
2015.05.08
On-ly 2.0 기획
2015.06.17
On-ly 2.0 개발
약 1개월
1. Elasticsearch 데이터 사이즈 최소화
2. Facebook 연동
3. 내 게임 책장
4. 나와 내 친구는 (나는 게임 폐인 일까?, 나를 폐
인으로 만든 게임은?, 내 친구들이 하는 게임
은?)
5. On-ly 2.0 추천하기
6. 게임 상세보기
7. (일일/주간)목표 달성 알림
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.0System 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 UUID
27a871ab-a75f-472f-a150-9f2d3e171302
(128bit Universally Unique Identifier)
appid
package 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 name
com.supercell.clashofclans
(avg. 26 bytes string)
ctimestamp 수집 시간 2015-06-24T12:09:22.940+09:00
appversoin On-ly 버전코드 44
Field Value Desc
key UID
165
(8 bytes signed integer)
appid AID
3062
(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) API
GPTInfo API 요청은, HTTP 요청으로 안드로이드 앱에서 Web API 서버로 요청하는 것을 의미
수집된 GPTLog를 기반으로 “일별 플레이 시간", “주별 플레이 시간”, “게임별 프레이 시간”, “친구의 게임 플레이 시간” 등의 GPTInfo를 추출하여 안드로이드 앱에 제공
총 17개 API 존재
2. On-ly 2.0 시스템
[GPTInfo API를 사용하여 디스플레이 된 UI 중 일부 ]
2.3.4 GPTInfo API
18
4. 산출물
a. 주니어 개발자의 On-ly 2.0 프로젝트 경험기 - 개발편
http://blog.embian.com/89
b. 주니어 개발자의 On-ly 2.0 프로젝트 경험기 - 기획편
http://blog.embian.com/87
c. On-ly 2.0 소개 문서
https://prezi.com/z5dymyp27jfj/on-ly/