2010/11/11コロプラ大規模障害にみるシステム拡張の難しさ

コロプラという携帯ゲームがある。携帯電話のGPS機能を使用して自分のいる位置をシステムに通知。その位置によってイベントが発生したり、前回の位置との距離差でゲーム内通貨がもらえたりする。積極的に移動を推進するシステムを用いているゲームだ。
このゲームは結構頻繁にレスポンスが悪くなり、503エラーを返していた。ユーザが「コロプラのエラーはしょうがない」と感じてしまうほどそれは日常的に起こっていた。メンテナンスによるサービス停止も多く、おそらく一時期の月平均稼働率は99パーセント(10日で2.4h程度サービスに接続できない)を切っていたんじゃないだろうか。
サービス稼働率99%と聞くと、それなりに高いように思われるが、一般的に非常に低い*1。これは会員数の急激な増加にインフラがついていけなかったことが原因と推測される。コロプラは会員数20万人を超えたころから急激に会員数が伸び、1年で100万会員の増加をみた*2。これは単一のコンテンツしか提供していない携帯ゲーム会社の、会員数増加としては異例だ。サーバの移転や増設を繰り返したようだが、そんなもので追いつくはずがない。ノード数が増えれば障害の数が増加するのは当然で、障害数の増加を吸収するような仕組みは後付けすることが難しい。
場当たり的なイベントの追加も目立った。時期に対応したイベントがゲーム内ではそれなりの頻度で行われるのだが、いつ開始されるのかさっぱりわからない。なぜなら予告がGMのブログでおこなわれるだけで、そのブログでも何時くらいに始まるのかわからない。始まってもユーザに通知されない。ユーザにクローラを強いるというなかなかの状態だった。
さて、コロプラ社はこのような障害対応と新機能リリースの自転車操業を行いつつ、11/11に新たなゲームを2つ追加した。この追加に伴って大規模なサーバメンテナンスを行った。メンテナンス終了時刻は予告を1時間以上超過したが、無事に終了したように見えた。しかし、ユーザがメンテナンス後アクセスを始めると、新しい2ゲームだけではなく、もともとあったメインコンテンツであるコロプラにも全くつながらない状態になってしまった*3。その後コロプラへ繋がり辛い状態が1週間以上続いたことから、コロプラ社はユーザの信頼を大きく損なった。また、11/11に2ゲーム追加というのは、プラットフォームの一つであるAUとの業務提供発表時に発表されたので、結果的にAUからの信頼も大きく損なってしまった。
原因は、発表を信じるかぎり3ゲームの連携部分にあった。3ゲーム共通で位置をシステムに通知する機能を追加したが、これが原因だったようだ。
コロプラ社としては何が問題だったのか。
まずは障害に慣れてしまっていたこと。それも「ユーザに現象として見える障害が頻繁に起こっているにもかかわらず、その頻度が減少しないうちにサービスの拡張を行ったこと」が挙げられるだろう。障害は複数同時に起きると収拾がつかなくなる。そして新たなサービスをリリースした時、複数の障害が同時に発生する可能性が非常に高いのだ。
次にサービス拡張をベータテストなしに行ったこと。普通に考えればこの規模の拡張をベータテストなしに突然始めるなんてことはありえない。なぜベータテストを行わなかったのかといえば11/9の「11/11を位置ゲーの日にしちゃいます」という社長の言葉にあるような「リリース日の語呂合わせ」と、「日常的に行われている場当たり的なリリースに伴う、妥当な開発期間とリリース日に対する感覚の鈍さ」が理由だろう。
最後に最大の問題点としてリリースを段階的に行わなかったことが挙げられる。いままで一つの機能しか持っていなかったシステムに、2つの新しい機能(ゲーム)と「複数の機能を管理するための機能」をすべて同時にリリースしたことが問題だ。同時にリリースしてしまうと、問題が起こってしまったときに「何が原因か」「どの機能を止めれば復旧するのか」がわからなくなる。

さすがにコロプラ社は懲りたのか、システムの安定化に全力を尽くしたようで、最近のコロプラの安定感は以前に比べて随分増した。現状の月平均稼働率は99.9%を超えているんじゃないだろうか。

*1:たとえば99%と99.9%は0.9%しか違わないが、サービス提供不能時間でみると10倍ちがう

*2:2009年5月〜2010年5月

*3:ゲートウェイエラーをひたすら出力していた