Advertisement

More Related Content

Slideshows for you(20)

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

Advertisement

More from Amazon Web Services Korea(20)

Recently uploaded(20)

Advertisement

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

  1. SEOUL © 2015, Amazon Web Services, Inc. or its affiliates. All rights reserved
  2. © 2015, Amazon Web Services, Inc. or its affiliates. All rights reserved AWS 로 게임 분석하기 김일호 - Solution Architect, Amazon Web Services
  3. Agenda • 실시간 데이터 분석 – 데이터 추출 및 저장 – 데이터 처리 • GREE International – 게임 데이터 분석 – 데이터 분석 아키텍쳐 – 팁, 참고사항 • 주요 요약
  4. 실시간 데이터 분석이란? 실시간 데이터 추출 • 높은 확장성 • 데이터 안정성 • 리소스 유연성 • 동시 또는 여러 번의 데이터 읽기 가능 지속적인 데이터 처리 • 스트림 데이터의 로드 발란싱 • 가용성, 체크포인트 / 리플레이 • 리소스 유연성 • 다수의 어플리케이션의 병령 처리 가능 지속적인 데이터 흐름 및 처리 낮은 end-to-end 응답성 실시간 워크로드 지속 +
  5. 데이터 추출
  6. Global top-10 foo-analysis.com 단순한 예제...
  7. Global top-10 (당연히) 워크로드 분산… foo-analysis.com
  8. Global top-10 Local top-10 Local top-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 My top-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 Shard N [Data Archive] [Metric Extraction] [Sliding Window Analysis] [Machine Learning] App. 1 App. 2 App. 3 App. 4 EMR Amazon Kinesis – 다양한 목적의 데이터 중개
  11. Kinesis – Stream and 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 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
  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 App Client EMRS3 KCL DynamoDB Redshift BI Tools KCL KCL
  25. • 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
  26. GREE 게임 데티어 분석
  27. 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
  28. Ad Clicks Downloads Perf Data Attribution Campaign Performance 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. Game DB Game Servers Kinesis Amazon S3 Amazon S3 Amazon Redshift S3 Consumer Amazon EMR DSV JSON 분석 아키텍쳐 Dashboard Real-time Stats Consumer ElastiCache (Redis)
  33. 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
  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 • Data available for processing within seconds • Robust API, KCL, and Connector libraries AWS • Managed • Scalable • Cost effective • Quick to get up and running
  43. SEOUL
Advertisement