オリジナルのデッキを作ってさまざまなユーザと対戦できるカードバトルゲーム「大召喚!!マジゲート」( 図1 )や、日本のプロ野球12球団に所属する選手が実名・実写真のカードとなって登場する「大熱狂!!プロ野球カード」など、人気の高いソーシャルアプリを続々と提供しているのが「グループス」です。この連載では、グループスソーシャルゲーム事業本部アプリケーション開発部長兼プリンシパルインフラストラクチャーアーキテクトである長谷川祐介氏に、同社のインフラ基盤について解説していただきます。
図1 TVCMでもお馴染みの人気ソーシャルゲーム「大召還!!マジゲート」
グループスソーシャルゲーム事業本部アプリケーション開発部長 兼 プリンシパルインフラストラクチャーアーキテクト 長谷川祐介氏
なぜグループスはWindows環境を使うのか?
ソーシャルアプリを運用するプラットフォームというと、多くの人はLinux環境を思い浮かべるのではないでしょうか。しかしグループスでは、アプリケーションサーバやデータベースサーバにWindows Serverを利用しつつ、その他の領域ではLinuxというハイブリッド環境で数多くのソーシャルアプリを提供しています。
なぜWindows Serverを使うのか、と疑問に感じる方も多いでしょう。実際、私自身もグループスに入社した当時はそう感じていました。Windows環境のイメージは、「 遅い」「 めんどくさい」「 不安定」といったものです。しかし、実際に運用してみると、考え方が180度変わりました。こうしたイメージはまったくの間違いだったのです。
たとえばWindows環境のメリットの1つに、IISとASP.NET、そしてC#で書かれたアプリケーションが想像をはるかに超える高速性を実現していることが挙げられます。そのうえ、安定して動作しているのです。Javaを中心としたプラットフォームのものと比べると、もう全然比較にならないぐらい安定していると感じています。
また、運用をサポートするツールが充実していることもメリットでしょう。たとえば、SQL Serverには「SQL Server Management Studio」というGUIの運用管理ツールがあります。ほとんどの管理作業がこのツールで可能なほか、利用状況のモニタリングや必要なクエリの生成まででき、よくわからない人でも何とか運用や開発ができるようになっています。こうしたところは素直にスゴいと感じます。
ライセンスコストの問題を解消できればメリットは大きい
さらにWindowsの良い点を挙げるとすると、ハードウェア性能を活かせる部分ではないかと考えています。Linuxでは、ハードウェアの性能を活かし切ろうとすると、OSの設定をいじったり、場合によってはカーネルにまで手を入れないと、十分なパフォーマンスを得られないことがあります。それに対してWindowsは、ハードウェア性能に対してスケーラブルに性能が向上します。パフォーマンスに対する要求レベルが高いソーシャルアプリでは、これは大きなメリットと言えるのではないでしょうか。
逆にデメリットとしては、やはりライセンスコストが高いことが挙げられます。ソーシャルアプリではイベントなどによって一時的にアクセス数が大幅に増加することがあり、場合によっては普段の10倍ものアクセスが殺到することもあります。このようなとき、Linuxであれば気軽にサーバを増やして対応できますが、Windows環境ではコストの関係上、サーバを増やすのは容易ではありません。
その他、ドキュメント類の充実度などでLinuxに劣っていると感じる部分はありますが、ソーシャルアプリの運用で本当にネックになるのはコストぐらいでしょうか。これをクリアできるのであれば、Windows環境のメリットは極めて大きいと思います。
フロントエンドやバックエンドでは多数のLinuxサーバを活用
それでは、グループスがどういった環境でソーシャルアプリを運用しているか紹介していきましょう。
前述したとおり、サーバはWindowsとLinuxのハイブリッド環境で、用途によって使い分けています。Windows環境では最新のOSであるWindows Server 2008 R2を利用し、その上でIISやSQL Serverを動かしています。
Linuxは、まずフロントエンドでL7のロードバランサとして並列でnginxを動かしています。ソーシャルアプリには、応答が5秒以上ないとエラー扱いになる「5秒ルール」がありますが、これに対応するため、5秒経ってもIISから応答がない場合はこのnginxを使ってSorryページを直接出力しています。
もう1つ、フロントエンドで使っているのがvarnishです。これは静的コンテンツのHTTPアクセラレータとして利用しています。nginxに対してリクエストした内容をキャッシュし、同じ内容に対してリクエストがあった場合にはnginxに問い合わせず、直接応答するという形です。ちなみに、このvarnishを動かしているサーバはクラウド環境に配置しています。
バックエンドで使っているのは、memcachedとRedisです。また裏側ではファイルサーバ上でSambaも利用していて、Windows環境から簡単にデプロイできる環境を整えています。
このように、グループスではLinuxもさまざまな用途で利用しています。割合で言えば、WindowsとLinuxで6:4くらいでしょうか。
これらの環境を運用するデータセンターにもこだわっています。具体的には、IXまでの距離が非常に近いデータセンターを利用しています。インターネットとは10Gbpsの冗長構成で接続しており、さらにラック間通信も10Gbpsで統一しています。
運用しているサーバの数は、実際にアクティブなものが1000台を超える程度で、さらに150台くらいのサーバが次のプロジェクトのために電源を入れた状態でウォームスタンバイしています。さらに梱包したまま、あるいはラッキングしたばかりのものが数百台あるという状況です。
Linuxで蓄積したスキルはWindows環境にも活かせる
さて、Windows環境でソーシャルアプリを運用するというと、「 自分はWindows Serverの経験はそれほどないから無理だ」と思われるかもしれません。実は私もWindowsはけっして詳しいわけではありませんでしたが、それで運用上困ったという経験はないのです。なぜかというと、そもそもコンピュータは基本的なところは一緒なので、それまでのLinuxの経験がWindowsでも活かせるからです。
ちなみに、現在では運用チームは9名まで増えましたが、以前は私1人しかいませんでした。それでも70億PVくらいまでは1人で対応できたのです。最初は「これを1人でやるの? マジかよ!」という感じでしたが、実際にやってみると「できるな」と(笑) 。Windowsのスペシャリストではなくても、これだけのサービスを運営できるというわけです。
さて、今回はグループスのインフラ環境を紹介しました。次回は、膨大な数のリクエストに迅速に対応するためどのような工夫をしているか紹介します。