イベント
[GDC 2012]Mobageのサービスを支えるデータベースシステムについて,ディー・エヌ・エー松信氏が解説
セッションを担当したのは,ディー・エヌ・エーの松信嘉範氏だ。松信氏の名はゲーム業界的には知られていないかもしれないが,Oracleエキスパートの称号を持ち,オラクルが手がけるデータベースサーバーMySQLの第一人者として世界的に知られた有名人である。ちなみに本セッションは,松信氏が通訳なしで,質疑応答まですべて一人で仕切っていた。
どれくらいサーバーが“大変”なのか。松信氏が示した実数をみれば容易に理解できる。例えば,プレイヤーのステータスは頻繁に更新され,そのデータサイズは1人あたり100KB,プレイヤーが1億人(おそらくワールドワイドで重複プレイヤーを含めた場合の話だろう)いればデータサイズは10TBにもなる。それだけのデータを管理しつつ,膨大なアクセスをこなし,なおかつデータを失ってはいけないというのだから,半端なシステムでは対応しようがない。
スケーラビリティを確保しながら高負荷に耐えるシステムとして一般的に採用されるのが,データベースのレプリケーション機能を使うシステムだ。レプリケーションというのは,マスターサーバーに書きこまれたデータをスレーブサーバーに分散させる仕組みのことである。
という具合にサーバー絡みの話が延々と続くのも退屈なので,松信氏が挙げた少し面白い数字を挙げておこう。ディー・エヌ・エーの一般的なゲームタイトルは,2つのShardでスタートさせるそうだ。1Shardあたり3スレーブという構成でスタートさせ,スタート後2日間の登録者数を見てサーバーの規模を再考するという段取りになっている。こうした数字的な部分は,あまり露出されることはないので,とくに同業にとっては興味深い数字と言えるのではないだろうか。
その他にも,例えば「データ更新には大量のレコードを一度に更新するようなクエリ(要求)は避けるべし」とか,欧米とアジア圏で同一のゲームタイトルのサーバーを相互運用するときには,すべてのデータを一度にやり取りするのは現実的ではなく,またデータの更新の衝突の問題をクリアするのが難しいといった具体的な例が数多く挙げられ,とくにソーシャルゲームのサーバーを運用している人とっては,非常に有意義なセッションになったのではないかと思う。
筆者が個人的に興味を抱いたのは,まずストールの問題。松信氏によると,突然一時的な性能低下が発生するストールは,データベースのベンチマークに現れない問題の一つで,原因不明のストールを避けるには,サーバーOSとデータベースサーバーの選択が重要であると述べていた。
もう一つ,松信氏が「SSDは非常に効果的である」と語っていたのが印象的だ。とくにスレーブサーバーにSSDを採用するのが効果的とのこと。それに関連して質疑応答のときに,Linuxのext3/ext4ファイルシステムよりもxfsのほうがパフォーマンスが高いとも語り,その理由はxfsのディスクリード/ライトのパターンが,ext3/ext4よりもSSDに適しているため,とのことだった。
というわけで,地味なセッションではあったが,セッションの参加者は実に熱心に聞き入っていたことは特筆しておいていいだろう。質疑応答の時間には,質問用のマイクに行列ができるほどの人気で,これも松信氏の知名度の高さゆえかもしれない。セッションの内容はゲームとはほとんど関係のないものだったが,ソーシャルゲームが世界的に隆盛を極める中,サーバーインフラもゲームの課題として頻繁に取り上げられることになりそうだ。
- この記事のURL: