41
© 2014 Amazon.com, Inc. and its affiliates. All rights reserved. May not be copied, modified, or distributed in whole or in part without the express consent of Amazon.com, Inc. GAM301 Real-Time Game Analytics with Amazon Kinesis, Amazon Redshift, and Amazon DynamoDB Amazon Web Services

Gam301 Real-Time Game Analytics with Amazon Redshift, Amazon Kinesis, and Amazon DynamoDB

Embed Size (px)

Citation preview

Page 1: Gam301 Real-Time Game Analytics with Amazon Redshift, Amazon Kinesis, and Amazon DynamoDB

© 2014 Amazon.com, Inc. and its affiliates. All rights reserved. May not be copied, modified, or distributed in whole or in part without the express consent of Amazon.com, Inc.

GAM301

Real-Time Game Analytics with Amazon Kinesis,

Amazon Redshift, and Amazon DynamoDB

Amazon Web Services

Page 2: Gam301 Real-Time Game Analytics with Amazon Redshift, Amazon Kinesis, and Amazon DynamoDB

Talk Outline

• Mobile Game Analytics – use case

• Decisions, Mistakes & Challenges

• Deep dive – Analytics Platform using AWS Tech

• Lessons we learned

Page 3: Gam301 Real-Time Game Analytics with Amazon Redshift, Amazon Kinesis, and Amazon DynamoDB

GREE Headquarters

Tokyo, Japan

GREE International,

Inc.

San Francisco, CA

GREE Canada

Vancouver, BC

QUICK FACTS

6Continents playing GREE games

1,882Employees Worldwide

13Games 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

Page 4: Gam301 Real-Time Game Analytics with Amazon Redshift, Amazon Kinesis, and Amazon DynamoDB

Success Factors in Mobile Gaming

• Great gameplay & mechanics

• Great content

• Effective engagement & retention

• Generate in-app purchases

….. keep adding new content, features

??

?

I know its a

great game.

Why is my

game not

successful

anymore?

It had good

KPIs initially.

Page 5: Gam301 Real-Time Game Analytics with Amazon Redshift, Amazon Kinesis, and Amazon DynamoDB

As a game developer ...

Why?

• Game not performing well

• Players not spending?

• Retention so poor?

How?

• Optimize game design

• Improve ARPDAU, %Spenders

• Improve Retention

You need – Game Analytics & Insights

Page 6: Gam301 Real-Time Game Analytics with Amazon Redshift, Amazon Kinesis, and Amazon DynamoDB

Analytics @ GREE

Ad Clicks

Downloads

Perf Data

Attribution

Campaign Performance

SC Balance

HC Balance

IAP

Player Targeting

Page 7: Gam301 Real-Time Game Analytics with Amazon Redshift, Amazon Kinesis, and Amazon DynamoDB

Data Collection

• Mobile Devices

• Game Servers

• Ad Networks

• Size of event ~ 1 KB

• 500M+ events/day

• 500G+/day & growing

• JSON format

Source of Data Data Size & Growth

Page 8: Gam301 Real-Time Game Analytics with Amazon Redshift, Amazon Kinesis, and Amazon DynamoDB

Database Schema

• Every game – database schema

• Each game event = table (e.g., battle_fight, iap)

• 40-50 tables per DB schema

• All game titles ~ 1000 tables in DW

Page 9: Gam301 Real-Time Game Analytics with Amazon Redshift, Amazon Kinesis, and Amazon DynamoDB

Key Requirements

• Data collection & streaming to database

• Zero data loss

• Zero data corruption

• Guaranteed data delivery

Page 10: Gam301 Real-Time Game Analytics with Amazon Redshift, Amazon Kinesis, and Amazon DynamoDB

History – Analytics Architecture

Page 11: Gam301 Real-Time Game Analytics with Amazon Redshift, Amazon Kinesis, and Amazon DynamoDB

Gen 1 – Analytics Platform

Analytics DB

Game DB

LAMP

Built on a LAMP Stack

Sharded DBs

Not scalable

Game

Servers

Page 12: Gam301 Real-Time Game Analytics with Amazon Redshift, Amazon Kinesis, and Amazon DynamoDB

Gen2 – Flume/MPP Data

Warehouse

Game DB

MPP Data WarehouseFlume

Collectors

Flume

Master

Consumer

Game

Servers

Page 13: Gam301 Real-Time Game Analytics with Amazon Redshift, Amazon Kinesis, and Amazon DynamoDB

In-house: Relay Engine

Game DB

Replicator

Amazon S3

DW

Relay Pipeline

Senders

Copiers

Game

Servers

Listeners

Cost of maintenance - HIGH

Page 14: Gam301 Real-Time Game Analytics with Amazon Redshift, Amazon Kinesis, and Amazon DynamoDB

Challenges

• Hard to maintain and scale

• Spike in Live Ops events can clog other events

• Difficult to add new sink

• Writes to DW impacted query performance for BI

users

• Poor data latency

Page 15: Gam301 Real-Time Game Analytics with Amazon Redshift, Amazon Kinesis, and Amazon DynamoDB

Key Requirements – the list grew

• Data collection &

streaming to database

• Zero data loss

• Zero data corruption

• Guaranteed data

delivery

• Near real-time data latency

• Real-time ad-hoc analysis

• Ease of adding consumers

• Managed Service

Page 16: Gam301 Real-Time Game Analytics with Amazon Redshift, Amazon Kinesis, and Amazon DynamoDB

New Analytics Architecture

Page 17: Gam301 Real-Time Game Analytics with Amazon Redshift, Amazon Kinesis, and Amazon DynamoDB

Start Simple

Ingest

• Kafka

• HTTP PUT

• Amazon Kinesis

Store

• HDFS

• Amazon S3

• Amazon Redshift

Analyze

Page 18: Gam301 Real-Time Game Analytics with Amazon Redshift, Amazon Kinesis, and Amazon DynamoDB

Producer & Data

Data

{"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”}

{"fight_time":"2014-10-29 00:11:59","attacker_id":"413142642356365377”, "attacker_clan_size":500,"attacker_level":270,"db":"mw_dw_ios","table":"battle_fight","uuid":"1414566719-p0oogk0bep","time_created":"2014-10-29 00:11:59"}

• PHP/Python Web Services

• Client side analytics SDK

Produce Send Consume Load

Page 19: Gam301 Real-Time Game Analytics with Amazon Redshift, Amazon Kinesis, and Amazon DynamoDB

Amazon Kinesis Sender

Produce Send Consume Load

Page 20: Gam301 Real-Time Game Analytics with Amazon Redshift, Amazon Kinesis, and Amazon DynamoDB

Sender

Sender

Worker

Kinesis

Stream

Shard 1

Shard 2

Shard 3

Shard n

Describe Stream

Sync Shards

Analytics

Files

Send

PutRecordCompress

Read Buffer

50KB

Page 21: Gam301 Real-Time Game Analytics with Amazon Redshift, Amazon Kinesis, and Amazon DynamoDB

Design Choices for Sender

• Single stream VS stream per game

• Batch VS Single Event

• Compressed VS Uncompressed

• PartitionKey VS ExplicitHashKey

Page 22: Gam301 Real-Time Game Analytics with Amazon Redshift, Amazon Kinesis, and Amazon DynamoDB

Sender Deployment

Elastic Load

Balancing

AMI

Amazon

EC2

Auto Scaling Group

Amazon

EBS Data

Volume

Pending: Wait

EC2 EBS Data

Volume

Amazon

S3

Sender

Scale

Out

Pending: Proceed

EC2 EBS Data

Volume

EC2

Auto Scaling Group

EBS Data

Volume

InService

Update

Terminating: Wait

EC2 EBS Data

Volume

Scale

InChecks

Terminating: Proceed

EC2 EBS Data

Volume

Terminated

Page 23: Gam301 Real-Time Game Analytics with Amazon Redshift, Amazon Kinesis, and Amazon DynamoDB

Consumer – S3 Store

Produce Send Consume Load

Page 24: Gam301 Real-Time Game Analytics with Amazon Redshift, Amazon Kinesis, and Amazon DynamoDB

Consumer – Amazon S3 Store

Kinesis

Stream

Shard 1

Shard 2

Shard n

S3File Metadata DB

Decompress De-Dupe

BufferTransformation

Validation Target Table

Compress

Size/

Timeout

Record

Consumer

Kinesis Client Library

Record Processor

Record Processor

Consumer

Kinesis Client Library

Record Processor

Auto Scaling Group

Page 25: Gam301 Real-Time Game Analytics with Amazon Redshift, Amazon Kinesis, and Amazon DynamoDB

Loading data into Amazon

Redshift

Produce Send Consume Load

Page 26: Gam301 Real-Time Game Analytics with Amazon Redshift, Amazon Kinesis, and Amazon DynamoDB

Loading data into Amazon Redshift

Amazon S3

File Metadata DB Amazon

Redshift

Update Status

Transaction

Create Manifest Execute COPY

Create Manifest Execute COPY

Create Manifest Execute COPY

Status

Page 27: Gam301 Real-Time Game Analytics with Amazon Redshift, Amazon Kinesis, and Amazon DynamoDB

Architecture – Simple Store

Produce Send Consume Load

Page 28: Gam301 Real-Time Game Analytics with Amazon Redshift, Amazon Kinesis, and Amazon DynamoDB

Architecture – Simple Store

S3

Amazon S3

Consumer

Game DB

Game

ServersKinesis

Amazon

Redshift

Amazon

Elastic

MapReduce

DSV

JSON

Page 29: Gam301 Real-Time Game Analytics with Amazon Redshift, Amazon Kinesis, and Amazon DynamoDB

Real-time Aggregates

Page 30: Gam301 Real-Time Game Analytics with Amazon Redshift, Amazon Kinesis, and Amazon DynamoDB

DynamoDB – Real-time Aggregates

Amazon

DynamoDB

DashboardConsumerKinesis

Page 31: Gam301 Real-Time Game Analytics with Amazon Redshift, Amazon Kinesis, and Amazon DynamoDB

Spark

Page 32: Gam301 Real-Time Game Analytics with Amazon Redshift, Amazon Kinesis, and Amazon DynamoDB

Spark – Real-time Analysis

Spark SQLSpark Streaming

SQLKinesis

Page 33: Gam301 Real-Time Game Analytics with Amazon Redshift, Amazon Kinesis, and Amazon DynamoDB

Final Architecture

Page 34: Gam301 Real-Time Game Analytics with Amazon Redshift, Amazon Kinesis, and Amazon DynamoDB

Amazon S3

Amazon

S3

Spark SQL

JDBC ServerSQL

Dashboard

Amazon

Redshift

Consumer

Amazon

EMR

Consumer

Game DB

Game

ServersKinesis

DynamoDB

DSV

JSON

Page 35: Gam301 Real-Time Game Analytics with Amazon Redshift, Amazon Kinesis, and Amazon DynamoDB

Lessons Learned

Page 36: Gam301 Real-Time Game Analytics with Amazon Redshift, Amazon Kinesis, and Amazon DynamoDB

Lessons Learned

Sender

• Decouple data generation from sending

• Batch and compress

• PutRecord HTTP:5XX can result in duplicates

• Monitor ProvisionedThroughputExceeded exception

Page 37: Gam301 Real-Time Game Analytics with Amazon Redshift, Amazon Kinesis, and Amazon DynamoDB

Lessons Learned (Cont.)

Consumer

• Use KCL

• Auto-scale and monitor load

Overall

• Provision enough shards

• Handle shutdown gracefully

• Follow AWS best practices for error retries and

exponential back-off

Page 38: Gam301 Real-Time Game Analytics with Amazon Redshift, Amazon Kinesis, and Amazon DynamoDB

Takeaway

Page 39: Gam301 Real-Time Game Analytics with Amazon Redshift, Amazon Kinesis, and Amazon DynamoDB

Takeaway

Kinesis

• Data available for processing within seconds

• Robust API, KCL, and Connector libraries

AWS

• Managed

• Scalable

• Cost effective

• Quick to get up and running

Page 40: Gam301 Real-Time Game Analytics with Amazon Redshift, Amazon Kinesis, and Amazon DynamoDB

Please give us your feedback on this session.

Complete session evaluations and earn re:Invent swag.

http://bit.ly/awsevals

Page 41: Gam301 Real-Time Game Analytics with Amazon Redshift, Amazon Kinesis, and Amazon DynamoDB

© 2014 Amazon.com, Inc. and its affiliates. All rights reserved. May not be copied, modified, or distributed in whole or in part without the express consent of Amazon.com, Inc.

자료내용등에대한문의사항이있으신경우 info-

[email protected]으로연락부탁드리겠습니다.

Amazon Web Services