gumistudy#1 kvs 発表資料

29
ソーシャルアプリにおけるKVSの利用事例 株式会社gumi 堀内康弘

Upload: yasuhiro-horiuchi

Post on 04-Jul-2015

4.962 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: gumiStudy#1 kvs 発表資料

ソーシャルアプリにおけるKVSの利用事例

株式会社gumi堀内康弘

Page 2: gumiStudy#1 kvs 発表資料

株式会社gumi CTOTwitter: horiuchi10年くらいウェブアプリ作ってます。Perl 10年、Python 1年ゲームが好きです。モンハン3予約しました!

ランニング、筋トレにはまってます。

自己紹介

Page 3: gumiStudy#1 kvs 発表資料

会社紹介

35タイトル以上のアプリを開発・運用延べユーザ数10,000,000人多プラットフォーム展開mixi、モバゲ、GREE

ソーシャルゲームはもちろん、ソーシャルライフ分野のアプリも作ってます

Page 4: gumiStudy#1 kvs 発表資料

ソーシャルゲーム x ソーシャルライフ

ソーシャルライフ系

ソーシャルゲーム系

サポートツール系

・空飛ぶ →マイミク通

信簿 340万

Rekoo 650万 →サンシャイン牧場 460万Rakoo 380万 →みんなの農園 160万 →みんなの動物広場 140万

・DeNA →怪盗ロワイヤル 250万

・ ウノウ →まちつく 270万

・ ベクター 190万 →恋する私の王子様 150万

・ GPS連動アド ・ リワードプラス(アドウェイズ)

・ poncan(ドリコム)

・ Facebook connect

・ mixi connect ・ connect with

twitter ・ gree connect

ファンクラブ

同級生掲示板

卒業アルバム

同級生を探せ

幕末英雄伝キャバウォーズ刑事ハードボイルド現在開発中×2

占い診断系×40+

Page 5: gumiStudy#1 kvs 発表資料

ソーシャルライフ

ファンクラブ 220,000

同級生掲示板 520,000人

卒業アルバム おとなver. 300,000

同級生をさがせ! 120,000人

Page 6: gumiStudy#1 kvs 発表資料

占い、診断系アプリ

SM診断〜あなたの本性暴きます浮気性チェック!その愛本物?ニセモノ?

犬タイプvs猫タイプ草食系 vs 肉食系ザ★おバカ検定むっつり度ちぇ〜っ

く!!A型度判定〜本当にA型ですか?常識・非常識〜あなた常識人?KY診断〜空気読めてる?ナルシスト★診断モテ↑非モテ↓診断B型度判定〜ジーマーで型B

?じじばば検定〜若さ保ってる?フリ派?フラれ派?AB型度判定〜ABですが何か?

O型度判定〜う〜んO型かなぁ?2人のラブラブ度診断恋の成就度診断のだめカンタービレ進級試験初

級戦国雑学王決定戦★立志編

のだめマエストロコンクールノーマル?orアブノーマル?のだめカンタービレ進級試験中級のだめカンタービレ進級試験上級戦国クイズ王全国ランキング

合計 約600万ユーザー

Page 7: gumiStudy#1 kvs 発表資料

ソーシャルゲーム

2010年2月 幕末英雄伝 670,000人2010年3月 キャバウォーズ 1,320,000人2010年4月 刑事ハードボイルド 600,000人2010年5,6,7 月 多プラットフォーム展開2010年8 月 ハッピー☆モデル 70,000人

file:///home/pptfactory/temp/src/police/ryoma/static_police_gree/images/mobile/240/landing/header.gif

file:///home/pptfactory/temp/src/cabaret/ryoma/static_cabaret/images/mobile/240/caba_top_plus.gif

file:///home/pptfactory/temp/src/sweet/ryoma/static_sweet/images/mobile/240/logo.gif

Page 8: gumiStudy#1 kvs 発表資料

ソーシャルアプリの特徴

Page 9: gumiStudy#1 kvs 発表資料

従来のウェブアプリとほとんど変わりません

Page 10: gumiStudy#1 kvs 発表資料

ソーシャルアプリと従来のウェブアプリとの違い

やりとりする相手が違う。ユーザー認証の方法が違う。APIが用意されている。アクセス量が半端ない。データの更新頻度が高い(ゲーム)

Page 11: gumiStudy#1 kvs 発表資料

やりとりする相手が違う

相手はプロバイダ(mixi,モバゲ,GREE)

Page 12: gumiStudy#1 kvs 発表資料

ユーザー認証

Oauth signagureで身元保証QueryStringからユーザーID取得

opensocial_owner_id

GET /m/?opensocial_app_id=1234&opensocial_viewer_id=5678&opensocial_owner_id=5678

Page 13: gumiStudy#1 kvs 発表資料

APIが用意されている

PeopleAPIユーザー情報、友達情報を取得ActivityAPIユーザーの行動履歴を更新PaymentAPI課金を行う招待を送れる仕組み位置情報を送信する仕組みひと言を送信する仕組み

Page 14: gumiStudy#1 kvs 発表資料

膨大なアクセス量

リリース直後に数万人1ゲームで3000万PV/日

最初から負荷を考慮した設計が必要

Page 15: gumiStudy#1 kvs 発表資料

どこがボトルネックになるの?

Page 16: gumiStudy#1 kvs 発表資料

どこを考慮したらいいの?

ずばりDBです。

Page 17: gumiStudy#1 kvs 発表資料

なぜDBがボトルネックになるの?

Writeのスケールが難しいテーブル毎にDBを分けたりテーブル自体を分割したり

SQLによっては時間がかかるたくさんの行を一度に読むようなSQL大きいテーブル同士をjoinするようなSQL

Page 18: gumiStudy#1 kvs 発表資料

解決策は?

遅いクエリの見直し主キーによる参照を意識するManyToManyは基本使わないFilterもあまり使わないJoinもほとんど使わない

テーブル設計の見直し更新の多いカラムは別テーブルにする

Page 19: gumiStudy#1 kvs 発表資料

それでもだめなら

DBへのアクセス自体を減らす

Page 20: gumiStudy#1 kvs 発表資料

どうやってDBへのアクセスを減らすか?

そこで登場するのがKVSです

Page 21: gumiStudy#1 kvs 発表資料

gumiで活用しているKVS

Memcached (Readを減らす)オンメモリなハッシュテーブルスケーラブルサーバを再起動するとデータは消えるDjango標準機能で簡単に使える

TokyoTyrant (Read Writeを減らす)モダンなDBMでデータの永続性ありMySQLより高速に読み書きできる読み書き20000qpsくらい

Page 22: gumiStudy#1 kvs 発表資料

memcachedの使いどころ

毎回取得するようなモデルをキャッシュPlayerインスタンスをキャッシュ

リアルタイム性の低いページをまるごと@cache_pageデコレータ

2度押し対策の軽いセッション管理に

Page 23: gumiStudy#1 kvs 発表資料

キャッシュ実装例

def get_player(id):

"""

idからプレイヤーインスタンスを取得 """

path = "/player/"+str(id)

player = cache.get(path, None)

if player is None: # キャッシュに存在しない try:

player = Player.objects.get(id=id)

cache.set(path, player) # インスタンスをsetできる except Player.DoesNotExist:

player = None

return player

Page 24: gumiStudy#1 kvs 発表資料

TokyoTyrantの使いどころ

更新頻度の高いデータの管理プレイヤーの現在のパラメータ経験値、所持金

取得コストの高いSQLを発行するようなデータを管理する自分の近況一覧全国ランキング最大攻撃力貢ぎ物総額

Page 25: gumiStudy#1 kvs 発表資料

サーバ構成

Page 26: gumiStudy#1 kvs 発表資料

まとめ

memcached + TokyoTyrant

でDBのボトルネックをすっきり解消!

Page 27: gumiStudy#1 kvs 発表資料

それでもだめなら「okuyama」で

Page 28: gumiStudy#1 kvs 発表資料

ご静聴ありがとうございました。

Page 29: gumiStudy#1 kvs 発表資料

人材絶賛募集してます!Twitter: horiuchi

Mail: [email protected]