お気に入りタイトル/ワード

タイトル/ワード名(記事数)

最近記事を読んだタイトル/ワード

タイトル/ワード名(記事数)

LINEで4Gamerアカウントを登録
[GDC 2012]Mobageのサービスを支えるデータベースシステムについて,ディー・エヌ・エー松信氏が解説
特集記事一覧
注目のレビュー
注目のムービー

メディアパートナー

印刷2012/03/10 21:35

イベント

[GDC 2012]Mobageのサービスを支えるデータベースシステムについて,ディー・エヌ・エー松信氏が解説

ディー・エヌ・エーの松信嘉範氏
画像集#001のサムネイル/[GDC 2012]Mobageのサービスを支えるデータベースシステムについて,ディー・エヌ・エー松信氏が解説
 GDC 2012では,日本のディー・エヌ・エーもいくつかのセッションを持っていた。本稿ではディー・エヌ・エーが展開するMobageのデータベースに関する「Scaling and Stabilizing Large Server Side Infrastructure」(大規模サーバーのスケーリングと安定化)と題されたセッションをレポートしてみたい。あまり派手な話題ではないので要点のみをお伝えするが,Mobageの裏にはこんな苦労があったのだ。

 セッションを担当したのは,ディー・エヌ・エーの松信嘉範氏だ。松信氏の名はゲーム業界的には知られていないかもしれないが,Oracleエキスパートの称号を持ち,オラクルが手がけるデータベースサーバーMySQLの第一人者として世界的に知られた有名人である。ちなみに本セッションは,松信氏が通訳なしで,質疑応答まですべて一人で仕切っていた。

松信氏が提示したMobageの典型的なSS。画面はシンプルだが,サーバーはそうではないという。ステータスが非常に頻繁に更新され,そのデータはサーバーが管理しているためだ
画像集#002のサムネイル/[GDC 2012]Mobageのサービスを支えるデータベースシステムについて,ディー・エヌ・エー松信氏が解説
 松信氏はディー・エヌ・エーという会社の簡単な紹介と「ディー・エヌ・エーでサーバーインフラストラクチャを担当している」という自己紹介ののち,Mobageの典型的なスクリーンショットを示し「Mobageの画面はとてもシンプル。これは日本の携帯の(平均的な)性能が高くないためだ。しかし,裏を支えるサーバーはまったく逆」と,このセッションの背景を説明した。

 どれくらいサーバーが“大変”なのか。松信氏が示した実数をみれば容易に理解できる。例えば,プレイヤーのステータスは頻繁に更新され,そのデータサイズは1人あたり100KB,プレイヤーが1億人(おそらくワールドワイドで重複プレイヤーを含めた場合の話だろう)いればデータサイズは10TBにもなる。それだけのデータを管理しつつ,膨大なアクセスをこなし,なおかつデータを失ってはいけないというのだから,半端なシステムでは対応しようがない。


多数のプレイヤーが持つステータスだけでも膨大なサイズになり,それが頻繁に更新されているわけだから,裏を支えるデータベースシステムにはとんでもない規模のものが求められるわけだ
画像集#003のサムネイル/[GDC 2012]Mobageのサービスを支えるデータベースシステムについて,ディー・エヌ・エー松信氏が解説
 無論,プレイヤーが少ないうちは,処理されるデータサイズもたいしたことはない。プレイヤーが増えるに連れてサーバーの負荷が急増するのが,Mobageに代表されるソーシャルゲームの特徴だ。したがって,公演のタイトルにもなっているスケーリング(規模)を自在に変えることが重要になってくる。

 スケーラビリティを確保しながら高負荷に耐えるシステムとして一般的に採用されるのが,データベースのレプリケーション機能を使うシステムだ。レプリケーションというのは,マスターサーバーに書きこまれたデータをスレーブサーバーに分散させる仕組みのことである。

レプリケーションを使って負荷を分散させるのが一般的だが,この方法はマスターサーバーが弱点になり,必ずしも安全性やスケーラビリティが確保できるわけではないと,松信氏は指摘する
画像集#004のサムネイル/[GDC 2012]Mobageのサービスを支えるデータベースシステムについて,ディー・エヌ・エー松信氏が解説

MyDNSというDNSサーバーの一種を使って,Webサーバーやアプリケーションサーバーからのデータを分散させる仕組みを使っているそうだ
画像集#005のサムネイル/[GDC 2012]Mobageのサービスを支えるデータベースシステムについて,ディー・エヌ・エー松信氏が解説
 ただ,一般的なレプリケーションの利用はマスターサーバーが弱点になり,必ずしも安全性やスケーラビリティが確保できるわけではないと松信氏はいう。そこでディー・エヌ・エーが採用しているのが,MyDNSという,MySQLと連動するDNSを使った分散と,Sharding(詳細は複雑なので省くが,パーティショニングという方法を使ってデータを分散させる仕組みのこと)の組み合わせである。

 という具合にサーバー絡みの話が延々と続くのも退屈なので,松信氏が挙げた少し面白い数字を挙げておこう。ディー・エヌ・エーの一般的なゲームタイトルは,2つのShardでスタートさせるそうだ。1Shardあたり3スレーブという構成でスタートさせ,スタート後2日間の登録者数を見てサーバーの規模を再考するという段取りになっている。こうした数字的な部分は,あまり露出されることはないので,とくに同業にとっては興味深い数字と言えるのではないだろうか。

少し興味深い数字が挙げられたスライド。こうしたデータはあまり出てこないので,とくに同業の興味を引きそうだ
画像集#006のサムネイル/[GDC 2012]Mobageのサービスを支えるデータベースシステムについて,ディー・エヌ・エー松信氏が解説

 その他にも,例えば「データ更新には大量のレコードを一度に更新するようなクエリ(要求)は避けるべし」とか,欧米とアジア圏で同一のゲームタイトルのサーバーを相互運用するときには,すべてのデータを一度にやり取りするのは現実的ではなく,またデータの更新の衝突の問題をクリアするのが難しいといった具体的な例が数多く挙げられ,とくにソーシャルゲームのサーバーを運用している人とっては,非常に有意義なセッションになったのではないかと思う。

 筆者が個人的に興味を抱いたのは,まずストールの問題。松信氏によると,突然一時的な性能低下が発生するストールは,データベースのベンチマークに現れない問題の一つで,原因不明のストールを避けるには,サーバーOSとデータベースサーバーの選択が重要であると述べていた。

性能が一時的に低下するストールは,OSやデータベースサーバーの選択で避けることができる。松信氏もCentOS4,MySQL5の組み合わせはバグが多く,ストールなどで苦労させられたという話をしていた
画像集#007のサムネイル/[GDC 2012]Mobageのサービスを支えるデータベースシステムについて,ディー・エヌ・エー松信氏が解説

 もう一つ,松信氏が「SSDは非常に効果的である」と語っていたのが印象的だ。とくにスレーブサーバーにSSDを採用するのが効果的とのこと。それに関連して質疑応答のときに,Linuxのext3/ext4ファイルシステムよりもxfsのほうがパフォーマンスが高いとも語り,その理由はxfsのディスクリード/ライトのパターンが,ext3/ext4よりもSSDに適しているため,とのことだった。

 というわけで,地味なセッションではあったが,セッションの参加者は実に熱心に聞き入っていたことは特筆しておいていいだろう。質疑応答の時間には,質問用のマイクに行列ができるほどの人気で,これも松信氏の知名度の高さゆえかもしれない。セッションの内容はゲームとはほとんど関係のないものだったが,ソーシャルゲームが世界的に隆盛を極める中,サーバーインフラもゲームの課題として頻繁に取り上げられることになりそうだ。
  • この記事のURL:
4Gamer.net最新情報
プラットフォーム別新着記事
総合新着記事
企画記事
スペシャルコンテンツ
注目記事ランキング
集計:12月21日〜12月22日