Hatena::ブログ(Diary)

shi3zの長文日記 RSSフィード Twitter

2010-08-22

クラウドがネットワークゲーム開発者にもたらしてくれたもの 16:15

http://gyazo.com/5610184141e2ed36b91f6d69da022609.png

おかげさまで「天空のエリュシオン」が予想以上に好評で、全くの無名メーカーのゲームにも関わらず、今は一日1万人に届こうかという方が新規入会してくださっています。ありがとうございます。


しかし・・・・

http://gyazo.com/0d4d2cb33715c2ac3c3855dfdb7019af.png

数々の高負荷サービスを支えてきた水野・宮島のサーバ不敗神話が崩壊


言い訳をすると、ゲームの設計をちょっとこだわりすぎて、マスターDBへのアクセスがあまりにも多くてそれが原因で総てのDBとWebサーバが重くなり、GREE側からとめられてしまうという事態に。


実は今、会員数が5倍以上ある別のSNSゲームのサーバも水野・宮島チームで見ているのですが、そちらは構造がシンプルなので劇的に高速化できています。



ところが天空のエリュシオンは、かなりゲームとして作り込んでしまったので、たとえ会員数が1/5であっても、サーバの負荷が高く、最高級のサーバを用意してもギリギリという感じになってきてしまいました。


ひとまず、マスターDBサーバを最高スペックに変更することでいったんは落ち着きましたが、このままの会員数で推移すると遠からず上限に達するということが解ってきました。

しかも、これは本来は喜ぶべきことですが、アクティブ率やユーザの滞留時間がかなり長く、他社のゲームの8倍近くあります。


PV数もここ数日で一日あたり約600万PVを記録しており、これもかなりのハードルになります。

会員数10万人未満でこのPVは他社と比較してもかなり多いようです。

これだけ多くの人が熱中して下さるのは我々にとっては嬉しい誤算ではあったのですが、同時に増え続けるアクセスに対して一定水準のレスポンスタイムを維持するのが難しくなってきました。


しかも、今現在はさらに面白くアクティブ率を上げる施策を実装中であり、これが入るとさらにアクティブ率や滞留時間が増加することになります。





こうしたとき、取りうる対策はふたつあって、ひとつはマスターDBを水平分割してマスター台数を増やすこと。

ただし、この方法はブログやSNSにはかなり効くのですが、ゲームのように常に総てのデータを参照する可能性がある場合、ゲームバランスに関わってくるので簡単に水平分割するのは勇気が必要です。



実はネットワークゲームの場合、ゲームデザインさえもサーバ設計の影響を受けるのです。

データベースの負荷を軽減しようとして、それぞれのプレイヤーのパラメータを(ブログのように)独立させたとすると、他のマスターにあるユーザと対戦したりランキングしたりするのに全く別のサーバを建てなければならず、システムが指数関数的に複雑化していきます。


ここで取りうる選択肢は、ゲームデザインをあきらめてDBを水平分割してひとつの世界に総てのユーザを抱えるか、それともゲームデザインを護ることにこだわるか、の二つです。



従来から僕はずっとこの問題に悩んでいました。

「ケータイゲームはシンプルを身上とすべし」というのが僕の持論で、できるだけ選択肢を少なくして遊びやすくするべきである、というのが僕の考え方です。


しかし、ゲームを面白く作ろうとすればするほど、データベースのアクセスは複雑化し、一定数以上のユーザを抱えることができなくなります。


従来、クラウドがなかった頃は、僕らはサーバを自由に増やすことができませんでした。

まず、データセンターには物理的な場所という大きな制約があります。


 「このゲームは人気が出たから、一気にサーバを10倍に増やそう」


なんてことはできないわけです。

かといって、最初から最高級のサーバを10台も用意しようとすると、それだけで初期費用が1000万円近くかかってしまいます。


回線も同様で、ゲームサービスを開始する前に、「予想会員数」「予想トラフィック量」「予想売上げ」を正確に見積もった上で事前に準備するには膨大な初期投資が必要になります。


自然、僕らのような小さな会社が独自の資本で大規模なゲームを立ち上げることは最初から不可能ということになってしまうのです。



いままで作ったゲームも、人気に火がついたと思ったらサーバ負荷が高すぎてぜんぜんお客さんに遊んでもらうことができず、それでお客さんに嫌われてしまった苦い経験をいくつも重ねて来ました。



某TV番組系のサーバを担当したときは、放映開始から翌日午前3時まで回線がパンクし、SSHでログインすらできないような状況に手を焼いた経験もあります。


そういうとき、サーバをすぐに増やせればいいのですが、当時のサーバ調達は非常に長い納期がかかるうえに前述のような物理的な場所の問題があるので、かなりの投資を覚悟しなければならず、クライアントがなかなか首を縦にふってくれなくて悔し涙を流したことも沢山あります。




ところが素晴らしいことに、いままさにクラウド百花繚乱の時代。


サーバをアップグレードしたり、新しくサーバを調達したりといったことがほんの数時間でできるようになりました。

http://gyazo.com/a7f4afdb31bf44d8e4d1e72b94a80c7e.png

真ん中のくぼんでいるところがサービスが停止してしまった部分です。

その間にサーバのメモリとCPU構成をアップグレードして、復活させると落ちにくくなりました。

従来は運用中のマスターDBサーバのハードウェアをわずか一時間でアップグレードさせるなんて不可能でした。

クラウドならこんな離れ業も易々可能になるのです。




ソーシャルゲームの増え続ける膨大なアクセスとビジネスモデルを支えているのは、実はこうしたクラウドの存在が大きいのです。



うちの会社、UEIでも複数のクラウドサービスを並行して利用しており、これがなければエリュシオンの初期のアクセスをさばくことさえおそらくは困難だったでしょう。


クラウドサービスのおかげで、エリュシオンは典型的なネットワークゲームと同じ方法でサーバを拡張するという方針を素早く立てることができました。


つまり、パラレルワールド(平行世界)を複数つくるという方法です。


従来なら、これは予算を無尽蔵に持っている大資本にしかできない贅沢でした。

しかし、クラウドサービスなら、従量制なのでサービス規模に応じて自在にシステム規模を拡縮できます。

しかも、サーバーを増やすことがそのまま利益に直結します。

なんと時代に恵まれたものだ、と思うのです。



クラウドコンピューティングの恩恵をいま一番受けているのは、僕たちのような会社かもしれません。

http://www.4gamer.net/games/036/G003681/20100810007/TN/001.jpg

http://gyazo.com/d77a75a51e397581750c2916b5bccdf5.pngGREEアプリ

天空のエリュシオン

http://mpf.gree.jp/79