Agenda
• 실시간 데이터 분석
– 데이터 추출 및 저장
– 데이터 처리
• GREE International
– 게임 데이터 분석
– 데이터 분석 아키텍쳐
– 팁, 참고사항
• 주요 요약
실시간 데이터 분석이란?
실시간 데이터 추출
• 높은 확장성
• 데이터 안정성
• 리소스 유연성
• 동시 또는 여러 번의 데이터 읽기 가능
지속적인 데이터 처리
• 스트림 데이터의 로드 발란싱
• 가용성, 체크포인트 / 리플레이
• 리소스 유연성
• 다수의 어플리케이션의 병령 처리 가능
지속적인 데이터 흐름 및 처리
낮은 end-to-end 응답성
실시간 워크로드 지속
+
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
실시간 분석 방식
• 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 통합
Apache Storm: 기본 개념
• Streams: 순서에 제한 없는 데이터 tuples
• Spout: 스트림 소스
• Bolts :입력 스트림 처리 및 새로운 결과 스트림 생성
• Topologies : Spouts, Bolts 연계 구성
https://github.com/awslabs/kinesis-storm-spout
• 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 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
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 데이터 회손
• 쉽게 처리 프로세싱 추가
• 준 실시간이 분석
• 실시간 분석
• 관리 운영 최소화
데이터 생성 및 전송 시 고려할 점
• 단일 스트림 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