狠狠撸
Submit Search
大规模ソーシャルゲームを支える技术~笔贬笔+惭测厂蚕尝を使った高负荷対策~
104 likes
68,575 views
infinite_loop
2012年のオープンソースカンファレンス北海道(翱厂颁-诲辞)でセミナー発表した际に使用したスライド资料です。
Technology
Read more
1 of 35
Download now
Downloaded 375 times
1
2
3
4
5
6
7
8
9
10
11
12
Most read
13
14
15
16
17
18
19
20
21
22
23
24
25
Most read
26
27
28
29
Most read
30
31
32
33
34
35
More Related Content
What's hot
(20)
PDF
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
Takuto Wada
?
PDF
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
Mikiya Okuno
?
PDF
アーキテクチャから理解する笔辞蝉迟驳谤别厂蚕尝のレプリケーション
Masahiko Sawada
?
PDF
大规模ソーシャルゲーム开発から学んだ笔贬笔&惭测厂蚕尝実践テクニック
infinite_loop
?
PPTX
Apache Avro vs Protocol Buffers
Seiya Mizuno
?
PDF
笔贬笔から驳辞への移行で分かったこと
gree_tech
?
PDF
コンテナの作り方「顿辞肠办别谤は里方で何をしているのか?」
Masahito Zembutsu
?
PDF
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
Takuto Wada
?
PDF
イミュータブルデータモデル(入门编)
Yoshitaka Kawashima
?
PDF
笔辞蝉迟驳谤别厂蚕尝アンチハ?ターン
Soudai Sone
?
PDF
マイクロサービス 4つの分割アプローチ
増田 亨
?
PDF
Where狙いのキー、order by狙いのキー
yoku0825
?
PPTX
SPAセキュリティ入門~PHP Conference Japan 2021
Hiroshi Tokumaru
?
PPTX
搁别诲颈蝉の特徴と活用方法について
Yuji Otani
?
PPTX
ネットストーカー御用达翱厂滨狈罢ツール叠濒补肠办叠颈谤诲を触ってみた.辫辫迟虫
Shota Shinogi
?
PDF
あなたの知らない笔辞蝉迟驳谤别厂蚕尝监视の世界
Yoshinori Nakanishi
?
PDF
サーハ?ー未経験者か?ソーシャルケ?ームを通して知ったサーハ?ーの事
Manabu Koga
?
PDF
笔贬笔+惭测厂蚕尝を使ったスケーラブルなソーシャルゲーム开発
infinite_loop
?
PDF
例外设计における大罪
Takuto Wada
?
PPTX
世界一わかりやすいClean Architecture
Atsushi Nakamura
?
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
Takuto Wada
?
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
Mikiya Okuno
?
アーキテクチャから理解する笔辞蝉迟驳谤别厂蚕尝のレプリケーション
Masahiko Sawada
?
大规模ソーシャルゲーム开発から学んだ笔贬笔&惭测厂蚕尝実践テクニック
infinite_loop
?
Apache Avro vs Protocol Buffers
Seiya Mizuno
?
笔贬笔から驳辞への移行で分かったこと
gree_tech
?
コンテナの作り方「顿辞肠办别谤は里方で何をしているのか?」
Masahito Zembutsu
?
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
Takuto Wada
?
イミュータブルデータモデル(入门编)
Yoshitaka Kawashima
?
笔辞蝉迟驳谤别厂蚕尝アンチハ?ターン
Soudai Sone
?
マイクロサービス 4つの分割アプローチ
増田 亨
?
Where狙いのキー、order by狙いのキー
yoku0825
?
SPAセキュリティ入門~PHP Conference Japan 2021
Hiroshi Tokumaru
?
搁别诲颈蝉の特徴と活用方法について
Yuji Otani
?
ネットストーカー御用达翱厂滨狈罢ツール叠濒补肠办叠颈谤诲を触ってみた.辫辫迟虫
Shota Shinogi
?
あなたの知らない笔辞蝉迟驳谤别厂蚕尝监视の世界
Yoshinori Nakanishi
?
サーハ?ー未経験者か?ソーシャルケ?ームを通して知ったサーハ?ーの事
Manabu Koga
?
笔贬笔+惭测厂蚕尝を使ったスケーラブルなソーシャルゲーム开発
infinite_loop
?
例外设计における大罪
Takuto Wada
?
世界一わかりやすいClean Architecture
Atsushi Nakamura
?
Similar to 大规模ソーシャルゲームを支える技术~笔贬笔+惭测厂蚕尝を使った高负荷対策~
(20)
PDF
地方公司がソーシャルゲーム开発を成功させるための10のポイント
Kentaro Matsui
?
PDF
闯补惫补て?1から10まて?书いた话(蝉补苍颈迟颈锄别诲)
Tokuhiro Matsuno
?
PDF
.NET Coreから概観する.NETのOSSへの取り組み
Kouji Matsui
?
PDF
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
Hiroh Satoh
?
PDF
DeNAインフラの今とこれから - 今編 -
Tomoya Kabe
?
PDF
OSC福岡 20111203
Hiroshi Bunya
?
PPTX
Firebug×smart release20120904
Masayuki Abe
?
PPT
2006-04-22 CLR/H #14 .NET and open source
Yoshiyuki Nakamura
?
PDF
顿尝搁言语による厂颈濒惫别谤濒颈驳丑迟プログラミング
terurou
?
PDF
密着!わたしのコンソールアフ?リ开発环境
Fumihito Yokoyama
?
PDF
デブサミ2013【15-贰-2】搁耻产测开発者のみなさん、尘谤耻产测で楽しく快适な组み込みアプリ开発を始めませんか?
Developers Summit
?
PDF
ET2014資料: mruby プログラム言語Rubyによる組込みソト開発
Kazuaki Tanaka
?
PDF
骋颁厂アジャイル开発を使ったゲームの作り方
Hiroyuki Tanaka
?
PDF
Osc2008 Opensuse Moonlinx
Kazuhisa Hara
?
PDF
Scrum alliance regional gathering tokyo 2013 pub
グロースエクスパートナーズ株式会社/Growth xPartners Incorporated.
?
PDF
テスト駆动で行うネットワーク自动化のすすめ
kinunori
?
PDF
20230105_TITECH_lecture_ishizaki_public.pdf
Kazuaki Ishizaki
?
PDF
セ?ロからのフ?ロク?ラミンク?Rails講座 Codeanywhere版
DIVE INTO CODE Corp.
?
PDF
PHPアプリの品質を(ある程度)保つために出来る事 ?組織編?
Katsuhiro Miura
?
PPTX
ななめ45°から见た闯补惫补翱苍别
AdvancedTechNight
?
地方公司がソーシャルゲーム开発を成功させるための10のポイント
Kentaro Matsui
?
闯补惫补て?1から10まて?书いた话(蝉补苍颈迟颈锄别诲)
Tokuhiro Matsuno
?
.NET Coreから概観する.NETのOSSへの取り組み
Kouji Matsui
?
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
Hiroh Satoh
?
DeNAインフラの今とこれから - 今編 -
Tomoya Kabe
?
OSC福岡 20111203
Hiroshi Bunya
?
Firebug×smart release20120904
Masayuki Abe
?
2006-04-22 CLR/H #14 .NET and open source
Yoshiyuki Nakamura
?
顿尝搁言语による厂颈濒惫别谤濒颈驳丑迟プログラミング
terurou
?
密着!わたしのコンソールアフ?リ开発环境
Fumihito Yokoyama
?
デブサミ2013【15-贰-2】搁耻产测开発者のみなさん、尘谤耻产测で楽しく快适な组み込みアプリ开発を始めませんか?
Developers Summit
?
ET2014資料: mruby プログラム言語Rubyによる組込みソト開発
Kazuaki Tanaka
?
骋颁厂アジャイル开発を使ったゲームの作り方
Hiroyuki Tanaka
?
Osc2008 Opensuse Moonlinx
Kazuhisa Hara
?
Scrum alliance regional gathering tokyo 2013 pub
グロースエクスパートナーズ株式会社/Growth xPartners Incorporated.
?
テスト駆动で行うネットワーク自动化のすすめ
kinunori
?
20230105_TITECH_lecture_ishizaki_public.pdf
Kazuaki Ishizaki
?
セ?ロからのフ?ロク?ラミンク?Rails講座 Codeanywhere版
DIVE INTO CODE Corp.
?
PHPアプリの品質を(ある程度)保つために出来る事 ?組織編?
Katsuhiro Miura
?
ななめ45°から见た闯补惫补翱苍别
AdvancedTechNight
?
Ad
More from infinite_loop
(20)
PDF
颁丑补迟骋笔罢触ってみた
infinite_loop
?
PDF
社内ソフトスキルを考える
infinite_loop
?
PDF
3Dプリンタって いいね
infinite_loop
?
PDF
痴搁颁丑补迟でお酒が注げる饮み物アセットの绍介
infinite_loop
?
PDF
アニメーションとスキニングを叠耻谤蝉迟で独自実装する.辫诲蹿
infinite_loop
?
PDF
I ? Virtual Machines 仮想環境をより便利に使うツールたち
infinite_loop
?
PDF
500万行の笔贬笔プロジェクトにおけるログ出力の歩み
infinite_loop
?
PDF
础顿搁という考えを取り入れてみて
infinite_loop
?
PDF
リファクタリングで実装が○○分短缩した话
infinite_loop
?
PDF
ゲームのインフラを础飞蝉で実戦迟颈辫蝉全て见せます
infinite_loop
?
PDF
楽しいVR空間を作る技術と支える技術 #osc19do
infinite_loop
?
PDF
Start rl with_unity_machine_learning_agents
infinite_loop
?
PDF
UniRx の1歩目
infinite_loop
?
PDF
がんばれ PHP Fiber
infinite_loop
?
PDF
心に残った名前ランキング
infinite_loop
?
PDF
プログラムと名前にまつわる座谈会
infinite_loop
?
PDF
名は体を表していますか
infinite_loop
?
PDF
名前の力
infinite_loop
?
PDF
大切な名前摆滨苍迟谤辞闭公开版
infinite_loop
?
PDF
闯耻辫测迟别谤狈辞迟别产辞辞办と惭测厂蚕尝でゼロからはじめるデータサイエンス
infinite_loop
?
颁丑补迟骋笔罢触ってみた
infinite_loop
?
社内ソフトスキルを考える
infinite_loop
?
3Dプリンタって いいね
infinite_loop
?
痴搁颁丑补迟でお酒が注げる饮み物アセットの绍介
infinite_loop
?
アニメーションとスキニングを叠耻谤蝉迟で独自実装する.辫诲蹿
infinite_loop
?
I ? Virtual Machines 仮想環境をより便利に使うツールたち
infinite_loop
?
500万行の笔贬笔プロジェクトにおけるログ出力の歩み
infinite_loop
?
础顿搁という考えを取り入れてみて
infinite_loop
?
リファクタリングで実装が○○分短缩した话
infinite_loop
?
ゲームのインフラを础飞蝉で実戦迟颈辫蝉全て见せます
infinite_loop
?
楽しいVR空間を作る技術と支える技術 #osc19do
infinite_loop
?
Start rl with_unity_machine_learning_agents
infinite_loop
?
UniRx の1歩目
infinite_loop
?
がんばれ PHP Fiber
infinite_loop
?
心に残った名前ランキング
infinite_loop
?
プログラムと名前にまつわる座谈会
infinite_loop
?
名は体を表していますか
infinite_loop
?
名前の力
infinite_loop
?
大切な名前摆滨苍迟谤辞闭公开版
infinite_loop
?
闯耻辫测迟别谤狈辞迟别产辞辞办と惭测厂蚕尝でゼロからはじめるデータサイエンス
infinite_loop
?
Ad
Recently uploaded
(9)
PPTX
色について.pptx .
iPride Co., Ltd.
?
PDF
Forguncy 10 製品概要資料 - ノーコードWebアプリ開発プラットフォーム
フォーガンシー
?
PPTX
勉強会_ターミナルコマント?入力迅速化_20250620. pptx. .
iPride Co., Ltd.
?
PDF
安尾 萌, 北村 茂生, 松下 光範. 災害発生時における被害状況把握を目的とした情報共有システムの基礎検討, 電子情報通信学会HCGシンポジウム2018...
Matsushita Laboratory
?
PDF
安尾 萌, 松下 光範. 環境馴致を計量可能にするための試み,人工知能学会第4回仕掛学研究会, 2018.
Matsushita Laboratory
?
PDF
安尾 萌, 藤代 裕之, 松下 光範. 協調的情報トリアージにおけるコミュニケーションの影響についての検討, 第11回データ工学と情報マネジメントに関する...
Matsushita Laboratory
?
PPTX
Vibe Codingを始めよう ?Cursorを例に、ノーコードでのプログラミング体験?
iPride Co., Ltd.
?
PDF
論文紹介:Unbiasing through Textual Descriptions: Mitigating Representation Bias i...
Toru Tamaki
?
PDF
論文紹介:AutoPrompt: Eliciting Knowledge from Language Models with Automatically ...
Toru Tamaki
?
色について.pptx .
iPride Co., Ltd.
?
Forguncy 10 製品概要資料 - ノーコードWebアプリ開発プラットフォーム
フォーガンシー
?
勉強会_ターミナルコマント?入力迅速化_20250620. pptx. .
iPride Co., Ltd.
?
安尾 萌, 北村 茂生, 松下 光範. 災害発生時における被害状況把握を目的とした情報共有システムの基礎検討, 電子情報通信学会HCGシンポジウム2018...
Matsushita Laboratory
?
安尾 萌, 松下 光範. 環境馴致を計量可能にするための試み,人工知能学会第4回仕掛学研究会, 2018.
Matsushita Laboratory
?
安尾 萌, 藤代 裕之, 松下 光範. 協調的情報トリアージにおけるコミュニケーションの影響についての検討, 第11回データ工学と情報マネジメントに関する...
Matsushita Laboratory
?
Vibe Codingを始めよう ?Cursorを例に、ノーコードでのプログラミング体験?
iPride Co., Ltd.
?
論文紹介:Unbiasing through Textual Descriptions: Mitigating Representation Bias i...
Toru Tamaki
?
論文紹介:AutoPrompt: Eliciting Knowledge from Language Models with Automatically ...
Toru Tamaki
?
大规模ソーシャルゲームを支える技术~笔贬笔+惭测厂蚕尝を使った高负荷対策~
1.
表紙 大規模ソーシャルゲームを支える技術
2.
※ご注意※ 表紙のイメージはパロディです 本発表は、技術評論社さんの
「○○を支える技術」シリーズとは ?切関係ありません? m(_ _)m 新刊のMobageを支える技術 ?ソーシャルゲームの舞台裏? とても楽しみにしています
3.
自己紹介(1) 松井 健太郎
札幌出身、札幌在住 ke-tai.org 管理? コーラとバイクツーリングが好き 株式会社インフィニットループ代表
4.
自己紹介(2) 株式会社インフィニットループ 北海道札幌市のソフトウェア開発会社
開発実績(主にサーバサイドを担当) ?ブラウザ三国志(2009) ?英雄クエスト(2010) ?Lord of Knights(2012) ?クイーンズブレイド THE CONQUEST (2012) ※プログラム開発のみを担当しており、企画?運営は?っておりません
5.
Vim検定 先日「Vim検定」をリリースしました Vim?がぐんぐんと上昇してvimrcも?くなる :helpに変わる革新的なVimの学習手段 ※収益の一部(今のところ全部)は、ウガンダの恵まれない子供たちの援助に使用させていただいております
6.
PHP検定 全国1000万人のPHPerのために開発 PHP?がぐんぐんと上昇してphp.iniも?くなる(?) www.php.net/manual/ja/ に代わる革新的なPHPの学習手段 iPhone/Android両対応
近日公开予定!
7.
あいえるたん作りました インフィニットループのマスコットキャラクター 「あいえるたん」を作りました。
8.
本日の内容 最近のソーシャルゲーム開発事情について インフラについて
言語やフレームワークについて 負荷対策について(Web編) 負荷対策について(DB編) 負荷テストについて 参考にしている情報について まとめ
9.
今回は、 ソーシャルゲーム開発で よく聞かれる質問を、 QA形式でまとめてみました
10.
???
一番よく闻かれる质问
11.
Q. で、最近どうなの??
12.
Q. で、最近どうなの??(1) A. 以前と比べるといろいろ起きているかも? ソーシャルゲームがニュースで話題になることが増えた →
ドリランド増殖およびそれに付随するRMT問題 → コンプガチャ騒動 → なんだか世間の風当たりが強くなった → 後ろめたいものを作っているつもりはない → エンジニアとしては技術に集中したい 実際の影響は、今のところ無い → 特に自分の周りに関してはあまり影響が無いようだ → ただし周りの全然ソーシャルゲームに興味がなかった人までが、 ?「大丈夫?」と聞いてくるという影響が
13.
Q. で、最近どうなの??(2) 開発者から?た最近のソーシャルゲーム開発 スマホが主戦場になってきている → ネイティブアプリはもちろん、Mobage?GREEも →
ガラケー界隈は少し落ち着いて来た印象 → PC向けのゲーム(主にFlashを使用)は安定した需要 やっぱり全然人は足りていない → クライアント?サーバ?インフラなど全てが足りない → DBA(DataBase Administrator)が重宝される → HTML5+JSエンジニアのニーズが増えそう → とはいえ二極化が始まり、なんちゃっての業者/エンジニアは ? そろそろ淘汰されはじめるかも
14.
Q. で、最近どうなの??(3) 少しずつ変わっていくソーシャルゲーム開発 役割の変化 → 開発規模の拡大に伴いエンジニア求められるものも変わってきた →
役割分担の明確化(エンジニア≠企画、餅は餅屋に、歴史は繰り返す) 求められる能? → 継戦能?(続く運営?アップデート、終わりがない) → 情報の横への共有化、他者/他社への展開能? → 安定したリソース提供、?期を?越した教育スキームの確? → 海外展開能? ソーシャルゲーム以外への応用も → 高負荷Webサービスへの回帰、ゲーミフィケーションへの応用 → 従来のコンシューマーゲームのネット化とそのバックエンド開発
15.
Q. インフラは ? どうしていますか?
16.
Q. インフラはどうしていますか?(1) A. 最近では国内のクラウドサービスを利?しています GMOクラウドを使うことが多いです、あとはAWS (ステマじゃないです) 【インフラ選びは非常に大事!!】 こんなポイントを?て選んでいます →
コストや安定度(障害履歴)は当然?る → 共有LBがあり、それが強?であること → インスタンスの追加が容易で速いこと(電話やメールとかは論外) → ディスクへのI/Oが速く安定していること → ?価でも強?なスペックのインスタンスが?意されている、 ? または物理マシンとの併?が可能(最後の?段的な使い?)
17.
Q. インフラはどうしていますか?(2) サーバ構成について?下記のような構成です(どの案件でも大体同じ)
www: Apache2.2系 PHP5.3系+APC DB: MySQL5.5系 + MHA KVS: memcached, KyotoTycoon その他: rsyslog, cacti, MyDNS
18.
Q. 言語やフレームワークは ? 何を使っていますか?
19.
Q. 言語やフレームワークは何をつかっていますか A. 言語は主にPHPを使っていますが、
何でもいいと思います。フレームワークは自作です 開発言語 → PHP, Perl, Rubyあたりをよく聞く → 得意な言語でよいと思うが、開発リソースの補充や、 ? 新?教育が容易な?語が向いている フレームワーク → 自作フレームワークを使っている → 以前はあえてのベタ書きだったが、開発効率や再利?性など ? の?からフレームワークを作成し利?するように → symfonyなどの既存フレームワークを改造して使っている ? などの話しも聞くが、最終的には魔改造されているようだ
20.
Q. 負荷テストは ? どうしていますか?
21.
Q. 負荷テストはどうしていますか?(1) A. JMeterを使ってやっています まずはテストプレイなどから数値目標を?てる ?予想される同時接続数 ?1ユーザが1プレイで操作する時間 ?1ユーザが1分間に?うリクエストの数 【例】 同時接続数:
10000人(同時接続数とは1時間で接続があったユニークユーザ数とする) 1ユーザが操作する時間: 10分操作し続けて離脱と想定 1ユーザが1分間に?う平均リクエスト数: 5回 → 10分間の同時接続ユーザ数: 10000 / 6 = 1667ユーザ ?→ 1分間にリクエストされる回数: 1667 * 5 = 8335回 ??→ 1秒間にリクエストされる回数: 8335 / 60 = 139回 =?平均「139リクエスト/秒」を満たせればよい
22.
Q. 負荷テストはどうしていますか?(2) JMeterでシナリオを作る ?なるべく実際の操作に近いシナリオにする ?作成の手間がかかりすぎないようにする ?全部をシナリオに?れるのは無理なので重い処理ランキングを元に、 ?利?頻度と処理の重さを考慮して配分する クラウド上にJMeterクライアントを複数台?意して??実? 想定した数値目標をクリアできるかを確かめる ダメならチューニング?測定を繰り返す
23.
Q. 負荷対策は ? どうしていますか?
24.
Q. 負荷対策はどうしていますか?(1) A. 負荷対策にも色々あるので順に説明します 大きく二つに分けて対策 ?→
共通部分(フレームワーク)の高速化 ?→ 個別ページやAPIの高速化 共通部分はあらゆる処理で呼ばれることになる つまり1ms早くなれば、1000リクエストなら1000倍違う 費用対効果が高い共通部分を優先して対処し、 その後に個別のプログラムを対処していく
25.
Q. 負荷対策はどうしていますか?(2) 実際に使われている負荷対策チェックリスト 【共通処理編】 (1) 共通処理内で何をしているかを全て把握しているか →
どういう処理が?われるか、SQLは何回流れているか、などを完全に把握すること → 共通部分に処理を?すときは、かならずチーム内で許諾を取ること (2) そもそも、その処理は本当に必要なのか → 最も効果的な負荷対策は、処理の速度を速めるより処理?体を無くすことである → 特にクライアント - サーバ型のアプリの場合は、相当処理が削れる → クライアント側でキャッシュや処理できるような処理がないか?直す (3) キャッシュはできないか → APCキャッシュ > memcache >>>>> MySQL の順で速い (APCはWebサーバ単位でのキャッシュであることに注意) → 共通処理内では、SQL実?回数がゼロが望ましい
26.
Q. 負荷対策はどうしていますか?(3) (4) 無駄なものの発? →
無駄なrequireを潰すにはオートロードの導入が楽 → XHProfのcallgraphでチェック → Jenkinsや自作スクリプトで、 ? 無駄な定数や使われていないメソッドなどを掃除 (5) その他注意点 → ロガーやエラーハンドラなど、思わぬところがネックになることもあるので、 ? 呼ばれる回数が多いものは、必ずチェック&チューニングすること → $_SESSIONの利?は最低限に留めること
27.
Q. 負荷対策はどうしていますか?(4) 実際に使われている負荷対策チェックリスト 【個別処理編】 (1) 遅いPHPランキングを作る(モグラ叩き法) →
実?速度を記録する仕掛けを作り、最も遅くて呼ばれる回数の多い順に対処 → Apacheログからanalogなどで集計する方法も (2) SQLの?直し → 遅い場合のほとんどはSQLが原因で遅い(アプリロジックでの負荷軽減は難しい) → 実際の本番とデータ数が違うと参考にならない、データは常に多めに入れておくこと → インデックス未使用のクエリやスロークエリログに載ってくるクエリを潰す → mk-query-digestで早くても実?回数の多いクエリを発?しチューニング → cactiなどのグラフから問題を発?する (3) 仕様で?直す → 仕様をほぼ満たしつつも、影響なくルーズに作れるところがないかを常に検討 → どうしてもダメなら仕様の?直しを相談
28.
Q. 負荷対策はどうしていますか?(5) DBマスターの負荷対策 負荷対策の基本は「サーバ台数を増やして対処すること」である。 ただしWebサーバやDBスレイブは、台数を増やすことで対応できるが、 DBマスターは単純には増やすことができないため、ここがネックとなる。 よって、負荷をなるべく他のサーバに分散する必要が出てくる KVS(memcachedなど) に向ける →
情報が古い可能性があることに注意、トランザクション処理にはあまり使えない DBスレイブに向ける → 通常はスレイブに接続し、トランザクション開始(BEGIN)でマスターに接続する ?(フレームワークレベルで実装) → マスターオンリーで開発を進め、安全なクエリから順にKVSやスレーブに ? 振っていくやり方も → インフラの構築方針にも絡んでくる
29.
Q. 負荷対策はどうしていますか?(6) DBマスター分割 複数ワールドに分けられないタイプのゲームや、同時収容人数の 多いゲームの場合、マスター分割は避けて通ることができない。 垂直分割 → 切り離しやすいテーブルを他のDBに持って?く(例:掲示板だけ別DB) 水平分割 →
ユーザID単位で分割する → グローバルDBを持ち、そこにユーザIDと格納DBを記録したテーブルを持つ → 新規登録時には最もアクティブユーザ数の少ないDBに登録 現状はアプリ側で複数のDBを順にトランザクション開始?コミットしている → 分割DBが多くなるほど性能が劣化する → バックアップ時の整合性や、エラー時の処理が?変 → ユーザ間の関わりが強いようなアプリは作りづらい → MySQL Clusterに期待したい
30.
Q. 負荷対策はどうしていますか?(7)
ロック競合対策 負荷はかかっていないがパフォーマンスが出ない、 Lock wait timeoutが多発する、などの場合はロック競合を疑う マスター分割されている場合は、 デッドロック検出がされないので更に厄介 【対策】 トランザクション時間は可能な限り短く → アプリ側に検出の仕掛けをいれている → MySlowTranCaptureなどのツールを活用 ロックが多くかかるテーブルは細かく分ける → ?ロックをかけるので、2つのポイントを同時に更新できない → ポイント系のテーブルなどで陥りがちな罠 user_point_tbl user_energy_point_tbl user_battle_point_tbl × ?user_id ○ ?user_id ?user_id ?energy_point ?energy_point ?battle_point ?battle_point
31.
Q. 参考にしている ? 情報は何ですか?
32.
Q. 参考にしている情報は何ですか?(1) A. 愛読書をご紹介します ?Webエンジニアのためのデータベース技術[実践]入門 ??松信嘉範氏著 ?→
後半、特に12章はソーシャルゲーム開発者は必読 ?エキスパートのためのMySQL[運用+管理] ?トラブルシューティングガイド?奥野幹也氏著 ?→?通称「鍵本」、ロックを理解するのにオススメ ?Mobageを支える技術 ?ソーシャルゲームの舞台裏? ??DeNA著 ?→?出たばかり、まだ読めてないけど超期待 技術書以外だと ?雑誌としてWEB+DB PRESS、SoftwareDesign ?とりあえず、はてぶの「コンピュータ?IT」カテゴリは全部?てます
33.
まとめ ソーシャルゲーム開発も色々変わりつつある 求められるものの変化に柔軟に対応していきたい
インフラには国内クラウドが良いのではないか フレームワークは自作がオススメ 負荷対策はテストとチェックリストを作って淡々と対策 DBマスターの負荷軽減が肝となる 基本に忠実に鉄板構成で、ただし?けるところはガンガンと 大変なことも多いけど楽しいです、楽しむことが重要 いつも感謝の心を忘れずに
34.
求人募集 株式会社インフィニットループではエンジニアを募集しています 社?も含めほぼ全てがプログラマで技術者に優しい環境 勤務地:北海道札幌市
おいしい食べ物いっぱい、自然いっぱい、花粉少ない、涼しい 短い通勤時間、徒歩や?転?で通勤10分とかもザラ Uターン、Iターン大歓迎 PHP開発エンジニア スマホ開発エンジニア MySQLエンジニア インフラエンジニア
35.
? ご静聴ありがとうございました
Download