数多くの人気ゲームを提供するグループスでは、どのようにインフラを運用しているのでしょうか。今回と次回の2回にわたって、グループスのインフラグループのエンジニア、伊東弘満氏、河村喬樹氏、そして富樫英雅氏の3名に、ソーシャルゲームの運用におけるポイントを伺っていきます。
リソースを効率的に利用するWindowsのチューニング
ソーシャルゲームを安定して提供していくうえで最も重要な役割を担っているのがインフラエンジニアです。Webサイトによる一般的なコンテンツ提供とは桁違いのアクセスをさばく必要があるほか、一定時間内にユーザからのリクエストに応答しなければならないという「5秒ルール」にも対応しなければなりません。またサーバの物理的な故障やミドルウェアの障害など、さまざまなトラブルに迅速に対応するスキルも求められます。数多くの人気ソーシャルゲームを提供するグループスでは、こうした課題を乗り越えるためにどのような工夫をしているのでしょうか。
ソーシャルゲームの運用において最初の難関となるのはサービスの提供開始時における必要なリソースの見極めではないでしょうか。ゲームをプレイするユーザの数によって、必要となるサーバ台数は大きく変わりますが、一方でユーザ数を事前に正確に見積もることは困難です。そのため、できるだけ余裕を持ってサーバを準備したいところですが、サーバの数が増えればコストがかさみ、運用の負担も大きくなってしまいます。グループスでは新規にゲームを提供する際、どのようにサーバを準備しているのでしょうか。これに答えてくれたのは伊東氏です。
「グループスではこれまでの経験を踏まえ、ゲーム提供開始時に用意するサーバの台数をある程度固定しています。それで予想よりもアクセスが上回った場合には、サーバをどんどん追加するというイメージですね。また、サーバ追加のための作業をスムースに行えるよう、あらかじめスタンバイ機の用意もしています(伊東氏)」
なおグループスでは、ソーシャルゲームをC#で開発し、アプリケーションサーバにIIS、データベースにはMicrosoft SQL Serverを利用しています。サーバのセットアップの際には、これらを動かすWindowsのセッティングも一気に行うと伊東氏は続けます。
「セットアップにはLinuxならシェルスクリプト、Windows環境ではバッチファイルを使っていますが、この中で必要なチューニングも行っています。チューニングでとくに気にしているのはポート番号の制限です。ポート番号は0から65535までしかなく、さらにOSやミドルウェアが使う分を差し引くと、利用できる数はけっして多くありません。そのポート番号を効率的に使うチューニングをするわけです。たとえばWindowsでは、セッション終了の待ち時間(CLOSE WAIT)が長く設定されているので、それを短縮する修正などを行っています(伊東氏)」
また新規ゲーム用のサーバ構築は、ほかのゲームの運用と並行しながらの作業で、おおよそ2週間程度で構築すると話すのは河村氏です。
「グループスではフロントエンドとアプリケーションサーバ、データベースの各レイヤで使うものが固まっているので、構築自体は手間がかかりません。だいたい1ヵ月に1タイトルのペースで新作ゲームをリリースしていますが、既存ゲームの運用に対応しつつ、2週間くらいでサーバをセットアップします。ただ、1タイトル分のサーバをたった2人のエンジニアが3日間で構築したこともありました。セットアップのかなりの部分を自動化していたので対応できましたが、あれは本当にたいへんでした(河村氏)」
インフラの運用にも関わるアプリケーションエンジニア
無事リリースが完了すれば、あとは運用作業へと進みます。ここで重要となるのが各サーバの監視。グループスでは、オープンソースのシステム監視ツールである「Icinga」に自作スクリプトを組み合わせているとのこと。Windows Server環境は、リモート監視を行うプラグイン「NRPE(Nagios Remote Plugin Executor)」を使い、やはりIcingaで監視しています。
Windows Server環境における管理は当然ながらGUIを使います。Linuxでのコマンドライン操作に慣れているエンジニアにとって、GUIベースの管理はまどろっこしいという意見をよく聞きますが、実際はどうなのでしょうか。富樫氏は「慣れですね」と答えます。
「正直に言うと、作業効率はCUIのほうが高いと思いますが、Windows ServerのGUIにも慣れたので、以前ほど気にならなくなりました。また誰でも操作できるというのは大きな強みだと思います。実際グループスでは、アプリケーションエンジニアもサーバの運用に関わりますが、これはWindows Serverだから実現できたことだと思います。もしすべてLinuxであれば、アプリケーションエンジニアが運用中のサーバにアクセスして何かをするのは難しかったでしょう(富樫氏)」
アプリケーションエンジニアもインフラの運用に関わっているのは、グループスの大きな特徴でしょう。その理由について、伊東氏は次のように説明します。
「サーバの状態などをオープンにしておき、アプリケーションエンジニアにも見てもらうことで、そのときどきの状況を理解してもらうのがねらいです。またグループスでは毎週のようにソーシャルゲームをアップデートしており、当然プログラムも書き換えられていきます。運用にまつわる情報が開示されていれば、プログラムを変更したことでパフォーマンスがどのように変化したのかもわかりますよね。それで応答速度が低下していれば、その原因を究明して対応することになるでしょう。そういった作業を繰り返していくことは、ソースコードの精度向上につながるのではないでしょうか(伊東氏)」
グループスでは、アプリケーションエンジニアやインフラエンジニアが積極的にコミュニケーションを図っているといいます。同社が質の高いソーシャルゲームを提供し続けられる理由に、エンジニア間の密な情報共有があるのは間違いなさそうです。