AWS를 활용하여 Daily Report 만들기Scalding, Python, AWS로 만드는 Daily Report
1
AWS를 활용하여 Daily Report 만들기
쿠키런 소개
• 5,500만 누적 다운로드
•최대 1,000만 DAU
•한국, 일본, 태국 등 10여개국 다운로드 1위
• Top10 다운로드 국가 수 38개국
업데이트필요
AWS를 활용하여 Daily Report 만들기
1. 로그 분석하기 - BREADCRUMB
3
AWS를 활용하여 Daily Report 만들기
1. 로그 전처리
4
Logstash
Amazon S3 Amazon S3 Amazon S3
Upload every
20 min.
Sort &
Compress
Daily Merge
2015-04-21T00.01.txt 2015-04-21T00.21.txt 2015-04-21T00.41.txt 2015-04-21T01.01.txt 2015-04-21T01.21.txt 2015-04-21T01.41.txt
… 2015-04-21T22.41.txt 2015-04-21T23.01.txt 2015-04-21T23.21.txt 2015-04-21T23.41.txt 2015-04-22T00.01.txt
index.json
gamelog.sz
00.01.json 00.01.txt.sz 00.21.json
00.21.txt.sz …
23.41.json 23.41.txt.sz 00.01.json
00.01.txt.sz
AWS를 활용하여 Daily Report 만들기
1. 로그 전처리
5
index.jsongamelog.sz
…}, { "key_first": “<PID> <Reversed Member Seq> <Time> <Hash>”, "key_last": “<PID> <Reversed Member Seq> <Time> <Hash>”, "offset": 0, "length": <Length> }, …
• 날짜로 분리 • Block 단위 Snappy 압축
• Splittable • Networt Latency ↓ • Snappy : CPU 사용량 ↓
• PID / MemberSeq 로 정렬 • 검색 우선순위에 따른 정렬
• gamelog를 조회하기 위한 Metadata
AWS를 활용하여 Daily Report 만들기
BREADCRUMB
1. 로그 전처리
6
Amazon S3
EMR
index.json gamelog.sz output
by
2015-04-21T00.01.txt
00.01.json 00.01.txt.sz
AWS를 활용하여 Daily Report 만들기
2. 매일매일 데이터 받아보기
7
AWS를 활용하여 Daily Report 만들기
☐ 매일 아침 전날의 게임 통계를 받아보고 싶어요! ☐ 전일 / 전주 대비 얼마나 변화했는지 알고 싶어요!
☐ 지표들의 변화 추이를 보고싶어요!
☐ 신규 유저들의 Retention을 알려주세요!
8
2. 매일매일 데이터 받아보기 - 목표
AWS를 활용하여 Daily Report 만들기
BREADCRUMB
2. 매일 아침 전날의 게임 통계를 받아보고 싶어요!
9
Amazon S3
EMR
Powered by
LogsOutput
AWS를 활용하여 Daily Report 만들기
BREADCRUMB
2. 매일 아침 전날의 게임 통계를 받아보고 싶어요!
10
Amazon S3
EMR
SES
botoPowered by
LogsOutputResult
cron
Send via E-Mail
Docker
AWS를 활용하여 Daily Report 만들기
✓ 매일 아침 전날의 게임 통계를 받아보고 싶어요!
☐전일 / 전주 대비 얼마나 변화했는지 알고 싶어요!☐ 지표들의 변화 추이를 보고싶어요!
☐ 신규 유저들의 Retention을 알려주세요!
11
2. 매일매일 데이터 받아보기 - 목표
AWS를 활용하여 Daily Report 만들기
BREADCRUMB
2. 전일/전주 대비 얼마나 변화했는지 알고 싶어요!
12
Amazon S3
EMR
SES
botoPowered by
LogsOutputResult
cron
Send via E-Mail
Docker
AWS를 활용하여 Daily Report 만들기
2. 전일/전주 대비 얼마나 변화했는지 알고 싶어요!
13
Amazon S3
EMR
SES
botoPowered by
LogsOutputResult
RDS
BREADCRUMB
SEScron
Send via E-Mail
INSERT / SELECT
Docker
AWS를 활용하여 Daily Report 만들기
2. 매일매일 데이터 받아보기 - 목표
✓ 매일 아침 전날의 게임 통계를 받아보고 싶어요!
✓ 전일 / 전주 대비 얼마나 변화했는지 알고 싶어요!
☐지표들의 변화 추이를 보고싶어요!☐ 신규 유저들의 Retention을 알려주세요!
14
AWS를 활용하여 Daily Report 만들기
Docker
2. 지표들의 변화 추이를 보고싶어요!
15
Amazon S3
EMR
SES
botoPowered by
LogsOutputResult
RDS
BREADCRUMB
SEScron
Send via E-Mail
INSERT / SELECT
AWS를 활용하여 Daily Report 만들기
2. 지표들의 변화 추이를 보고싶어요!
16
Amazon S3
EMR
SES
botoPowered by
LogsOutputResult
Send via E-Mail
RDS
INSERT / SELECT
HTTPS
Web
cron
Docker
SELECT
BREADCRUMB
AWS를 활용하여 Daily Report 만들기
2. 매일매일 데이터 받아보기 - 목표
✓ 매일 아침 전날의 게임 통계를 받아보고 싶어요!
✓ 전일 / 전주 대비 얼마나 변화했는지 알고 싶어요!
✓ 지표들의 변화 추이를 보고싶어요!
☐신규 유저들의 Retention을 알려주세요!
17
AWS를 활용하여 Daily Report 만들기
2. 신규 유저들의 Retention을 알려주세요!
18
Amazon S3
EMR
Output
BREADCRUMB
• MemberSeq • JoinDatetime
RDS
JoinDt
Logs Join Date Member 0 1 2 3 4 5
150417 123456 O O X X X O
150417 123457 O X X O O X
150418 234567 O O X X O O
150418 234568 O O X O X O
Member Join Date Login Dates123456 150417 150417
150418150422
Join Date New User 1 2 3 4 5150416 5 3 2 3 1 0150417 4 4 2 2 1150418 5 3 3 3150419 6 5 4150420 4 4
Convert to SQL
AWS를 활용하여 Daily Report 만들기
2. 신규 유저들의 Retention을 알려주세요!
19
Amazon S3
EMR
SES
botoPowered by
LogsOutputResult
Send via E-Mail
RDS
INSERT / SELECT
HTTPS
Web
cron
Docker
SELECT
BREADCRUMB
AWS를 활용하여 Daily Report 만들기
2. 신규 유저들의 Retention을 알려주세요!
20
Amazon S3
EMR
SES
botoPowered by
LogsOutputResult
View Query
Send via E-Mail
View
RDS
INSERT / SELECT
HTTPS
Web
cron
Docker
BREADCRUMB
SELECT
AWS를 활용하여 Daily Report 만들기
2. 매일매일 데이터 받아보기 - 완성!
✓매일 아침 전날의 게임 통계를 받아보고 싶어요!
✓전일 / 전주 대비 얼마나 변화했는지 알고 싶어요!
✓지표들의 변화 추이를 보고싶어요!
✓신규 유저들의 Retention을 알려주세요!
21
AWS를 활용하여 Daily Report 만들기
2. 매일매일 데이터 받아보기 - 완성
22
Amazon S3
EMR
SES
botoPowered by
LogsOutputResult
View Query
Send via E-Mail
View
RDS
INSERT / SELECT
HTTPS
Web
cron
Docker
BREADCRUMB
SELECT