SlideShare a Scribd company logo
On-ly 2.0 Project 리뷰
(주)엠비안 양경모,이소은
2015.07.31
soeun@embian.com
mo@embian.com
목차
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
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.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. (일일/주간)목표 달성 알림
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.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
15
3. On-ly 2.0 운영
3.1 AWS 구성
16
AWS EC2(Amazon Elastic Compute Cloud)
3. On-ly 2.0 운영
AWS LVS
GPTInfo API
Elsasticsearch
Instance Type: t2.medium
Storage Size : 16GiB
Only-01
GPTInfo API
Elsasticsearch
Instance Type: t2.medium
Storage Size : 16GiB
Only-02
GPTLog Collector
Elsasticsearch
Instance Type: t2.medium
Storage Size : 16GiB
Only-03
Redis
Elasticsearch Cluster
API SERVER QUEUE SERVER
17
4. 산출물
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/
Thank you
19

More Related Content

What's hot

11. Application - Phoenix
11. Application - Phoenix11. Application - Phoenix
11. Application - Phoenix
merry7
 
CUBRIDInside_5th_CUBRID_Migration Process_DHLee
CUBRIDInside_5th_CUBRID_Migration Process_DHLeeCUBRIDInside_5th_CUBRID_Migration Process_DHLee
CUBRIDInside_5th_CUBRID_Migration Process_DHLee
Laura Oh
 
서비스 모니터링 구현 사례 공유 - Realtime log monitoring platform-PMon을 ...
서비스 모니터링 구현 사례 공유 - Realtime log monitoring platform-PMon을 ...서비스 모니터링 구현 사례 공유 - Realtime log monitoring platform-PMon을 ...
서비스 모니터링 구현 사례 공유 - Realtime log monitoring platform-PMon을 ...
Jemin Huh
 
[NDC 2018] Spark, Flintrock, Airflow 로 구현하는 탄력적이고 유연한 데이터 분산처리 자동화 인프라 구축
[NDC 2018] Spark, Flintrock, Airflow 로 구현하는 탄력적이고 유연한 데이터 분산처리 자동화 인프라 구축[NDC 2018] Spark, Flintrock, Airflow 로 구현하는 탄력적이고 유연한 데이터 분산처리 자동화 인프라 구축
[NDC 2018] Spark, Flintrock, Airflow 로 구현하는 탄력적이고 유연한 데이터 분산처리 자동화 인프라 구축
Juhong Park
 
19. Application - Spark Streaming 1
19. Application - Spark Streaming 119. Application - Spark Streaming 1
19. Application - Spark Streaming 1
merry7
 
data platform on kubernetes
data platform on kubernetesdata platform on kubernetes
data platform on kubernetes
창언 정
 
overview of spring4
overview of spring4overview of spring4
overview of spring4
Arawn Park
 
[Pgday.Seoul 2017] 1. PostGIS의 사례로 본 PostgreSQL 확장 - 장병진
[Pgday.Seoul 2017] 1. PostGIS의 사례로 본 PostgreSQL 확장 - 장병진[Pgday.Seoul 2017] 1. PostGIS의 사례로 본 PostgreSQL 확장 - 장병진
[Pgday.Seoul 2017] 1. PostGIS의 사례로 본 PostgreSQL 확장 - 장병진
PgDay.Seoul
 
[오픈소스컨설팅]MySQL Monitoring
[오픈소스컨설팅]MySQL Monitoring[오픈소스컨설팅]MySQL Monitoring
[오픈소스컨설팅]MySQL Monitoring
Ji-Woong Choi
 

What's hot (9)

11. Application - Phoenix
11. Application - Phoenix11. Application - Phoenix
11. Application - Phoenix
 
CUBRIDInside_5th_CUBRID_Migration Process_DHLee
CUBRIDInside_5th_CUBRID_Migration Process_DHLeeCUBRIDInside_5th_CUBRID_Migration Process_DHLee
CUBRIDInside_5th_CUBRID_Migration Process_DHLee
 
서비스 모니터링 구현 사례 공유 - Realtime log monitoring platform-PMon을 ...
서비스 모니터링 구현 사례 공유 - Realtime log monitoring platform-PMon을 ...서비스 모니터링 구현 사례 공유 - Realtime log monitoring platform-PMon을 ...
서비스 모니터링 구현 사례 공유 - Realtime log monitoring platform-PMon을 ...
 
[NDC 2018] Spark, Flintrock, Airflow 로 구현하는 탄력적이고 유연한 데이터 분산처리 자동화 인프라 구축
[NDC 2018] Spark, Flintrock, Airflow 로 구현하는 탄력적이고 유연한 데이터 분산처리 자동화 인프라 구축[NDC 2018] Spark, Flintrock, Airflow 로 구현하는 탄력적이고 유연한 데이터 분산처리 자동화 인프라 구축
[NDC 2018] Spark, Flintrock, Airflow 로 구현하는 탄력적이고 유연한 데이터 분산처리 자동화 인프라 구축
 
19. Application - Spark Streaming 1
19. Application - Spark Streaming 119. Application - Spark Streaming 1
19. Application - Spark Streaming 1
 
data platform on kubernetes
data platform on kubernetesdata platform on kubernetes
data platform on kubernetes
 
overview of spring4
overview of spring4overview of spring4
overview of spring4
 
[Pgday.Seoul 2017] 1. PostGIS의 사례로 본 PostgreSQL 확장 - 장병진
[Pgday.Seoul 2017] 1. PostGIS의 사례로 본 PostgreSQL 확장 - 장병진[Pgday.Seoul 2017] 1. PostGIS의 사례로 본 PostgreSQL 확장 - 장병진
[Pgday.Seoul 2017] 1. PostGIS의 사례로 본 PostgreSQL 확장 - 장병진
 
[오픈소스컨설팅]MySQL Monitoring
[오픈소스컨설팅]MySQL Monitoring[오픈소스컨설팅]MySQL Monitoring
[오픈소스컨설팅]MySQL Monitoring
 

Similar to On ly 2.0 project Review

(141031) #fitalk plaso 슈퍼 타임라인 분석 도구 활용 방안
(141031) #fitalk   plaso 슈퍼 타임라인 분석 도구 활용 방안(141031) #fitalk   plaso 슈퍼 타임라인 분석 도구 활용 방안
(141031) #fitalk plaso 슈퍼 타임라인 분석 도구 활용 방안
INSIGHT FORENSIC
 
라즈베리파이로 슬랙 봇 개발하기
라즈베리파이로 슬랙 봇 개발하기라즈베리파이로 슬랙 봇 개발하기
라즈베리파이로 슬랙 봇 개발하기
YunSeop Song
 
Windosw via c/c++ 스터디5장
Windosw via c/c++ 스터디5장Windosw via c/c++ 스터디5장
Windosw via c/c++ 스터디5장
HolyTak
 
[2018] NHN 모니터링의 현재와 미래 for 인프라 엔지니어
[2018] NHN 모니터링의 현재와 미래 for 인프라 엔지니어[2018] NHN 모니터링의 현재와 미래 for 인프라 엔지니어
[2018] NHN 모니터링의 현재와 미래 for 인프라 엔지니어
NHN FORWARD
 
광안 1반 2팀 엠퀴즈 최종 발표 자료.pptx
광안 1반 2팀 엠퀴즈 최종 발표 자료.pptx광안 1반 2팀 엠퀴즈 최종 발표 자료.pptx
광안 1반 2팀 엠퀴즈 최종 발표 자료.pptx
YeongKiKim1
 
(130511) #fitalk utilization of ioc, ioaf and sig base
(130511) #fitalk   utilization of ioc, ioaf and sig base(130511) #fitalk   utilization of ioc, ioaf and sig base
(130511) #fitalk utilization of ioc, ioaf and sig base
INSIGHT FORENSIC
 
클라우드 환경에서 알아야할 성능 이야기
클라우드 환경에서 알아야할 성능 이야기클라우드 환경에서 알아야할 성능 이야기
클라우드 환경에서 알아야할 성능 이야기
YoungSu Son
 
TestExplorer 소개 - Android application GUI testing tool
TestExplorer 소개 - Android application GUI testing toolTestExplorer 소개 - Android application GUI testing tool
TestExplorer 소개 - Android application GUI testing tool
hyunae lee
 
TestExplorer 소개 - Android application GUI testing tool
TestExplorer 소개 - Android application GUI testing toolTestExplorer 소개 - Android application GUI testing tool
TestExplorer 소개 - Android application GUI testing tool
hyunae lee
 
클라우드 기반 Unity 게임 서버 구축, 60분이면 충분하다
클라우드 기반 Unity 게임 서버 구축, 60분이면 충분하다클라우드 기반 Unity 게임 서버 구축, 60분이면 충분하다
클라우드 기반 Unity 게임 서버 구축, 60분이면 충분하다
Dae Kim
 
젠킨스 설치 및 설정
젠킨스 설치 및 설정젠킨스 설치 및 설정
젠킨스 설치 및 설정
중선 곽
 
주니어 개발자의 서버 로그 관리 개선기
주니어 개발자의 서버 로그 관리 개선기주니어 개발자의 서버 로그 관리 개선기
주니어 개발자의 서버 로그 관리 개선기
Yeonhee Kim
 
Opensource apm scouter in practice
Opensource apm scouter in practiceOpensource apm scouter in practice
Opensource apm scouter in practice
donghoonlee18659041
 
Opensource apm scouter in practice
Opensource apm scouter in practiceOpensource apm scouter in practice
Opensource apm scouter in practice
DomainDriven DomainDriven
 
[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?
[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?
[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?
주식회사 내일비
 
[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?
[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?
[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?
Sang-ho Choi
 
클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기
클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기
클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기
YoungSu Son
 
201412 i sign_plus_sso_감사_시온
201412 i sign_plus_sso_감사_시온201412 i sign_plus_sso_감사_시온
201412 i sign_plus_sso_감사_시온
시온시큐리티
 
Android Native Module 안정적으로 개발하기
Android Native Module 안정적으로 개발하기Android Native Module 안정적으로 개발하기
Android Native Module 안정적으로 개발하기
hanbeom Park
 
Opensource APM SCOUTER in practice
Opensource APM SCOUTER in practiceOpensource APM SCOUTER in practice
Opensource APM SCOUTER in practice
GunHee Lee
 

Similar to On ly 2.0 project Review (20)

(141031) #fitalk plaso 슈퍼 타임라인 분석 도구 활용 방안
(141031) #fitalk   plaso 슈퍼 타임라인 분석 도구 활용 방안(141031) #fitalk   plaso 슈퍼 타임라인 분석 도구 활용 방안
(141031) #fitalk plaso 슈퍼 타임라인 분석 도구 활용 방안
 
라즈베리파이로 슬랙 봇 개발하기
라즈베리파이로 슬랙 봇 개발하기라즈베리파이로 슬랙 봇 개발하기
라즈베리파이로 슬랙 봇 개발하기
 
Windosw via c/c++ 스터디5장
Windosw via c/c++ 스터디5장Windosw via c/c++ 스터디5장
Windosw via c/c++ 스터디5장
 
[2018] NHN 모니터링의 현재와 미래 for 인프라 엔지니어
[2018] NHN 모니터링의 현재와 미래 for 인프라 엔지니어[2018] NHN 모니터링의 현재와 미래 for 인프라 엔지니어
[2018] NHN 모니터링의 현재와 미래 for 인프라 엔지니어
 
광안 1반 2팀 엠퀴즈 최종 발표 자료.pptx
광안 1반 2팀 엠퀴즈 최종 발표 자료.pptx광안 1반 2팀 엠퀴즈 최종 발표 자료.pptx
광안 1반 2팀 엠퀴즈 최종 발표 자료.pptx
 
(130511) #fitalk utilization of ioc, ioaf and sig base
(130511) #fitalk   utilization of ioc, ioaf and sig base(130511) #fitalk   utilization of ioc, ioaf and sig base
(130511) #fitalk utilization of ioc, ioaf and sig base
 
클라우드 환경에서 알아야할 성능 이야기
클라우드 환경에서 알아야할 성능 이야기클라우드 환경에서 알아야할 성능 이야기
클라우드 환경에서 알아야할 성능 이야기
 
TestExplorer 소개 - Android application GUI testing tool
TestExplorer 소개 - Android application GUI testing toolTestExplorer 소개 - Android application GUI testing tool
TestExplorer 소개 - Android application GUI testing tool
 
TestExplorer 소개 - Android application GUI testing tool
TestExplorer 소개 - Android application GUI testing toolTestExplorer 소개 - Android application GUI testing tool
TestExplorer 소개 - Android application GUI testing tool
 
클라우드 기반 Unity 게임 서버 구축, 60분이면 충분하다
클라우드 기반 Unity 게임 서버 구축, 60분이면 충분하다클라우드 기반 Unity 게임 서버 구축, 60분이면 충분하다
클라우드 기반 Unity 게임 서버 구축, 60분이면 충분하다
 
젠킨스 설치 및 설정
젠킨스 설치 및 설정젠킨스 설치 및 설정
젠킨스 설치 및 설정
 
주니어 개발자의 서버 로그 관리 개선기
주니어 개발자의 서버 로그 관리 개선기주니어 개발자의 서버 로그 관리 개선기
주니어 개발자의 서버 로그 관리 개선기
 
Opensource apm scouter in practice
Opensource apm scouter in practiceOpensource apm scouter in practice
Opensource apm scouter in practice
 
Opensource apm scouter in practice
Opensource apm scouter in practiceOpensource apm scouter in practice
Opensource apm scouter in practice
 
[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?
[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?
[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?
 
[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?
[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?
[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?
 
클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기
클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기
클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기
 
201412 i sign_plus_sso_감사_시온
201412 i sign_plus_sso_감사_시온201412 i sign_plus_sso_감사_시온
201412 i sign_plus_sso_감사_시온
 
Android Native Module 안정적으로 개발하기
Android Native Module 안정적으로 개발하기Android Native Module 안정적으로 개발하기
Android Native Module 안정적으로 개발하기
 
Opensource APM SCOUTER in practice
Opensource APM SCOUTER in practiceOpensource APM SCOUTER in practice
Opensource APM SCOUTER in practice
 

On ly 2.0 project Review

  • 1. On-ly 2.0 Project 리뷰 (주)엠비안 양경모,이소은 2015.07.31 soeun@embian.com mo@embian.com
  • 2. 목차 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
  • 3. 3 0. On-ly 2.0이란? On-ly 소개 자료 https://prezi.com/z5dymyp27jfj/on-ly/
  • 4. 4 1. On-ly 2.0 History
  • 5. 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. 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. 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. (일일/주간)목표 달성 알림
  • 8. 8 2. On-ly 2.0 시스템
  • 9. 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]
  • 10. 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 안드로이드 앱
  • 11. 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. 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
  • 13. - 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"}
  • 14. 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
  • 15. 15 3. On-ly 2.0 운영
  • 16. 3.1 AWS 구성 16 AWS EC2(Amazon Elastic Compute Cloud) 3. On-ly 2.0 운영 AWS LVS GPTInfo API Elsasticsearch Instance Type: t2.medium Storage Size : 16GiB Only-01 GPTInfo API Elsasticsearch Instance Type: t2.medium Storage Size : 16GiB Only-02 GPTLog Collector Elsasticsearch Instance Type: t2.medium Storage Size : 16GiB Only-03 Redis Elasticsearch Cluster API SERVER QUEUE SERVER
  • 18. 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/