ピーク時のhttpリクエストは秒間5桁に上る
2012年2月16日、「Developers Summit 2012」において㈱コナミデジタルエンタテインメントのドラコレスタジオ戦略室マネージャーの廣田竜平氏が「大ヒットソーシャルアプリ『ドラゴンコレクション』の裏側~超高トラフィックを支えるアプリ・インフラの“明日から使えるテクニック” 限定紹介!」というセッションを講演しました。
廣田氏は大学卒業後、KONAMIのアミューズメント機器部門に入社し「ドラムマニア・ギターフリークス」「クイズマジックアカデミー」シリーズなどのプログラムを手がけた後、オンラインゲーム・モバイルゲームの部門に異動し、いくつかのタイトルのディレクションやプロデュースを担当した経歴の持ち主。ドラコレでは、技術面の責任者としてアプリ・インフラの両面からの方針決定、課題解決を担当しています。
ドラコレは、もはや説明する必要がないほどの普及を果たしたソーシャルゲーム。SNSサイト「GREE」で展開しており、登録会員数は550万人(2012年2月時点)を突破しています。従来、クエスト・バトルが中心であったソーシャルゲームに「ガチャ」や「合成」といったカード収集の要素を取り入れることで、ユーザーの絶妙なモチベーションフローを実現し、以降の国内ソーシャルゲーム市場に大きな影響を与えています。
「ソーシャルゲームは名前に『ゲーム』が含まれてはいますが、技術的に見ると『Webサービス』です」という廣田氏。人気が出るということは、それだけトラフィックが高くなるということ。ドラコレの場合、イベント開始直後などピーク時のhttpリクエストは、明言を避けましたが秒間5桁に上るといいます。このリクエスト数には画像などの静的データは含まれていないため、PHPで作られた動的ページへのアクセスがこれだけあるということです。単純にPVだけで比較すれば、国内の大手ポータルサイトにも匹敵する値かも知れません。KONAMIでは3桁におよぶ台数のサーバーで、このトラフィックに対応しています。
ドラコレを支えるシステムは「わりと教科書通り」
ドラコレのサービスに使用しているサーバーは、CentOS、Apache、MySQL、PHP+APCといった一般的なLAMP環境で、動的ページはすべてPHPで制作されています。KVSはmemcachedのみでNoSQLは使用していない、わりと教科書通りな「普通の」構成。ロードバランサー(LB)にはソフトウェアLBの「Zeus」を採用しており、LB1台ではすべてのトラフィックをさばき切れないのでDNSラウンドロビンを併用しています。
増え続けるユーザー数・トラフィックには、基本的にはスケールアウトで対応しており、たまにスケールアップも実施。フロントサーバーのスケールアウトは単純に増やすだけで対応できますが、RDBMSのスケールアウトは、Read性能がボトルネックなのであればReadレプリカを追加し、機能分割とシャーディング(水平分割)をひたすら続けるといいます。しかし、実際に超高トラフィックに直面してみると理屈通りに単純にはいきませんでした。
ドラコレのシステムは、当初パブリッククラウドを利用していましたが、現在は専用ネットワークを構築しています。この背景には、パブリッククラウドならではの複数の問題があったといいます。廣田氏は具体的な問題として、物理ディスクを占有できるサービスがなかったため「ディスクI/O性能が不安定」だったこと、「内部ネットワークのトラフィックの限界が分からない」こと、「クラウドサービス側のメンテナンスに都合を合わせる必要があった」ことを挙げました。
つまり、パフォーマンスの善し悪しではなく、パフォーマンスが不安定であることが問題だったのです。また、パブリックなサービスゆえに、どうしても自分たちでは制御できない要因があります。これらの問題は、一般的なWebサイトであれば問題にならないレベルのものでした。しかし、超高トラフィックと「モバイルソーシャルアプリ特有の仕組み」では、この問題は非常に大きなもので、最終的にドラコレ専用の環境にシステムを移行するに至ったといいます。