Continuous Ops

Exploring the world of 'Infrastructure as Code'

AWS Summit Tokyo 2014: Amazon Kinesisを用いたリアルタイムのゲーム分析システムと、AWS ElasticBeanstalk&Amazon DynamoDB を活用したゲーム運営

Ripplationという会社の安藤さんと立本さんによるゲーム運営にAWSのマネージドサービスを活用する話です。 最近のゲーム界隈にうといのですが、「騎士とドラゴン」が代表的タイトルですかね。

とことん運用を楽にする側に振り切っているのは清々とします。

Kinesis – ElasticBeansTalk – S3の組み合わせ方がかなり独特で、二段階に処理を分けるというのはとてもおもしろいと思いました

  • いかにして最小人数でサーバー側の開発を行うか
  • 以下にしてサーバーコストを下げるか

  • スケール・耐障害の自動化

  • 監視システムも簡単にしたい

なので、ElasticBeansTalk + DynamoDBのみで構成することにした

AWSを使ってみてわかったこと

  • すぐ始められる
  • アプリをサーバーにデプロイするまでに流れを作るのが簡単
  • 1から整える必要がない
  • 思った以上に実用に耐えられる
  • ほとんど放置が可能: 最近サーバーをコンソールで調整したくらい

ElasticBeansTalkの注意点

  • デプロイ時に一瞬アクセスできないことがある: 気にせずデプロイしている。エラー処理はアプリケーション側で行っている
  • オートスケーリングの調整はきっちりしておく

DynamoDBの注意点

  • 社内にいるDB技術者の文句やいちゃもんに負けない 問題が出たら後付けで
  • バッチ処理をしっかり使う、リトライも行う
  • スループットの限界値は急激に変化させられない: 急激な書き込みは読み込みはできない
  • バックアップするかどうか リストアする場合ってどんな状況だろうか

汎用化なんて考えたらダメ

  • AWSを使い倒さないと真の良さは発揮されない
  • そんなにどれでも動く仕組みって重要なんでしょうか。

ログデータの収集・集計

  • 結局、最初はDynamoDBだけでなんとかした

KinesisとBigData

ビッグデータとはなにか

単体ではよくわからないデータこそがビッグデータ

達成課題:毎秒10万件のデータを収集する

Linux TCP 28000個ぐらいのポート TIMEWAIT 60sec 実測値への縫製係数: 0.6 1server 282 req/sec

チューニング後:

Linux TCP 64000 Port TIMEWAIT 10sec 1server 4000req/sec

26台あれば  3870x26=100620req/sec

ただ、これをどうやって集める? 一般的なサーバーでつくろうとするとdisaster recovery含めて大変

Kinesisならシャードを100個立てれば終了

Grasslandというツールを開発中: データを分析して

GrasslandでのKinesisの使いどころ

1 クライアントからはKinesisにデータを直接投げる 2 ElasticBeansTalkはS3にキャシュを保存 3 S3はcacheの解析リクエストをKinesisに返す 4 Kinesis –> EBT に解析リクエストを投げる 5 S3 –> EBT はキャッシュを返す 6 EBT –> S3 解析結果を渡す

セキュリティを担保できる工夫はいろいろできる

Kinesisは世界のデータを集めるように作られている