SlideShare a Scribd company logo
AWS를 활용하여 Daily Report 만들기
로그 수집부터 자동화된 분석까지
1
서버개발팀
정창제
changje@devsisters.com
AWS를 활용하여 Daily Report 만들기 2
쿠키런 소개
• 7,000만 누적 다운로드
• 최대 1,000만 DAU
• 한국, 일본, 태국 등 10여개국 다운로드 1위
• 38개국 Top10 다운로드
AWS를 활용하여 Daily Report 만들기 3
200~400GB
100TB
쿠키런의 하루 로그는
1년이면
차곡차곡 잘 쌓아야 한다
AWS를 활용하여 Daily Report 만들기
0. 로그 수집
4
Amazon S3
Game Servers
Redis
Elastic Search
Kibana
.
.
.
Logstash
.
.
.
AWS를 활용하여 Daily Report 만들기 5
차곡차곡 쌓여가는 로그 하지만 분석할 방법이 없다..?
200~400GB
100TB
쿠키런의 하루 로그는
1년이면
차곡차곡 잘 쌓아야 한다
AWS를 활용하여 Daily Report 만들기 6
최적의 분석시스템을 만들자!
차곡차곡 쌓여가는 로그 하지만 분석할 방법이 없다..?
200~400GB
100TB
쿠키런의 하루 로그는
1년이면
차곡차곡 잘 쌓아야 한다
AWS를 활용하여 Daily Report 만들기
1. 쉽고 빠르게 로그 분석하기
7
BREADCRUMB
AWS를 활용하여 Daily Report 만들기
1. 로그분석시스템 요구조건
- 하루 전 로그와 1년 전 로그를 동일하게!

→ 날짜별로 로그파일을 분리
8
AWS를 활용하여 Daily Report 만들기
- 하루 전 로그와 1년 전 로그를 동일하게!

→ 날짜별로 로그파일을 분리

- 특정 활동 및 특정 유저의 로그를 빠르게!

→ Action과 MemberID로 Index
9
1. 로그분석시스템 요구조건
AWS를 활용하여 Daily Report 만들기
1. 로그분석시스템 요구조건
- 하루 전 로그와 1년 전 로그를 동일하게!

→ 날짜별로 로그파일을 분리

- 특정 활동 및 특정 유저의 로그를 빠르게!

→ Action과 MemberID로 Index 

- 로컬 개발환경에서도 빠르게!

→ 유저 샘플링을 지원하자!
10
AWS를 활용하여 Daily Report 만들기
1. 로그 전처리
11
Logstash
Amazon S3
20분마다
업로드
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
AWS를 활용하여 Daily Report 만들기
1. 로그 전처리
12
Logstash
Amazon S3 Amazon S3
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
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
20분마다
업로드
정렬과
압축
AWS를 활용하여 Daily Report 만들기
1. 로그 전처리
13
Logstash
Amazon S3 Amazon S3 Amazon S3
일일
병합
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
정렬과
압축
20분마다
업로드
AWS를 활용하여 Daily Report 만들기
1. 로그 전처리
14
gamelog.sz
• 날짜로 분리
• Action, MemberID로 정렬
• 특정 활동 및 특정 유저의 로그를 빠르게 찾을 수 있도록
• 로컬 개발에서 샘플링하여 사용할 수 있도록 MemberID를 뒤집은 값을 키로 사용
• Block 단위 Snappy 압축
• Networt Latency ↓
• Snappy : CPU 사용량 ↓
• Splittable (Snappy Framing Format)
AWS를 활용하여 Daily Report 만들기
1. 로그 전처리
15
…},
{
"key_first": “<Action> <Reversed MemberID> <Time> <Hash>”,
"key_last": “<Action> <Reversed MemberID> <Time> <Hash>”,
"offset": 0,
"length": <Length>
}, …
• gamelog를 조회하기 위한 Metadata
index.json
AWS를 활용하여 Daily Report 만들기
1. 로그 전처리
16
[{
"key_first": “member/connect 00001”,
"key_last": “member/connect 000024”,
"offset": 0,
“length": 31243
}, {
"key_first": “member/connect 000025”,
"key_last": “member/disconnect 0003”,
"offset": 31244,
"length": 42347
}, {
"key_first": “member/disconnect 00031”,
"key_last": “game/startGame 00012”,
"offset": 73591,
"length": 49323
}]
index.jsongamelog.sz
member/connect
member/connect
member/connect
member/disconnect
game/startGame
member/disconnect
10000
240000
250000
3000
13000
00012
AWS를 활용하여 Daily Report 만들기
BREADCRUMB
1. 로그 분석
17
Amazon S3
EMR
index.json gamelog.sz output
by
2015-04-21T0
0.01.txt
00.01.json
00.01.txt.sz
https://github.com/twitter/scalding
AWS를 활용하여 Daily Report 만들기
1. 예제 - ActiveUser
18https://github.com/twitter/scalding
class ActiveUserCount(args : Args) extends Job(args) {

CookierunLog("member/connect", args("sampling"),

args("timeStart"), args("timeEnd"),

Tuple1("memberSeq"))

.groupBy(‘memberSeq){ _.take(1) }

.groupAll{ _.size }

.write(Csv(args("output")))

}
1/1000 샘플링시 1주일에 대해 로컬에서 15초
AWS를 활용하여 Daily Report 만들기 19
분석 시스템도 있는데...
로그도 쌓이고...
요청이 있을때만 비정기적으로 추출하는 통계...
AWS를 활용하여 Daily Report 만들기 20
분석 시스템도 있는데...
로그도 쌓이고...
요청이 있을때만 비정기적으로 추출하는 통계...
정기적인 통계가 필요하다!
AWS를 활용하여 Daily Report 만들기
2. 매일매일 데이터 받아보기
21
AWS를 활용하여 Daily Report 만들기
☐ 매일 아침 게임 통계를 받아보고 싶어요! 

☐ 지표들의 변화 추이를 보고 싶어요!

☐ 쿠키별 보유량이 알고 싶어요!
22
2. 매일매일 데이터 받아보기 - 목표
AWS를 활용하여 Daily Report 만들기
BREADCRUMB
2-1. 매일 아침 게임 통계를 받아보고 싶어요!
23
Amazon S3
EMR
Powered by
LogsOutput
AWS를 활용하여 Daily Report 만들기
BREADCRUMB
2-1. 매일 아침 게임 통계를 받아보고 싶어요!
24
Amazon S3
EMR
SES
boto
Powered by
LogsOutput
Result
cron
Send via E-Mail
Docker
RDS
INSERT / SELECT
AWS를 활용하여 Daily Report 만들기
2-1. 매일 아침 게임 통계를 받아보고 싶어요!
25
AWS를 활용하여 Daily Report 만들기
2-1. 매일 아침 게임 통계를 받아보고 싶어요!
26
Upload JAR
S3
JAR
BREADCRUMB
AWS를 활용하여 Daily Report 만들기
2-1. 매일 아침 게임 통계를 받아보고 싶어요!
27
EMR
run_jobflow
BREADCRUMB
S3
JAR
AWS를 활용하여 Daily Report 만들기
2-1. 매일 아침 게임 통계를 받아보고 싶어요!
28
EMR
BREADCRUMB
BREADCRUMB
S3
add_jobflow_steps
Logs Output
JAR
AWS를 활용하여 Daily Report 만들기
BREADCRUMB
2-1. 매일 아침 게임 통계를 받아보고 싶어요!
29
Amazon S3
EMR
SES
boto
Powered by
LogsOutput
Result
cron
Send via E-Mail
Docker
RDS
INSERT / SELECT
AWS를 활용하여 Daily Report 만들기
2-1. 매일 아침 게임 통계를 받아보고 싶어요!
30
AWS를 활용하여 Daily Report 만들기
EMR
- 하루 한번 한시간정도 필요한 클러스터를 운영하기엔 최고
- Spot Instance로 사용하면 비용도 굉장히 저렴하다!
- S3에 Direct Access 가능 HDFS에 로그를 업로드할 필요가 없다
31
Amazon S3
- 로그를 담아두기 위한 최고의 저장소
- 신뢰할 수 있는 스토리지
- Offset-Range를 지원하여 로그에서 필요한 부분만 가져오는 것도 가능
AWS를 활용하여 Daily Report 만들기
2. 매일매일 데이터 받아보기 - 목표
✓ 매일 아침 게임 통계를 받아보고 싶어요! 

지표들의 변화 추이를 보고싶어요!

☐ 쿠키별 보유량이 알고 싶어요!
32
AWS를 활용하여 Daily Report 만들기
2-2. 지표들의 변화 추이를 보고싶어요!
33
Amazon S3
EMR
SES
boto
Powered by
LogsOutput
Result
Send via E-Mail
RDS
INSERT / SELECT
HTTPS
Web
cron
Docker
SELECT
BREADCRUMB
AWS를 활용하여 Daily Report 만들기
2-2. 지표들의 변화 추이를 보고싶어요!
34
AWS를 활용하여 Daily Report 만들기
2. 매일매일 데이터 받아보기 - 목표
✓ 매일 아침 게임 통계를 받아보고 싶어요! 

✓ 지표들의 변화 추이를 보고 싶어요!

쿠키 보유량이 알고 싶어요!
35
AWS를 활용하여 Daily Report 만들기 36
2-3. 유저의 쿠키 보유량이 알고 싶어요!
쿠키 보유량 = 쿠키의 총 판매량
AWS를 활용하여 Daily Report 만들기 37
2-3. 유저의 쿠키 보유량이 알고 싶어요!
쿠키 보유량 = 쿠키의 총 판매량
출시 이후 모든 판매로그를 분석..?
AWS를 활용하여 Daily Report 만들기 38
2-3. 유저의 쿠키 보유량이 알고 싶어요!
쿠키 보유량 = 쿠키의 총 판매량
출시 이후 모든 판매로그를 분석..?
AWS를 활용하여 Daily Report 만들기 39
2-3. 유저의 쿠키 보유량이 알고 싶어요!
View를 활용하자!
유저데이터를 담고 있는
의
AWS를 활용하여 Daily Report 만들기 40
View
2-3. 유저의 쿠키 보유량이 알고 싶어요!
Documents로부터 MapReduce를 통해 원하는 형태의 데이터로 변환하는 기능
Mongo의 Aggregate, MapReduce와 비슷
AWS를 활용하여 Daily Report 만들기 41
View
2-3. 유저의 쿠키 보유량이 알고 싶어요!
유저 정보에 들어있는 쿠키 정보를 쿠키별 카운트로 변환!
MapReduce[ 용감한 쿠키, 천사맛 쿠키, 악마맛 쿠키 ]
용감한 쿠키 : 3
천사맛 쿠키 : 2
악마맛 쿠키 : 2
공주맛 쿠키 : 1
[ 용감한 쿠키, 좀비맛 쿠키, 천사맛 쿠키 ]
[ 용감한 쿠키, 공주맛 쿠키, 악마맛 쿠키 ]
Documents로부터 MapReduce를 통해 원하는 형태의 데이터로 변환하는 기능
Mongo의 Aggregate, MapReduce와 비슷
AWS를 활용하여 Daily Report 만들기
2. 매일매일 데이터 받아보기 - 완성!
42
Amazon S3
EMR
SES
boto
Powered by
LogsOutput
Result
View Query
Send via E-Mail
View
RDS
INSERT / SELECT
HTTPS
Web
cron
Docker
BREADCRUMB
SELECT
AWS를 활용하여 Daily Report 만들기
2. 매일매일 데이터 받아보기 - 완성!
✓ 매일 아침 전날의 게임 통계를 받아보고 싶어요! 

✓ 지표들의 변화 추이를 보고싶어요!

✓ 쿠키별 보유량이 알고 싶어요!
43
AWS를 활용하여 Daily Report 만들기
3. 성과 - 로그분석시스템 Breadcrumb
✓ 분석에 필요한 로그만을 가져오는 분석 시스템

✓ Scalding 기반으로 쉽고 빠른 개발

✓ 로컬에서 샘플링된 유저집합으로 개발한 이후 동일하게 전체 데이터에 적용

✓ 현재까지는 당일의 데이터는 조회가 불가

→ 당일 로그의 분석도 가능한 시스템 개발 완료
44
AWS를 활용하여 Daily Report 만들기
3. 성과 - Daily Report Pancake
✓ 하루에 한번 자동화된 로그분석과 보고서

✓ 일회성 분석으로 작성한 코드도 곧바로 정기분석에 추가

✓ 여러 데이터 소스로부터 다양한 분석

✓ 게임 성과 분석 뿐 아니라 어뷰징 분석도 정기적으로 수행

✓ Breadcrumb의 실시간 로그분석에 대응한 버전을 준비 중
45
AWS를 활용하여 Daily Report 만들기 46
http://www.devsisters.com/jobs/
우리는 뛰어난 당신을 원하고 있습니다
AWS를 활용하여 Daily Report 만들기 4747
서버개발팀
정창제
changje@devsisters.com

More Related Content

PDF
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)
Hyojun Jeon
 
PDF
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
Hyojun Jeon
 
PPTX
로그 기깔나게 잘 디자인하는 법
Jeongsang Baek
 
PDF
데브시스터즈 데이터 레이크 구축 이야기 : Data Lake architecture case study (박주홍 데이터 분석 및 인프라 팀...
Amazon Web Services Korea
 
PDF
Little Big Data #1. 바닥부터 시작하는 데이터 인프라
Seongyun Byeon
 
PDF
아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)
Brian Hong
 
PDF
BigQuery의 모든 것(기획자, 마케터, 신입 데이터 분석가를 위한) 입문편
Seongyun Byeon
 
PPTX
mongodb와 mysql의 CRUD 연산의 성능 비교
Woo Yeong Choi
 
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)
Hyojun Jeon
 
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
Hyojun Jeon
 
로그 기깔나게 잘 디자인하는 법
Jeongsang Baek
 
데브시스터즈 데이터 레이크 구축 이야기 : Data Lake architecture case study (박주홍 데이터 분석 및 인프라 팀...
Amazon Web Services Korea
 
Little Big Data #1. 바닥부터 시작하는 데이터 인프라
Seongyun Byeon
 
아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)
Brian Hong
 
BigQuery의 모든 것(기획자, 마케터, 신입 데이터 분석가를 위한) 입문편
Seongyun Byeon
 
mongodb와 mysql의 CRUD 연산의 성능 비교
Woo Yeong Choi
 

What's hot (20)

PDF
데이터 분석가를 위한 신규 분석 서비스 - 김기영, AWS 분석 솔루션즈 아키텍트 / 변규현, 당근마켓 소프트웨어 엔지니어 :: AWS r...
Amazon Web Services Korea
 
PPTX
실전 스타트업 데이터분석: 소셜데이팅 이음은 이렇게 한다
승화 양
 
PDF
커머스 스타트업의 효율적인 데이터 분석 플랫폼 구축기 - 하지양 데이터 엔지니어, 발란 / 강웅석 데이터 엔지니어, 크로키닷컴 :: AWS...
Amazon Web Services Korea
 
PDF
실시간 스트리밍 분석 Kinesis Data Analytics Deep Dive
Amazon Web Services Korea
 
PDF
Elastic Stack 을 이용한 게임 서비스 통합 로깅 플랫폼 - elastic{on} 2019 Seoul
SeungYong Oh
 
PDF
실시간 이상탐지를 위한 머신러닝 모델에 Druid _ Imply 활용하기
Kee Hoon Lee
 
PDF
Log design
Soo-Kyung Choi
 
PDF
Data Engineering 101
DaeMyung Kang
 
PDF
대용량 데이터레이크 마이그레이션 사례 공유 [카카오게임즈 - 레벨 200] - 조은희, 팀장, 카카오게임즈 ::: Games on AWS ...
Amazon Web Services Korea
 
PDF
Elastic Stack & Data pipeline (1장)
Jongho Woo
 
PPTX
[DevGround] 린하게 구축하는 스타트업 데이터파이프라인
Jae Young Park
 
PDF
Amazon Aurora 100% 활용하기
Amazon Web Services Korea
 
PDF
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Amazon Web Services Japan
 
PDF
Internal Architecture of Amazon Aurora (Level 400) - 발표자: 정달영, APAC RDS Speci...
Amazon Web Services Korea
 
PDF
데이터가 흐르는 조직 만들기 - 마이리얼트립
승화 양
 
PDF
ストリーム処理プラットフォームにおけるKafka導入事例 #kafkajp
Yahoo!デベロッパーネットワーク
 
PDF
[NDC 2018] Spark, Flintrock, Airflow 로 구현하는 탄력적이고 유연한 데이터 분산처리 자동화 인프라 구축
Juhong Park
 
PDF
Amazon Redshift로 데이터웨어하우스(DW) 구축하기
Amazon Web Services Korea
 
PDF
PUBG: Battlegrounds 라이브 서비스 EKS 전환 사례 공유 [크래프톤 - 레벨 300] - 발표자: 김정헌, PUBG Dev...
Amazon Web Services Korea
 
PDF
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
Amazon Web Services Japan
 
데이터 분석가를 위한 신규 분석 서비스 - 김기영, AWS 분석 솔루션즈 아키텍트 / 변규현, 당근마켓 소프트웨어 엔지니어 :: AWS r...
Amazon Web Services Korea
 
실전 스타트업 데이터분석: 소셜데이팅 이음은 이렇게 한다
승화 양
 
커머스 스타트업의 효율적인 데이터 분석 플랫폼 구축기 - 하지양 데이터 엔지니어, 발란 / 강웅석 데이터 엔지니어, 크로키닷컴 :: AWS...
Amazon Web Services Korea
 
실시간 스트리밍 분석 Kinesis Data Analytics Deep Dive
Amazon Web Services Korea
 
Elastic Stack 을 이용한 게임 서비스 통합 로깅 플랫폼 - elastic{on} 2019 Seoul
SeungYong Oh
 
실시간 이상탐지를 위한 머신러닝 모델에 Druid _ Imply 활용하기
Kee Hoon Lee
 
Log design
Soo-Kyung Choi
 
Data Engineering 101
DaeMyung Kang
 
대용량 데이터레이크 마이그레이션 사례 공유 [카카오게임즈 - 레벨 200] - 조은희, 팀장, 카카오게임즈 ::: Games on AWS ...
Amazon Web Services Korea
 
Elastic Stack & Data pipeline (1장)
Jongho Woo
 
[DevGround] 린하게 구축하는 스타트업 데이터파이프라인
Jae Young Park
 
Amazon Aurora 100% 활용하기
Amazon Web Services Korea
 
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Amazon Web Services Japan
 
Internal Architecture of Amazon Aurora (Level 400) - 발표자: 정달영, APAC RDS Speci...
Amazon Web Services Korea
 
데이터가 흐르는 조직 만들기 - 마이리얼트립
승화 양
 
ストリーム処理プラットフォームにおけるKafka導入事例 #kafkajp
Yahoo!デベロッパーネットワーク
 
[NDC 2018] Spark, Flintrock, Airflow 로 구현하는 탄력적이고 유연한 데이터 분산처리 자동화 인프라 구축
Juhong Park
 
Amazon Redshift로 데이터웨어하우스(DW) 구축하기
Amazon Web Services Korea
 
PUBG: Battlegrounds 라이브 서비스 EKS 전환 사례 공유 [크래프톤 - 레벨 300] - 발표자: 김정헌, PUBG Dev...
Amazon Web Services Korea
 
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
Amazon Web Services Japan
 
Ad

Viewers also liked (20)

PDF
Christmas CTF 보안대회 수상팀 문제풀이서(팀명:구운순살치즈치킨)
NAVER D2
 
PDF
Mr.Robot CTF Write-Up (Korean version)
Se-Han Lee
 
PDF
[Kerference] DEFCON CTF 풀어보기 - 박상석(KERT)
NAVER D2
 
PPTX
2011 07 04_wordlens
Sanghoon Kim
 
PDF
중국인터넷현황
Sangrae Jo
 
PPTX
Blogging, IT Trend를 읽는 Smart한 방법
Choi Chris
 
PDF
기업블로그 효과(Outcome)분석 보고서 (관계성 지수)
SCOTOSS
 
PDF
Social Media Marketing Report 2014
태원 이
 
PDF
[메조미디어_TIBUZZ] 가장 인기있는 인스턴트 라면은?
MezzoMedia
 
PDF
Business model you(korean)
(KIM JI HO) 김지호
 
PDF
[메조미디어_TIBUZZ] 남자의 가방, 앞으로 멜까? 뒤로 멜까?
MezzoMedia
 
PDF
Appsasia 6월 마켓 리포트 (일본시장자료)
appsasia
 
PDF
【Mobidays】KM-Report 2017年2月
Mobidays
 
PDF
내 인생 설계도 (Business Model You)
Jung Soo Kim
 
PDF
MezzoMedia - Media & Market Report [2월 호]
MezzoMedia
 
PDF
MezzoMedia - Media & Market Report [3월 호]
MezzoMedia
 
PDF
비즈니스모델이란 무엇인가 - 정의와 종류
The Innovation Lab
 
PDF
2017전망보고서 미디어이슈 1215
Nasmedia
 
PDF
[mobidays] M report 8월호
Mobidays
 
PDF
쿠키런 1년, 서버개발 분투기
Brian Hong
 
Christmas CTF 보안대회 수상팀 문제풀이서(팀명:구운순살치즈치킨)
NAVER D2
 
Mr.Robot CTF Write-Up (Korean version)
Se-Han Lee
 
[Kerference] DEFCON CTF 풀어보기 - 박상석(KERT)
NAVER D2
 
2011 07 04_wordlens
Sanghoon Kim
 
중국인터넷현황
Sangrae Jo
 
Blogging, IT Trend를 읽는 Smart한 방법
Choi Chris
 
기업블로그 효과(Outcome)분석 보고서 (관계성 지수)
SCOTOSS
 
Social Media Marketing Report 2014
태원 이
 
[메조미디어_TIBUZZ] 가장 인기있는 인스턴트 라면은?
MezzoMedia
 
Business model you(korean)
(KIM JI HO) 김지호
 
[메조미디어_TIBUZZ] 남자의 가방, 앞으로 멜까? 뒤로 멜까?
MezzoMedia
 
Appsasia 6월 마켓 리포트 (일본시장자료)
appsasia
 
【Mobidays】KM-Report 2017年2月
Mobidays
 
내 인생 설계도 (Business Model You)
Jung Soo Kim
 
MezzoMedia - Media & Market Report [2월 호]
MezzoMedia
 
MezzoMedia - Media & Market Report [3월 호]
MezzoMedia
 
비즈니스모델이란 무엇인가 - 정의와 종류
The Innovation Lab
 
2017전망보고서 미디어이슈 1215
Nasmedia
 
[mobidays] M report 8월호
Mobidays
 
쿠키런 1년, 서버개발 분투기
Brian Hong
 
Ad

Similar to AWS를 활용하여 Daily Report 만들기 : 로그 수집부터 자동화된 분석까지 (20)

PDF
KGC 2014 가볍고 유연하게 데이터 분석하기 : 쿠키런 사례 중심 , 데브시스터즈
Minwoo Kim
 
PDF
게임 서비스 품질 향상을 위한 데이터 분석 활용하기 - 김필중 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
Amazon Web Services Korea
 
PDF
KGC 2013 DevSisters
Amazon Web Services Korea
 
PDF
게임의 성공을 위한 Scalable 한 데이터 플랫폼 사례 공유 - 오승용, 데이터 플랫폼 리더, 데브시스터즈 ::: Games on AW...
Amazon Web Services Korea
 
PPTX
서비스 모니터링 구현 사례 공유 - Realtime log monitoring platform-PMon을 ...
Jemin Huh
 
PDF
[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장
Dylan Ko
 
PDF
AWS 기반 지속 가능한 데이터 분석 플랫폼 구축하기 - 박윤곤, 아이스크림에듀 :: AWS Summit Seoul 2019
Amazon Web Services Korea
 
PPTX
Kinesis를 이용한 데이터 수집
Joona Yoon
 
PDF
AWS에서 빅데이터 프로젝트 시작하기 - 이종화 솔루션즈 아키텍트, AWS
Amazon Web Services Korea
 
PDF
AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020
Jinwoong Kim
 
PDF
AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020
AWSKRUG - AWS한국사용자모임
 
PDF
AWS 기반의 대용량 실시간 스트리밍 데이터 분석 아키텍처 패턴::김필중::AWS Summit Seoul 2018
Amazon Web Services Korea
 
PDF
30분만에 만드는 AWS 기반 빅데이터 분석 애플리케이션::안효빈::AWS Summit Seoul 2018
Amazon Web Services Korea
 
PDF
WzDat과 Pandas를 통한 로그 데이터 분석
정주 김
 
PDF
데이터의 힘, 스타트업의 생존을 넘어 성장으로 - 김용대 사업개발 담당, AWS / 박재영 CTO, 크몽 :: AWS Summit Seou...
Amazon Web Services Korea
 
PPTX
글로벌 기업들의 효과적인 데이터 분석을 위한 Data Lake 구축 및 분석 사례 - 김준형 (AWS 솔루션즈 아키텍트)
Amazon Web Services Korea
 
PDF
금융 데이터분석을 위한 효과적인 AWS 아키텍쳐::유다니엘::AWS Summit Seoul 2018
Amazon Web Services Korea
 
PDF
AWS를 활용한 게임 데이터 분석 퀘스트 깨기::안효빈::AWS Summit Seoul 2018
Amazon Web Services Korea
 
PDF
CloudWatch 성능 모니터링과 신속한 대응을 위한 노하우 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
Amazon Web Services Korea
 
PPTX
AWS의 하둡 관련 서비스 - EMR/S3
Keeyong Han
 
KGC 2014 가볍고 유연하게 데이터 분석하기 : 쿠키런 사례 중심 , 데브시스터즈
Minwoo Kim
 
게임 서비스 품질 향상을 위한 데이터 분석 활용하기 - 김필중 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
Amazon Web Services Korea
 
KGC 2013 DevSisters
Amazon Web Services Korea
 
게임의 성공을 위한 Scalable 한 데이터 플랫폼 사례 공유 - 오승용, 데이터 플랫폼 리더, 데브시스터즈 ::: Games on AW...
Amazon Web Services Korea
 
서비스 모니터링 구현 사례 공유 - Realtime log monitoring platform-PMon을 ...
Jemin Huh
 
[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장
Dylan Ko
 
AWS 기반 지속 가능한 데이터 분석 플랫폼 구축하기 - 박윤곤, 아이스크림에듀 :: AWS Summit Seoul 2019
Amazon Web Services Korea
 
Kinesis를 이용한 데이터 수집
Joona Yoon
 
AWS에서 빅데이터 프로젝트 시작하기 - 이종화 솔루션즈 아키텍트, AWS
Amazon Web Services Korea
 
AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020
Jinwoong Kim
 
AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020
AWSKRUG - AWS한국사용자모임
 
AWS 기반의 대용량 실시간 스트리밍 데이터 분석 아키텍처 패턴::김필중::AWS Summit Seoul 2018
Amazon Web Services Korea
 
30분만에 만드는 AWS 기반 빅데이터 분석 애플리케이션::안효빈::AWS Summit Seoul 2018
Amazon Web Services Korea
 
WzDat과 Pandas를 통한 로그 데이터 분석
정주 김
 
데이터의 힘, 스타트업의 생존을 넘어 성장으로 - 김용대 사업개발 담당, AWS / 박재영 CTO, 크몽 :: AWS Summit Seou...
Amazon Web Services Korea
 
글로벌 기업들의 효과적인 데이터 분석을 위한 Data Lake 구축 및 분석 사례 - 김준형 (AWS 솔루션즈 아키텍트)
Amazon Web Services Korea
 
금융 데이터분석을 위한 효과적인 AWS 아키텍쳐::유다니엘::AWS Summit Seoul 2018
Amazon Web Services Korea
 
AWS를 활용한 게임 데이터 분석 퀘스트 깨기::안효빈::AWS Summit Seoul 2018
Amazon Web Services Korea
 
CloudWatch 성능 모니터링과 신속한 대응을 위한 노하우 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
Amazon Web Services Korea
 
AWS의 하둡 관련 서비스 - EMR/S3
Keeyong Han
 

AWS를 활용하여 Daily Report 만들기 : 로그 수집부터 자동화된 분석까지

  • 1. AWS를 활용하여 Daily Report 만들기 로그 수집부터 자동화된 분석까지 1 서버개발팀 정창제 [email protected]
  • 2. AWS를 활용하여 Daily Report 만들기 2 쿠키런 소개 • 7,000만 누적 다운로드 • 최대 1,000만 DAU • 한국, 일본, 태국 등 10여개국 다운로드 1위 • 38개국 Top10 다운로드
  • 3. AWS를 활용하여 Daily Report 만들기 3 200~400GB 100TB 쿠키런의 하루 로그는 1년이면 차곡차곡 잘 쌓아야 한다
  • 4. AWS를 활용하여 Daily Report 만들기 0. 로그 수집 4 Amazon S3 Game Servers Redis Elastic Search Kibana . . . Logstash . . .
  • 5. AWS를 활용하여 Daily Report 만들기 5 차곡차곡 쌓여가는 로그 하지만 분석할 방법이 없다..? 200~400GB 100TB 쿠키런의 하루 로그는 1년이면 차곡차곡 잘 쌓아야 한다
  • 6. AWS를 활용하여 Daily Report 만들기 6 최적의 분석시스템을 만들자! 차곡차곡 쌓여가는 로그 하지만 분석할 방법이 없다..? 200~400GB 100TB 쿠키런의 하루 로그는 1년이면 차곡차곡 잘 쌓아야 한다
  • 7. AWS를 활용하여 Daily Report 만들기 1. 쉽고 빠르게 로그 분석하기 7 BREADCRUMB
  • 8. AWS를 활용하여 Daily Report 만들기 1. 로그분석시스템 요구조건 - 하루 전 로그와 1년 전 로그를 동일하게! → 날짜별로 로그파일을 분리 8
  • 9. AWS를 활용하여 Daily Report 만들기 - 하루 전 로그와 1년 전 로그를 동일하게! → 날짜별로 로그파일을 분리 - 특정 활동 및 특정 유저의 로그를 빠르게! → Action과 MemberID로 Index 9 1. 로그분석시스템 요구조건
  • 10. AWS를 활용하여 Daily Report 만들기 1. 로그분석시스템 요구조건 - 하루 전 로그와 1년 전 로그를 동일하게! → 날짜별로 로그파일을 분리 - 특정 활동 및 특정 유저의 로그를 빠르게! → Action과 MemberID로 Index - 로컬 개발환경에서도 빠르게! → 유저 샘플링을 지원하자! 10
  • 11. AWS를 활용하여 Daily Report 만들기 1. 로그 전처리 11 Logstash Amazon S3 20분마다 업로드 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
  • 12. AWS를 활용하여 Daily Report 만들기 1. 로그 전처리 12 Logstash Amazon S3 Amazon S3 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 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 20분마다 업로드 정렬과 압축
  • 13. AWS를 활용하여 Daily Report 만들기 1. 로그 전처리 13 Logstash Amazon S3 Amazon S3 Amazon S3 일일 병합 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 정렬과 압축 20분마다 업로드
  • 14. AWS를 활용하여 Daily Report 만들기 1. 로그 전처리 14 gamelog.sz • 날짜로 분리 • Action, MemberID로 정렬 • 특정 활동 및 특정 유저의 로그를 빠르게 찾을 수 있도록 • 로컬 개발에서 샘플링하여 사용할 수 있도록 MemberID를 뒤집은 값을 키로 사용 • Block 단위 Snappy 압축 • Networt Latency ↓ • Snappy : CPU 사용량 ↓ • Splittable (Snappy Framing Format)
  • 15. AWS를 활용하여 Daily Report 만들기 1. 로그 전처리 15 …}, { "key_first": “<Action> <Reversed MemberID> <Time> <Hash>”, "key_last": “<Action> <Reversed MemberID> <Time> <Hash>”, "offset": 0, "length": <Length> }, … • gamelog를 조회하기 위한 Metadata index.json
  • 16. AWS를 활용하여 Daily Report 만들기 1. 로그 전처리 16 [{ "key_first": “member/connect 00001”, "key_last": “member/connect 000024”, "offset": 0, “length": 31243 }, { "key_first": “member/connect 000025”, "key_last": “member/disconnect 0003”, "offset": 31244, "length": 42347 }, { "key_first": “member/disconnect 00031”, "key_last": “game/startGame 00012”, "offset": 73591, "length": 49323 }] index.jsongamelog.sz member/connect member/connect member/connect member/disconnect game/startGame member/disconnect 10000 240000 250000 3000 13000 00012
  • 17. AWS를 활용하여 Daily Report 만들기 BREADCRUMB 1. 로그 분석 17 Amazon S3 EMR index.json gamelog.sz output by 2015-04-21T0 0.01.txt 00.01.json 00.01.txt.sz https://github.com/twitter/scalding
  • 18. AWS를 활용하여 Daily Report 만들기 1. 예제 - ActiveUser 18https://github.com/twitter/scalding class ActiveUserCount(args : Args) extends Job(args) {
 CookierunLog("member/connect", args("sampling"),
 args("timeStart"), args("timeEnd"),
 Tuple1("memberSeq"))
 .groupBy(‘memberSeq){ _.take(1) }
 .groupAll{ _.size }
 .write(Csv(args("output")))
 } 1/1000 샘플링시 1주일에 대해 로컬에서 15초
  • 19. AWS를 활용하여 Daily Report 만들기 19 분석 시스템도 있는데... 로그도 쌓이고... 요청이 있을때만 비정기적으로 추출하는 통계...
  • 20. AWS를 활용하여 Daily Report 만들기 20 분석 시스템도 있는데... 로그도 쌓이고... 요청이 있을때만 비정기적으로 추출하는 통계... 정기적인 통계가 필요하다!
  • 21. AWS를 활용하여 Daily Report 만들기 2. 매일매일 데이터 받아보기 21
  • 22. AWS를 활용하여 Daily Report 만들기 ☐ 매일 아침 게임 통계를 받아보고 싶어요! ☐ 지표들의 변화 추이를 보고 싶어요! ☐ 쿠키별 보유량이 알고 싶어요! 22 2. 매일매일 데이터 받아보기 - 목표
  • 23. AWS를 활용하여 Daily Report 만들기 BREADCRUMB 2-1. 매일 아침 게임 통계를 받아보고 싶어요! 23 Amazon S3 EMR Powered by LogsOutput
  • 24. AWS를 활용하여 Daily Report 만들기 BREADCRUMB 2-1. 매일 아침 게임 통계를 받아보고 싶어요! 24 Amazon S3 EMR SES boto Powered by LogsOutput Result cron Send via E-Mail Docker RDS INSERT / SELECT
  • 25. AWS를 활용하여 Daily Report 만들기 2-1. 매일 아침 게임 통계를 받아보고 싶어요! 25
  • 26. AWS를 활용하여 Daily Report 만들기 2-1. 매일 아침 게임 통계를 받아보고 싶어요! 26 Upload JAR S3 JAR BREADCRUMB
  • 27. AWS를 활용하여 Daily Report 만들기 2-1. 매일 아침 게임 통계를 받아보고 싶어요! 27 EMR run_jobflow BREADCRUMB S3 JAR
  • 28. AWS를 활용하여 Daily Report 만들기 2-1. 매일 아침 게임 통계를 받아보고 싶어요! 28 EMR BREADCRUMB BREADCRUMB S3 add_jobflow_steps Logs Output JAR
  • 29. AWS를 활용하여 Daily Report 만들기 BREADCRUMB 2-1. 매일 아침 게임 통계를 받아보고 싶어요! 29 Amazon S3 EMR SES boto Powered by LogsOutput Result cron Send via E-Mail Docker RDS INSERT / SELECT
  • 30. AWS를 활용하여 Daily Report 만들기 2-1. 매일 아침 게임 통계를 받아보고 싶어요! 30
  • 31. AWS를 활용하여 Daily Report 만들기 EMR - 하루 한번 한시간정도 필요한 클러스터를 운영하기엔 최고 - Spot Instance로 사용하면 비용도 굉장히 저렴하다! - S3에 Direct Access 가능 HDFS에 로그를 업로드할 필요가 없다 31 Amazon S3 - 로그를 담아두기 위한 최고의 저장소 - 신뢰할 수 있는 스토리지 - Offset-Range를 지원하여 로그에서 필요한 부분만 가져오는 것도 가능
  • 32. AWS를 활용하여 Daily Report 만들기 2. 매일매일 데이터 받아보기 - 목표 ✓ 매일 아침 게임 통계를 받아보고 싶어요! 지표들의 변화 추이를 보고싶어요! ☐ 쿠키별 보유량이 알고 싶어요! 32
  • 33. AWS를 활용하여 Daily Report 만들기 2-2. 지표들의 변화 추이를 보고싶어요! 33 Amazon S3 EMR SES boto Powered by LogsOutput Result Send via E-Mail RDS INSERT / SELECT HTTPS Web cron Docker SELECT BREADCRUMB
  • 34. AWS를 활용하여 Daily Report 만들기 2-2. 지표들의 변화 추이를 보고싶어요! 34
  • 35. AWS를 활용하여 Daily Report 만들기 2. 매일매일 데이터 받아보기 - 목표 ✓ 매일 아침 게임 통계를 받아보고 싶어요! ✓ 지표들의 변화 추이를 보고 싶어요! 쿠키 보유량이 알고 싶어요! 35
  • 36. AWS를 활용하여 Daily Report 만들기 36 2-3. 유저의 쿠키 보유량이 알고 싶어요! 쿠키 보유량 = 쿠키의 총 판매량
  • 37. AWS를 활용하여 Daily Report 만들기 37 2-3. 유저의 쿠키 보유량이 알고 싶어요! 쿠키 보유량 = 쿠키의 총 판매량 출시 이후 모든 판매로그를 분석..?
  • 38. AWS를 활용하여 Daily Report 만들기 38 2-3. 유저의 쿠키 보유량이 알고 싶어요! 쿠키 보유량 = 쿠키의 총 판매량 출시 이후 모든 판매로그를 분석..?
  • 39. AWS를 활용하여 Daily Report 만들기 39 2-3. 유저의 쿠키 보유량이 알고 싶어요! View를 활용하자! 유저데이터를 담고 있는 의
  • 40. AWS를 활용하여 Daily Report 만들기 40 View 2-3. 유저의 쿠키 보유량이 알고 싶어요! Documents로부터 MapReduce를 통해 원하는 형태의 데이터로 변환하는 기능 Mongo의 Aggregate, MapReduce와 비슷
  • 41. AWS를 활용하여 Daily Report 만들기 41 View 2-3. 유저의 쿠키 보유량이 알고 싶어요! 유저 정보에 들어있는 쿠키 정보를 쿠키별 카운트로 변환! MapReduce[ 용감한 쿠키, 천사맛 쿠키, 악마맛 쿠키 ] 용감한 쿠키 : 3 천사맛 쿠키 : 2 악마맛 쿠키 : 2 공주맛 쿠키 : 1 [ 용감한 쿠키, 좀비맛 쿠키, 천사맛 쿠키 ] [ 용감한 쿠키, 공주맛 쿠키, 악마맛 쿠키 ] Documents로부터 MapReduce를 통해 원하는 형태의 데이터로 변환하는 기능 Mongo의 Aggregate, MapReduce와 비슷
  • 42. AWS를 활용하여 Daily Report 만들기 2. 매일매일 데이터 받아보기 - 완성! 42 Amazon S3 EMR SES boto Powered by LogsOutput Result View Query Send via E-Mail View RDS INSERT / SELECT HTTPS Web cron Docker BREADCRUMB SELECT
  • 43. AWS를 활용하여 Daily Report 만들기 2. 매일매일 데이터 받아보기 - 완성! ✓ 매일 아침 전날의 게임 통계를 받아보고 싶어요! ✓ 지표들의 변화 추이를 보고싶어요! ✓ 쿠키별 보유량이 알고 싶어요! 43
  • 44. AWS를 활용하여 Daily Report 만들기 3. 성과 - 로그분석시스템 Breadcrumb ✓ 분석에 필요한 로그만을 가져오는 분석 시스템 ✓ Scalding 기반으로 쉽고 빠른 개발 ✓ 로컬에서 샘플링된 유저집합으로 개발한 이후 동일하게 전체 데이터에 적용 ✓ 현재까지는 당일의 데이터는 조회가 불가 → 당일 로그의 분석도 가능한 시스템 개발 완료 44
  • 45. AWS를 활용하여 Daily Report 만들기 3. 성과 - Daily Report Pancake ✓ 하루에 한번 자동화된 로그분석과 보고서 ✓ 일회성 분석으로 작성한 코드도 곧바로 정기분석에 추가 ✓ 여러 데이터 소스로부터 다양한 분석 ✓ 게임 성과 분석 뿐 아니라 어뷰징 분석도 정기적으로 수행 ✓ Breadcrumb의 실시간 로그분석에 대응한 버전을 준비 중 45
  • 46. AWS를 활용하여 Daily Report 만들기 46 http://www.devsisters.com/jobs/ 우리는 뛰어난 당신을 원하고 있습니다
  • 47. AWS를 활용하여 Daily Report 만들기 4747 서버개발팀 정창제 [email protected]