あの人気ソーシャルアプリを支える環境とは? グループスを支えるインフラ 環境を語り尽くす

第2回ioDriveのストライプでストレージ性能を大幅アップ オンプレミスで構築するシンプルなインフラ環境

人気ソーシャルゲームを多数運営するグループスでは、Windows Serverを中心としたインフラ環境で月間156億PV超というアクセスに対応しています。そこにはどういった秘密があるのでしょうか。前回に引き続き、グループスのインフラ環境の構築/運営に携わる、グループス 執行役員 ソーシャルゲーム事業本部 本部長の長谷川祐介氏に解説していただきました。

グループス 執行役員 ソーシャルゲーム事業本部本部長 長谷川祐介氏
グループス 執行役員 ソーシャルゲーム事業本部本部長 長谷川祐介氏

クラウド利用におけるパフォーマンス面の課題

前回紹介したように、グループスではWindows Server中心のインフラ環境で多数のソーシャルゲームを運営しています図1⁠。月間PVが156億超というアクセスを効率的にさばくため、このインフラではパフォーマンス向上を目的としたさまざまな取り組みを行っています。今回は、グループスのインフラ環境におけるパフォーマンス面の考え方などを紹介します。

図1 グループスのインフラ環境の全体図。IISやSQL Serverなどマイクロソフト製品を中心に構成されている
図1 グループスのインフラ環境の全体図。IISやSQL Serverなどマイクロソフト製品を中心に構成されている

さて、現在のソーシャルゲームの運用ではAmazon EC2をはじめとするIaaS(Infrastructure as a Service)が利用されるケースが少なくありません。インフラエンジニアから見ると、クラウドは確かに便利なサービスですが、IaaSには1つ大きな課題があると考えています。それはパフォーマンスです。

たとえば、IaaSで高性能なインスタンスを利用して構築したサーバと、十数万円のサーバを購入してオンプレミス環境で動かした場合では、数倍の性能差が生じることがあります。つまりIaaSの場合、スペックどおりのパフォーマンスを得られないケースが多いわけです。この性能差を埋めるためにサーバを追加してスケールアウトすれば、当然コスト負担も大きくなってしまいますし、運用の負担も増大するでしょう。このように考えていくと、クラウドだけがベストな選択肢だとは言えないのではないでしょうか。

こうしたこともあり、グループスの現状のインフラはオンプレミス環境を中心に構築しています。一方で、クラウドの利便性もあるので、マイクロソフトのWindows Azureの検証を進めています。すでに私たちが提供しているあるゲームの一部分を切り出し、実際のデータを使ってデータベースも構築してテストを行ったのですが、予想以上に良好な結果が得られました。そういった背景もあり、一部のコンテンツをWindows Azure上で提供するということも考えています。

もしベンチマークの結果が悪ければ、Windows Azureを使うという判断には至らなかったでしょう。とくに大量のアクセスをさばく必要があるソーシャルゲームでは、単純に利便性やコスト面だけでなく、パフォーマンスの観点からも適切にチェックし、プラットフォームを選定すべきです。

ioDriveの活用でパフォーマンスを向上

ソーシャルゲームを提供するインフラ環境のパフォーマンスを考える際、もう1つ重要になるのがストレージ性能です。とくにデータベース環境のストレージ性能は、システム全体のパフォーマンスを大きく左右することになります。

グループスでは、Microsoft SQL Serverを運用しているサーバに15,000回転のSASディスクを8台載せています。そのうちの6台でRAID 10を組み、残り2台をグローバルホットスワップで使っています。

これに加え、フラッシュメモリストレージであるFusion-ioの「ioDrive」も活用しています。導入のタイミングによってサイズは異なりますが、現在使っているのはMLCタイプの640GBの製品です。これを2枚使ってストライピングにしています。実は導入前に、ioDriveをストライピングで使っているSQL Serverの事例があるということで、販売代理店の方からストライピングを勧められていました。それで「じゃあ、実際にやってみようか」ということで運用を始めたわけですが、1年以上無故障で稼働し続けています。

ベンチマークを実行してみたところ、8台のSASディスク環境では5,500 IOPS程度でしたが、ストライピングしたioDriveでは20万IOPSという数値が出ました。ちなみに、1枚のioDriveでも12万IOPS程度のパフォーマンスが得られます。ioDriveを本格的に導入する前、その他のフラッシュメモリを使ったストレージ製品も検証しましたが、思ったようなパフォーマンスが得られなかったり、安定性に難があったりしました。そのため、最終的にioDriveに決定したという経緯がありますが、その判断は間違っていなかったと考えています。

データベースのパフォーマンスを引き上げる方法としては、スキーマをどんどん分散していくというものもあります。ただ、グループスで使っているMicrosoft SQL Serverは、CPUの1コアあたりいくらという形でライセンス料が発生するため、分散するとものすごくコスト高になってしまいます。しかしioDriveであれば、その何分の一かのコストで高いパフォーマンスが得られます。このように、ioDriveは非常にコストパフォーマンスの高い製品だと考えており、もはやグループスにとって欠かせないアイテムとなっているのです。

なお、Windows Serverの次期バージョンであるWindows Server 2012にも大いに期待しています。実際に性能検証も行っていて、Windows Server 2008 R2よりもパフォーマンスが向上するという結果も得られています。

インフラエンジニアはクリエイティブな仕事

さて、このようにインフラ環境を構築していくうえで、私自身が常に意識しているのは「シンプルなシステムにすること」です。シンプルな構成でシステムを構築しておけば、あとでパフォーマンスを引き上げる必要が生じた場合でも対応が容易です。逆に複雑なシステムになってしまうと、何らかの事態が発生したときに適切に対処することが難しくなっていくでしょう。オンプレミスでもクラウドでも、設計が悪く複雑なシステムはトラブルへの対処が極めて難しくなります。

また、インフラエンジニアはさまざまなミドルウェアに触れることも重要だと考えています。たとえばWebサーバならApacheやlighttpd、nginxなど、さまざまなミドルウェアが公開されており、それぞれに特長があります。⁠WebサーバならApacheがベスト」だと頭ごなしに決めるのではなく、それぞれの用途に適したものを利用すべきでしょう。そのためには、普段からさまざまなミドルウェアを実際に使っておくことが重要になるというわけです。

こうしてミドルウェアを数多く知ったうえで、自分が最適だと思うものをテスト環境で試していく。たとえば、システムの一部分で試してみて、ダメなら改善策を考えればよいわけです。

インフラエンジニアというと保守的なイメージでとらえられがちですが、本当はインフラ側が攻めてアプリケーションエンジニアを楽にしてあげないといけない。そういった意味でインフラエンジニアは本当にクリエイティブな仕事だと思いますし、私自身も新しいことにどんどんチャレンジしていきたいと思います。

グループスでは、強い好奇心を持ったエンジニアを募集しています。興味があれば、ぜひ以下のWebサイトにアクセスしてみてください!

URL:http://gloops.com/recruit/

おすすめ記事

記事・ニュース一覧