DynamoDBを利用したKPI保存システム

gree_tech
gree_techgree_tech
DynamoDBを利用した
KPI保存システム
グリー株式会社 長谷川貴之
2016/01/25 VisualizationNight#1
本日の内容
• 自己紹介
• グリー内製の可視化システム
• DynamoDBを利用したKPI保存システム
2
自己紹介
• データエンジニアリングチーム
• Hadoopなどの分析基盤の運用
• ツールの開発,利用者のサポート
• 最近ではオンプレだけでなくAWSも利用
• Kinesis,EMRの検証をするメンバーも
3
グリー内製の可視化システム
4
注) これから出てくる値はサンプルデータです
可視化システム
• NativeGame KPIレポート
• 決められた数値指標のみ表示
• プロダクト間の比較が容易
• ユーザーテキストダッシュボード
• テキスト閲覧に特化したシステム
• ユーザーのアンケート,問い合わせなどが見れる
• BIツール(Macaron)
• プロダクト運営者が自由に数値指標を作成できる
• スケジューリングの機能を備える
5
(一部のシステムの紹介です)
NativeGame KPIレポート
6
NativeGame KPIレポート
Rails + RDS(MySQL) + TD or Hadoop
7
Apache®, Apache Hadoop, Hadoop®(http://hadoop.apache.org/), and the yellow elephant logo are either registered trademarks or
trademarks of the Apache Software Foundation(http://www.apache.org/) in the United States and/or other countries.
Treasure Data Inc.(https://www.treasuredata.com/)
ユーザーテキストダッシュボード
8
ユーザーテキストダッシュボード
Django + Presto + Hadoop
Django
9
BIツール(Macaron)
10
BIツール(旧Macaron)
Rails + HBase or Hive or Presto + Hadoop
11
BIツール(新Macaron)
Rails + HBase or Hive or Presto + Hadoop
12
DynamoDBへ!
ここからの内容
• Macaronの機能
• 既存ストレージ(HBase, OpenTSDB)
• リプレイスの背景 / 検討
• 設計 / 実装
13
Macaronの機能
• HiveやPrestoにクエリの発行する
• クエリの結果を時系列データベースに保存
• with スケジューリング
• セグメント毎のグラフ描画
• その他
14
Macaronの機能 / クエリの発行
15
Macaronの機能 / データの保存
定期実行した結果を保存する
16
Macaronの機能 / グラフの描画
17
BIツール(Macaron)
Rails + DynamoDB or Hive or Presto + Hadoop
• HBase(OpenTSDB)からDynamoDBへ
18
そもそもOpenTSDBって?
• HBaseをストレージとした時系列データベース
• オープンソース
• RRDToolのように値を丸めない
• システムのメトリクスなど大規模データが得意
• 米Yahoo!では15台のサーバーで毎秒28万件のWrite
をさばく
• http://www.slideshare.net/HBaseCon/ecosystem-session-6/6
19
OpenTSDBのメタデータ
• DataPoints
(time, value)
• Metrics
デバイス別DAU
• Tags
device=fp, device=sp
• Metrics + Tags = TimeSeries
20ref. OpenTSDB HBaseCon http://opentsdb.net/misc/opentsdb-hbasecon.pdf
リプレイスした背景
• サーバーの移設の必要があった
• HBaseクラスタを再構築?
• 新しく作り直す?
• 期間は7月末 ~ 10月
• 決められた期限,求められる費用削減
21
リプレイスした背景
• 現状のシステムが高機能すぎる
• 描画機能,集計関数などは利用していない
• HBaseで持つほどのデータ規模ではない
• 少しカスタマイズする必要があった
• 日本語に対応させるためにパッチを当てた
• メトリックの操作が意外と面倒
22
AWSを前提としたリプレイス案
• HBase on EMR
• 常時稼働させておくとコストが高い
• InfluxDB on EC2
• 検証期間がとれず運用面で信頼しきれなかった
• MySQL(RDS)
• 実績があり,値段も予想できる
• DynamoDB
• 詳しくないが,データはソートできるらしい
23
DynamoDBに関する調査
• スループット課金である
• 一度に大きなデータを取得,保存は苦手
• テーブルごとに課金される
• 10Gごとにパーティションが分割される
• 保存は安いがスループットが分散する
24
あれ、向いてない…?
25
Unit消費について調査する
• GemItem, BatchGetItem
• どんなに小さいrecordでも,1 record = 1 unit
• 1日1recordだとすると,3年分取得で1095unit
• Query, Scan
• 累計サイズを使用してスループットを計算
• 1record = 1unitではない
• 1recordが1KBとすると,3年分取得で273unit
26
Unit消費について調査する
• GemItem, BatchGetItem
• どんなに小さいrecordでも,1 record = 1 unit
• 1日1recordだとすると,3年分取得で1095unit
• Query, Scan
• 累計サイズを使用してスループットを計算
• 1record = 1unitではない
• 1recordが1KBとすると,3年分取得で273unit
27
データ取得はQueryなので安心
ユースケースを確認する
• 1ページにいくつかのKPI指標を配置
• 期間は固定,dailyならば90日程度
• 指標の更新頻度は高くない
• しかし,過去分を1度に入れることはある
• 時間帯によって見る見ないがはっきりする
• 夜間や土日はほとんど見られない
28
工夫する余地がありそう…!
29
スループットを下げる取り組み
• 読み込みスループットの削減
• 固定された期間のデータはキャッシュへ
• 時間帯に合わせた動的スループット変更
• 書き込みスループットの削減
• 急な書き込み増に備えキューを利用
30
キャッシュを活用する
• ElastiCache(Redis)を活用する
• 直近のデータ(ex. 90日)をキャシュする
• 基本的に過去の施策を振り返る場合のみ
DynamoDBにアクセスがいく
• ElastiCacheは安いのでお得
• 直近のデータのみならt2.microでも可
31
キューを活用する
• SQSを利用する
• 書き込みが増えて失敗してもリトライできる
• 低いスループットを指定してもデータのロスト
を防ぐことができる
• 値段はほぼ無料
32
スループットを変動させる
33
SumoLogicで可視化したアクセス数 (一部)
明らかに夜間にアクセスがなくもったいない!
例) スループットを変動させる
一定に保った場合
終日(read: 1000)
• 0.00742 * 24 * 30 * 1000 / 50 = $107
読み込みスループットを変動させた場合
平日&日中(read: 1000),夜間or土日(read: 500)
• 0.00742 * 24 * 22 * (1000+500) / 2 / 50 = $59
• 0.00742 * 24 * 8 * 500 / 50 = $14
• $59 + $14 = $73
34
この例では,スループットの変動で32%オフに!
DynamoDBでいけるのでは…
35
サーバー構成
36
実装
• Scala,フレームワークはSprayを利用
• AWSのClientはJavaが一番充実している
• AWSロックインされてもローカルで開発可能
• DynamoDB → DynamoDBLocal
• SQS → ElasticMQ
37
運用
• cronでスループットを変更
• 朝9時 ~ 夜9時でスループットをあげる
• ログはSumoLogicで管理してアクセス数の確認
• デプロイはCodeDeployで
• ときどきagentのプロセスがdownする…!!
38
まとめ
• グリーの可視化システムについて紹介した
• 役割によってそれぞれ存在する
• HBase(OpenTSDB)からDynamoDBへ
• スループットの変動で値段を抑える
• ElastiCacheやSQSもコストダウンに貢献
39
Happy Hacking :)
1 of 40

More Related Content

What's hot(20)

Rds徹底入門Rds徹底入門
Rds徹底入門
Junpei Nakada11.4K views
RDS(MySQL)の利用と注意点RDS(MySQL)の利用と注意点
RDS(MySQL)の利用と注意点
Hiroyasu Suzuki6K views
5分で武装 ~Azure Stack編~5分で武装 ~Azure Stack編~
5分で武装 ~Azure Stack編~
Takashi Ushigami566 views
2016 06-30-deep-learning-archi2016 06-30-deep-learning-archi
2016 06-30-deep-learning-archi
Daisuke Nagao938 views
Scaling MongoDB on AWSScaling MongoDB on AWS
Scaling MongoDB on AWS
Yasuhiro Matsuo3.8K views
Couchbase introduction-20150611Couchbase introduction-20150611
Couchbase introduction-20150611
Couchbase Japan KK6.9K views
DynamoDBを導入した話DynamoDBを導入した話
DynamoDBを導入した話
dcubeio10.9K views
AWSのNoSQL入門AWSのNoSQL入門
AWSのNoSQL入門
Akihiro Kuwano13.1K views

Viewers also liked(20)

RPKI勉強会/RPKIユーザBoFRPKI勉強会/RPKIユーザBoF
RPKI勉強会/RPKIユーザBoF
gree_tech2.5K views
Prometheus on AWSPrometheus on AWS
Prometheus on AWS
Mitsuhiro Tanda13.3K views
AWSでのビッグデータ分析AWSでのビッグデータ分析
AWSでのビッグデータ分析
Amazon Web Services Japan23.8K views
AWS Black Belt Tech シリーズ 2015 - Amazon KinesisAWS Black Belt Tech シリーズ 2015 - Amazon Kinesis
AWS Black Belt Tech シリーズ 2015 - Amazon Kinesis
Amazon Web Services Japan23.7K views
AWS Black Belt Online Seminar 2016 Amazon KinesisAWS Black Belt Online Seminar 2016 Amazon Kinesis
AWS Black Belt Online Seminar 2016 Amazon Kinesis
Amazon Web Services Japan12.7K views

Similar to DynamoDBを利用したKPI保存システム(20)

初心者向け負荷軽減のはなし初心者向け負荷軽減のはなし
初心者向け負荷軽減のはなし
Oonishi Takaaki11.6K views
JAWS DAYS 2015JAWS DAYS 2015
JAWS DAYS 2015
陽平 山口9K views
クラウド上のデータ活用デザインパターンクラウド上のデータ活用デザインパターン
クラウド上のデータ活用デザインパターン
Amazon Web Services Japan2.3K views
Amazon Web Services 最新事例集Amazon Web Services 最新事例集
Amazon Web Services 最新事例集
SORACOM, INC2.6K views
JAWS re:Mote 2015 NagoyaJAWS re:Mote 2015 Nagoya
JAWS re:Mote 2015 Nagoya
陽平 山口2K views
AWS Blackbelt 2015シリーズ RDSAWS Blackbelt 2015シリーズ RDS
AWS Blackbelt 2015シリーズ RDS
Amazon Web Services Japan16.8K views
JAWS DAYS 2022JAWS DAYS 2022
JAWS DAYS 2022
陽平 山口79 views

More from gree_tech(20)

海外展開と負荷試験海外展開と負荷試験
海外展開と負荷試験
gree_tech593 views

DynamoDBを利用したKPI保存システム