伊東弘満氏
人気ソーシャルゲームのインフラには、クライアントからのリクエストを迅速に処理する高いパフォーマンスが求められます。この要求にグループスのインフラチームはどのように対応しているのでしょうか。同社のソーシャルゲーム事業本部システム基盤部長の伊東弘満氏にお話を伺いました。
パフォーマンス不足解消のため グループスが出した答えとは?
システムのパフォーマンスにとって大きなボトルネックとなるのがストレージです。とくにHDDはCPUやメインメモリに比べて極めて低速であり、これがパフォーマンス低下の原因になります。こうした課題を解決するためエンタープライズ領域で注目を集めている製品が「ioDrive」です。フラッシュメモリを使う点ではSSD(Solid State Drive)と同様ですが、ioDriveのメーカであるFusion-ioの長谷川猛氏は両者は大きく異なると言います。
Fusion-io 長谷川猛氏
「SSDはHDDをいかに高速化するかということで、プラッタ部分をフラッシュメモリに置き換えたデバイスです。一方、ioDriveのアプローチはまったく逆で、メインメモリであるDRAMに近いスピードで動作する、不揮発のメモリ階層という位置付けです。これを実現するため、ioDriveはSATA(Serial Advanced Technology Attachment)インターフェースを介さず、CPUからPCI Expressを経由しダイレクトにつなげられる構成としています。こうした設計思想や独自の工夫によって高い性能を実現しており、たとえば応答速度ではHDDがミリ秒単位であるのに対し、ioDriveではマイクロ秒単位にまで縮めています。つまり応答速度の観点で見れば1000倍の差があるというわけです(長谷川氏) 」
従来のHDDやSSDに比べて圧倒的なパフォーマンスを持つioDriveは、高い処理性能が求められるさまざまなシステムで使われており、ソーシャルゲームの領域でも着実に浸透しつつあります。
ソーシャルゲームでは、サーバの応答速度がユーザエクスペリエンスを大きく左右します。そこで、ソーシャルゲームベンダー各社は負荷分散などの技術を駆使して処理能力の向上に努めていますが、そこでボトルネックとなるのが前述のディスクI/Oです。人気ソーシャルゲームを数多く提供するグループスでも同様の問題があったと伊東氏は話します。
「グループスはもともとクラウド上でサービスを展開していましたが、そのときに大きな課題となっていたのがデータベースのパフォーマンスでした。そこでクラウドからオンプレミス環境に切り替え、SASのHDDをストレージとして使いましたが、データベースのパフォーマンスが厳しい状況は相変わらずでした。そこで次はSSDだということで製品を探し、ioDriveに目を付けました。これが1年以上前のことです。それ以降はほぼすべてのプロダクトでioDriveを利用しています(伊東氏) 」
なお、製品の選択にあたっては他社の同様のソリューションとも比較したと言います。
「ioDriveと同様、PCI Expressに直結するフラッシュメモリタイプのストレージ製品はいくつかあり、導入時に比較・検証しましたが、ioDriveに決めた理由はコントローラの作りが非常によかった点です。フラッシュメモリを使った製品では、データを効率的に読み書きするためにガーベッジコレクションという処理が必要です。ioDriveはその処理が非常に安定していて、パフォーマンスへの影響がほとんどありませんでした(伊東氏) 」
実はこのガーベッジコレクションなどのしくみも、ioDriveと一般的なSSDとの違いになっています。通常のSSDでは、フラッシュメモリの管理やガーベッジコレクションなどの処理はコントローラチップと呼ばれる組み込みプロセッサで行います。一方、ioDriveはソフトウェアベースでコントローラが実装されており、ドライバレベルでフラッシュメモリを管理しています。これにより「信頼性を上げたり、スピードを高く維持できる」と長谷川氏は説明します。
パフォーマンスを重視しストライピング構成で運用
ストレージのパフォーマンスを引き上げるための方法として、以前から使われてきたのがストライピング(RAID-0)です。これは複数台のデバイスに分散してデータを書き込むことで、1台あたりの負荷を軽減し高速化するというもの。グループスでは、このストライピング構成でioDriveを運用することにより、さらにパフォーマンスを高めていると言います。
「現状では2~4枚のioDriveをストライピング構成で運用しています。確かにストライピングは耐障害性が低くなりますが、そこはバックアップでカバーするという考え方です。サービスの特性上、短いセッションが大量に来て、さらにその何倍ものリクエストがデータベースサーバに対して発生します。そのリクエストに最小限の遅延で応答する必要があるため、とにかくパフォーマンスを追求する構成にしています(伊東氏) 」
ストライピングはパフォーマンスを向上できる一方、信頼性が低くなるという欠点があります。1つのデータを細かく区切り、それを複数台のデバイスに分散して書き込むため、いずれかのデバイスが故障すると、すべてのデータがアクセス不能になってしまうからです。ただFusion-ioの長谷川氏は、そうした心配は不要であると言い切りました。
「ioDriveにはフラッシュメモリのチップが数百個搭載されており、さらにそれが数十のグループに分かれています。ioDrive内では、これらのグループを使ってRAID-50相当のしくみを実現しており、フラッシュメモリの一部が壊れたとしても継続して利用できるように設計しています。このため、ユーザの方々には安心してioDriveをストライピングで束ねて、パフォーマンスを追求していただくことができるのです。言ってしまえば、このカード1枚でミッドレンジのストレージ製品のセルフヒーリング機能とパフォーマンスを実現しているということです(長谷川氏) 」
次回は、この圧倒的なパフォーマンスを持つioDriveの導入によって、グループスのソーシャルゲームがどのように変わったのかを伺っていきます。