SEOUL
© 2015, Amazon Web Services, Inc. or its affiliates. All rights reserved
© 2015, Amazon Web Services, Inc. or its affiliates. All rights reserved
AWS 로 게임 분석하기
김일호 - Solution Architect, Amazon Web Services
Agenda
• 실시간 데이터 분석
– 데이터 추출 및 저장
– 데이터 처리
• GREE International
– 게임 데이터 분석
– 데이터 분석 아키텍쳐
– 팁, 참고사항
• 주요 요약
실시간 데이터 분석이란?
실시간 데이터 추출
• 높은 확장성
• 데이터 안정성
• 리소스 유연성
• 동시 또는 여러 번의 데이터 읽기 가능
지속적인 데이터 처리
• 스트림 데이터의 로드 발란싱
• 가용성, 체크포인트 / 리플레이
• 리소스 유연성
• 다수의 어플리케이션의 병령 처리 가능
지속적인 데이터 흐름 및 처리
낮은 end-to-end 응답성
실시간 워크로드 지속
+
데이터 추출
Global top-10
foo-analysis.com
단순한 예제...
Global top-10
(당연히) 워크로드 분산…
foo-analysis.com
Global top-10
Local top-10
Local top-10
Local top-10
또는 확장이 가능한 데이터 중개 구성…
foo-analysis.com
Global top-10
K
I
N
E
S
I
S
Data
Record
Stream
Shard
Partition Key
Worker
My top-10
Data RecordSequence Number
14 17 18 21 23
Amazon Kinesis – 관리형 데이터 스트림 저장소
foo-analysis.com
AWSEndpoint
S3
DynamoDB
Redshift
Data
Sources
Availability
Zone
Availability
Zone
Data
Sources
Data
Sources
Data
Sources
Data
Sources
Availability
Zone
Shard 1
Shard 2
Shard N
[Data
Archive]
[Metric
Extraction]
[Sliding Window
Analysis]
[Machine
Learning]
App. 1
App. 2
App. 3
App. 4
EMR
Amazon Kinesis – 다양한 목적의 데이터 중개
Kinesis – Stream and Shards
• Stream: 데이터를 모으고 저장할
수 있는 Kinesis stream 개체
• Shards: 처리 용량 단위
• Put - 1MB/sec OR 1000 TPS
• Get - 2 MB/sec OR 5 TPS
• Shards를 늘리거나 줄여 스케일
가능
• 24시간 데이터 보관(Window)
Kinesis Stream 용량 결정하기
만약 2 개의 프로듀서(생성), 각각 2KB 레코드 크기로 500 TPS 데이터 전송
2 개의 shard 로 서비스를 시작할 수 있으며, 전체 입력 2MB/s, 출력 4 MB/s 의 용량
Shard
Shard
2 KB * 500 TPS = 1000KB/s
2 KB * 500 TPS = 1000KB/s
Application
Producers
Kinesis Stream 용량 결정하기
만약 3 개의 데이터 컨슈머(처리) 어플리케이션이 동작한다면
Shard를 스트림에 간단히! 추가하여 로드를 분산 가능
Shard
Shard
2 KB * 500 TPS = 1000KB/s
2 KB * 500 TPS = 1000KB/s
Application
Application
ApplicationProducers Shard
Amazon Kinesis – 분산 스트림
• 배치 및 연속 실시간 처리 모두 가능
• 데이터를 잃지 않으면서 간단히 스트림 용량 확장 및
축소
• 다양한 목적의 어플리케이션들이 24시간 내의
데이터를 지속적으로 접근하여 처리 가능
• GB/sec 단위로 스케일 확장 가능하며 데이터를
안전하게 저장
– 레코드는 여러 Availability zones 에 저장
• 동시에 여러 어플리케이션으로 데이터 처리 가능
– RDBMS, S3, Data Warehouse
데이터 처리
Batch
Micro
Batch
Real
Time
실시간 분석 패턴…
Batch
Analysis
DW
Hadoop
Notifications
& Alerts
Dashboards/
visualizations
APIsStreaming
Analytics
Data
Streams
Deep Learning
Dashboards/
visualizations
Spark
Storm
KCL
Data
Archive
실시간 분석 방식
• Streaming
– 지속적으로 수 초 내에 이벤트 발생, (예,Transaction log를
분석하여
금융 사기를 검출)
• Micro-batch
– 수분 내에 비지니스 임팩이 있을 수 있는 정보 획득, (타 지역의
Transaction log 분석, 특이점 검출)
Kinesis
Client
Library
Kinesis Client Library (KCL)
• 다 수의 Shard로부터
분산하여 데이터를
읽을 수 있도록 도와줌
• Failure 예외 처리
• Shard 를 유연하게
조절
• Worker 스케일,
Checkpoint 등의 분산
처리 지원
KCL Design Components
• Worker:- 각각의 어플리케이션 인스턴스에 실행되는 단위
프로세스
• Record processor:- Kinesis stream의 샤드에서 데이터를 실제
읽어 처리하는 단위 프로세스
• Check-pointer: 샤드에서 레코드가 이미 처리 상태, 여부 등을
추적
만약 Worker 에 문제가 발생하였을 경우 마지막 처리 중이던
레코드부터 다시 처리를 지속할 수 있도록 KCL은 프로세스를
Amazon Kinesis Connector Library
• Amazon S3
– S3로 파일을 생성하여 아카이브
– 레코드를 모아 순서대로 파일 명명하여 저장
• Amazon Redshift
– Micro-batching 직접 Redshift DW로 저장(Manifest 지원)
– 원하는 포맷으로 메시지 변환
• Amazon DynamoDB
– BatchPut API로 직접 DB 테이블에 입력
– 원하는 포맷으로 메시지 변환
• Elasticsearch
– Elasticsearch cluster로 데이터 직접 입력
– 원하는 포맷으로 메시지 변환
S3 Dynamo DB Redshift
Kinesis
데이터를 직접
Kinesis에서 읽어 Hive,
Pig, Streaming,
Cascading 방식으로 처리
실시간 데이터 소스를 바로 읽어 배치
프로세싱동시에 다른 어플리케이션에서도
데이터를 읽어 처리 가능
EMR, Kinesis 통합
DStream
RDD@T1 RDD@T2
Messages
Receiver
Spark Streaming – 기본 개념
• 메시지들을 Discretized Streams of Dstreams로
추상화
• RDDs 단위 순서로 처리
http://spark.apache.org/docs/latest/streaming-kinesis-integration.html
Apache Storm: 기본 개념
• Streams: 순서에 제한 없는 데이터 tuples
• Spout: 스트림 소스
• Bolts :입력 스트림 처리 및 새로운 결과 스트림 생성
• Topologies : Spouts, Bolts 연계 구성
https://github.com/awslabs/kinesis-storm-spout
Batch
Micro
Batch
Real
Time
전체 아키텍쳐
Producer Amazon
Kinesis
App Client
EMRS3
KCL
DynamoDB
Redshift
BI Tools
KCL
KCL
• Best Practices for Micro-Batch Loading on Amazon Redshift
• Implement a Real-time, Sliding-Window Application Using Amazon
Kinesis and Apache Storm
• Visualizing Real-time, Geotagged Data with Amazon Kinesis
GREE 게임 데티어 분석
GREE Headquarters
Tokyo, Japan
GREE International,
Inc.
SEOUL, CA
GREE Canada
Vancouver, BC
QUICK FACTS
6
Continents playing GREE games
1,882
Employees Worldwide
13
Games made in North America
2004
2011
2013
MILESTONES GAME STATS - 4 titles in top 100 grossing*
Crime City (Studios)
Reached Top 10 Grossing in 140 countries
Top 100 Grossing in 19 countries, over 3 years
since launch
*As of Sep. 2014 – Source: App Annie
A Global Gaming Powerhouse
Knights & Dragons (Publishing)
Reached Top 10 Grossing in 41 countries
Top 100 Grossing in 22 countries
Ad Clicks
Downloads
Perf Data
Attribution
Campaign Performance
SC Balance
HC Balance
IAP
Player Targeting
GREE 데이터 분석 흐름
Data Collection
데이터 소스
• Mobile Devices
• Game Servers
• Ad Networks
데이터 크기 및 증가
• 500G+/day
• 500M+ events/day
• Size of event ~ 1 KB
분석 데이터 내용
{"player_id":"323726381807586881","player_level":169,"device":"iPhone
5","version":"iOS 7.1.2”,"platfrom":"ios","client_build":"440”,
"db":”mw_dw_ios","table":"player_login",
"uuid":"1414566719-rsl3hvhu7o","time_created":"2014-10-29 00:11:59”}
Key Requirements
• 항시 데이터 전송 보장
• Zero 데이터 손실
• Zero 데이터 회손
• 쉽게 처리 프로세싱 추가
• 준 실시간이 분석
• 실시간 분석
• 관리 운영 최소화
데이터 분석 아키텍쳐
Game DB
Game
Servers
Kinesis
Amazon
S3
Amazon
S3
Amazon
Redshift
S3
Consumer
Amazon
EMR
DSV
JSON
분석 아키텍쳐
Dashboard
Real-time
Stats
Consumer
ElastiCache
(Redis)
Sender
Kinesis
Stream
Shard 1
Shard 2
Shard 3
Shard n
Describe
Stream
Sync
Shards
Analytics
Files
Send
PutRecord
Read Buffer
Amazon Kinesis Sender
Compress
50KB
데이터 생성 및 전송 시 고려할 점
• 단일 스트림 VS 게임마다 다른 스트림
• 일괄전송 VS 이벤트마다 전송
• 압축 VS 비압축
• PartitionKey VS ExplicitHashKey
Consumer – DSV 포맷으로 S3 에 저장 과정
Kinesis
Stream
Shard 1
Shard 2
Shard n
S3File Metadata DB
Decompress De-Dupe
BufferDSV Transformation
Validation Target Table
Compress
Size/
Timeout
Record
Consumer
Kinesis Client Library
Record Processor
Record Processor
Consumer
Kinesis Client Library
Record Processor
Auto Scaling Group
Amazon Redshift 로 바로 데이터 적제
Amazon S3
File Metadata DB
Amazon
Redshift
Update Status
Transaction
Create Manifest Execute COPY
Create Manifest Execute COPY
Status
Create Manifest Execute COPY
Consumer – 실시간 Stats 보드
Kinesis
Stream
Shard 1
Shard 2
Shard n
Decompress De-Dupe
Target TableRecord
Consumer
Kinesis Client Library
Record Processor
Record Processor
Consumer
Kinesis Client Library
Record Processor
Auto Scaling Group
Configuration
Metric, Segment &
Value, Timeslot
Filter Events
ElastiCache
(Redis)
Dashboard
팁, 참고 사항
팁, 참고 사항
Sender
• 데이터 생성과 전송을 분리
• 압축 사용 및 배치로 전송
• PutRecord HTTP:5X 데이터 중복 전송 가능성
• ProvisionedThroughputExceeded 모니터링 필요
팁, 참고 사항
Consumer
• KCL 꼭 사용!
• 워크로드를 모니터링하고 오토 스케일링 사용
Overall
• 충분한 용량의 샤드 구성
• 안전한 서비스 또는 어플리케이션 종료 구성
• AWS best practices 따라 에러 처리(재시도) 및 예외
처리 구성
주요 요약
주요 요약
Kinesis
• Data available for processing within seconds
• Robust API, KCL, and Connector libraries
AWS
• Managed
• Scalable
• Cost effective
• Quick to get up and running
SEOUL

AWS Summit Seoul 2015 - 게임 서비스 혁신을 위한 데이터 분석

  • 1.
    SEOUL © 2015, AmazonWeb Services, Inc. or its affiliates. All rights reserved
  • 2.
    © 2015, AmazonWeb Services, Inc. or its affiliates. All rights reserved AWS 로 게임 분석하기 김일호 - Solution Architect, Amazon Web Services
  • 3.
    Agenda • 실시간 데이터분석 – 데이터 추출 및 저장 – 데이터 처리 • GREE International – 게임 데이터 분석 – 데이터 분석 아키텍쳐 – 팁, 참고사항 • 주요 요약
  • 4.
    실시간 데이터 분석이란? 실시간데이터 추출 • 높은 확장성 • 데이터 안정성 • 리소스 유연성 • 동시 또는 여러 번의 데이터 읽기 가능 지속적인 데이터 처리 • 스트림 데이터의 로드 발란싱 • 가용성, 체크포인트 / 리플레이 • 리소스 유연성 • 다수의 어플리케이션의 병령 처리 가능 지속적인 데이터 흐름 및 처리 낮은 end-to-end 응답성 실시간 워크로드 지속 +
  • 5.
  • 6.
  • 7.
    Global top-10 (당연히) 워크로드분산… foo-analysis.com
  • 8.
    Global top-10 Local top-10 Localtop-10 Local top-10 또는 확장이 가능한 데이터 중개 구성… foo-analysis.com
  • 9.
    Global top-10 K I N E S I S Data Record Stream Shard Partition Key Worker Mytop-10 Data RecordSequence Number 14 17 18 21 23 Amazon Kinesis – 관리형 데이터 스트림 저장소 foo-analysis.com
  • 10.
    AWSEndpoint S3 DynamoDB Redshift Data Sources Availability Zone Availability Zone Data Sources Data Sources Data Sources Data Sources Availability Zone Shard 1 Shard 2 ShardN [Data Archive] [Metric Extraction] [Sliding Window Analysis] [Machine Learning] App. 1 App. 2 App. 3 App. 4 EMR Amazon Kinesis – 다양한 목적의 데이터 중개
  • 11.
    Kinesis – Streamand Shards • Stream: 데이터를 모으고 저장할 수 있는 Kinesis stream 개체 • Shards: 처리 용량 단위 • Put - 1MB/sec OR 1000 TPS • Get - 2 MB/sec OR 5 TPS • Shards를 늘리거나 줄여 스케일 가능 • 24시간 데이터 보관(Window)
  • 12.
    Kinesis Stream 용량결정하기 만약 2 개의 프로듀서(생성), 각각 2KB 레코드 크기로 500 TPS 데이터 전송 2 개의 shard 로 서비스를 시작할 수 있으며, 전체 입력 2MB/s, 출력 4 MB/s 의 용량 Shard Shard 2 KB * 500 TPS = 1000KB/s 2 KB * 500 TPS = 1000KB/s Application Producers
  • 13.
    Kinesis Stream 용량결정하기 만약 3 개의 데이터 컨슈머(처리) 어플리케이션이 동작한다면 Shard를 스트림에 간단히! 추가하여 로드를 분산 가능 Shard Shard 2 KB * 500 TPS = 1000KB/s 2 KB * 500 TPS = 1000KB/s Application Application ApplicationProducers Shard
  • 14.
    Amazon Kinesis –분산 스트림 • 배치 및 연속 실시간 처리 모두 가능 • 데이터를 잃지 않으면서 간단히 스트림 용량 확장 및 축소 • 다양한 목적의 어플리케이션들이 24시간 내의 데이터를 지속적으로 접근하여 처리 가능 • GB/sec 단위로 스케일 확장 가능하며 데이터를 안전하게 저장 – 레코드는 여러 Availability zones 에 저장 • 동시에 여러 어플리케이션으로 데이터 처리 가능 – RDBMS, S3, Data Warehouse
  • 15.
  • 16.
    Batch Micro Batch Real Time 실시간 분석 패턴… Batch Analysis DW Hadoop Notifications &Alerts Dashboards/ visualizations APIsStreaming Analytics Data Streams Deep Learning Dashboards/ visualizations Spark Storm KCL Data Archive
  • 17.
    실시간 분석 방식 •Streaming – 지속적으로 수 초 내에 이벤트 발생, (예,Transaction log를 분석하여 금융 사기를 검출) • Micro-batch – 수분 내에 비지니스 임팩이 있을 수 있는 정보 획득, (타 지역의 Transaction log 분석, 특이점 검출) Kinesis Client Library
  • 18.
    Kinesis Client Library(KCL) • 다 수의 Shard로부터 분산하여 데이터를 읽을 수 있도록 도와줌 • Failure 예외 처리 • Shard 를 유연하게 조절 • Worker 스케일, Checkpoint 등의 분산 처리 지원
  • 19.
    KCL Design Components •Worker:- 각각의 어플리케이션 인스턴스에 실행되는 단위 프로세스 • Record processor:- Kinesis stream의 샤드에서 데이터를 실제 읽어 처리하는 단위 프로세스 • Check-pointer: 샤드에서 레코드가 이미 처리 상태, 여부 등을 추적 만약 Worker 에 문제가 발생하였을 경우 마지막 처리 중이던 레코드부터 다시 처리를 지속할 수 있도록 KCL은 프로세스를
  • 20.
    Amazon Kinesis ConnectorLibrary • Amazon S3 – S3로 파일을 생성하여 아카이브 – 레코드를 모아 순서대로 파일 명명하여 저장 • Amazon Redshift – Micro-batching 직접 Redshift DW로 저장(Manifest 지원) – 원하는 포맷으로 메시지 변환 • Amazon DynamoDB – BatchPut API로 직접 DB 테이블에 입력 – 원하는 포맷으로 메시지 변환 • Elasticsearch – Elasticsearch cluster로 데이터 직접 입력 – 원하는 포맷으로 메시지 변환 S3 Dynamo DB Redshift Kinesis
  • 21.
    데이터를 직접 Kinesis에서 읽어Hive, Pig, Streaming, Cascading 방식으로 처리 실시간 데이터 소스를 바로 읽어 배치 프로세싱동시에 다른 어플리케이션에서도 데이터를 읽어 처리 가능 EMR, Kinesis 통합
  • 22.
    DStream RDD@T1 RDD@T2 Messages Receiver Spark Streaming– 기본 개념 • 메시지들을 Discretized Streams of Dstreams로 추상화 • RDDs 단위 순서로 처리 http://spark.apache.org/docs/latest/streaming-kinesis-integration.html
  • 23.
    Apache Storm: 기본개념 • Streams: 순서에 제한 없는 데이터 tuples • Spout: 스트림 소스 • Bolts :입력 스트림 처리 및 새로운 결과 스트림 생성 • Topologies : Spouts, Bolts 연계 구성 https://github.com/awslabs/kinesis-storm-spout
  • 24.
    Batch Micro Batch Real Time 전체 아키텍쳐 Producer Amazon Kinesis AppClient EMRS3 KCL DynamoDB Redshift BI Tools KCL KCL
  • 25.
    • Best Practicesfor Micro-Batch Loading on Amazon Redshift • Implement a Real-time, Sliding-Window Application Using Amazon Kinesis and Apache Storm • Visualizing Real-time, Geotagged Data with Amazon Kinesis
  • 26.
  • 27.
    GREE Headquarters Tokyo, Japan GREEInternational, Inc. SEOUL, CA GREE Canada Vancouver, BC QUICK FACTS 6 Continents playing GREE games 1,882 Employees Worldwide 13 Games made in North America 2004 2011 2013 MILESTONES GAME STATS - 4 titles in top 100 grossing* Crime City (Studios) Reached Top 10 Grossing in 140 countries Top 100 Grossing in 19 countries, over 3 years since launch *As of Sep. 2014 – Source: App Annie A Global Gaming Powerhouse Knights & Dragons (Publishing) Reached Top 10 Grossing in 41 countries Top 100 Grossing in 22 countries
  • 28.
    Ad Clicks Downloads Perf Data Attribution CampaignPerformance SC Balance HC Balance IAP Player Targeting GREE 데이터 분석 흐름
  • 29.
    Data Collection 데이터 소스 •Mobile Devices • Game Servers • Ad Networks 데이터 크기 및 증가 • 500G+/day • 500M+ events/day • Size of event ~ 1 KB 분석 데이터 내용 {"player_id":"323726381807586881","player_level":169,"device":"iPhone 5","version":"iOS 7.1.2”,"platfrom":"ios","client_build":"440”, "db":”mw_dw_ios","table":"player_login", "uuid":"1414566719-rsl3hvhu7o","time_created":"2014-10-29 00:11:59”}
  • 30.
    Key Requirements • 항시데이터 전송 보장 • Zero 데이터 손실 • Zero 데이터 회손 • 쉽게 처리 프로세싱 추가 • 준 실시간이 분석 • 실시간 분석 • 관리 운영 최소화
  • 31.
  • 32.
  • 33.
    Sender Kinesis Stream Shard 1 Shard 2 Shard3 Shard n Describe Stream Sync Shards Analytics Files Send PutRecord Read Buffer Amazon Kinesis Sender Compress 50KB
  • 34.
    데이터 생성 및전송 시 고려할 점 • 단일 스트림 VS 게임마다 다른 스트림 • 일괄전송 VS 이벤트마다 전송 • 압축 VS 비압축 • PartitionKey VS ExplicitHashKey
  • 35.
    Consumer – DSV포맷으로 S3 에 저장 과정 Kinesis Stream Shard 1 Shard 2 Shard n S3File Metadata DB Decompress De-Dupe BufferDSV Transformation Validation Target Table Compress Size/ Timeout Record Consumer Kinesis Client Library Record Processor Record Processor Consumer Kinesis Client Library Record Processor Auto Scaling Group
  • 36.
    Amazon Redshift 로바로 데이터 적제 Amazon S3 File Metadata DB Amazon Redshift Update Status Transaction Create Manifest Execute COPY Create Manifest Execute COPY Status Create Manifest Execute COPY
  • 37.
    Consumer – 실시간Stats 보드 Kinesis Stream Shard 1 Shard 2 Shard n Decompress De-Dupe Target TableRecord Consumer Kinesis Client Library Record Processor Record Processor Consumer Kinesis Client Library Record Processor Auto Scaling Group Configuration Metric, Segment & Value, Timeslot Filter Events ElastiCache (Redis) Dashboard
  • 38.
  • 39.
    팁, 참고 사항 Sender •데이터 생성과 전송을 분리 • 압축 사용 및 배치로 전송 • PutRecord HTTP:5X 데이터 중복 전송 가능성 • ProvisionedThroughputExceeded 모니터링 필요
  • 40.
    팁, 참고 사항 Consumer •KCL 꼭 사용! • 워크로드를 모니터링하고 오토 스케일링 사용 Overall • 충분한 용량의 샤드 구성 • 안전한 서비스 또는 어플리케이션 종료 구성 • AWS best practices 따라 에러 처리(재시도) 및 예외 처리 구성
  • 41.
  • 42.
    주요 요약 Kinesis • Dataavailable for processing within seconds • Robust API, KCL, and Connector libraries AWS • Managed • Scalable • Cost effective • Quick to get up and running
  • 43.