大規模ゲーム運営のポイント:監視とインフラ運用
監視では、コンテンツに影響を与えないことが前提となります。また、規模が大きいため監視の追加で手作業を減らすことがポイントです。コナミでは、アラート通知は「Nagios」、統計情報は「Cacti」を利用し、商用の監視システムや用途不明なエージェントは利用しません。また、OS標準の仕組み(SNMP)を利用します。安易に監視スクリプトなどを作るとシステムに影響が出るので注意が必要です。アクセスログは1日で1GBに達することもあるので、すべてのログを読み込むものはまったく適しません。差分でログ内容を精査します。
また、インフラ運用については、以下の3つをポイントとして挙げました。
1:コンテンツとしっかり歩調を合わせること
コンテンツのイベントの計画や更新等のスケジュールを把握し、しっかりと追随していくこと。また、エラーログやslow query、dead_lockなどの情報はコンテンツチームと共有し、問題が大きくなる前に改良改善のサイクルを確立します。下請け、言われっぱなしのインフラは絶対にダメです。
2:監視で収集可能な情報は全部取ること
これにより、インフラでボトルネックになっているポイントやサービス規模の拡大に伴う増強のタイミングを知るための一次情報となります。仮想サーバを中心に構築している場合は、各サーバのDisk I/Oがサーバ増強の判断基準になりました。また、レプリケーション遅延やslow queryをグラフ化することも対処の時間が早くなり有効でした。
3:インフラ設定、構築、運用の効率化を常に考えること
サービス規模、コンテンツ数など、SNSの世界はヒットコンテンツが生まれると、あっという間に物凄いスピードで走り出します。サーバ構築の効率化など、新規コンテンツが来る前から時間があるときに準備を進めておくことが大事です。人を増やすことが容易でないケースも多いため、効率化によって人手に頼らず業務を回せるようにしておきます。
大規模ゲーム運営のポイント:パブリッククラウドを上手に使いこなす
最後に、パブリッククラウドの選び方や使い方のコツをうかがいました。正延氏は5つのポイントを挙げています。
1:クラウド業者はポイントを絞って選定する
- クラウドならではのフレキシブルな料金体系を持っている(SNSのサービス期間が短命なこともあるため、1か月単位でしか料金を出せないようなクラウド事業者の利用は避ける)。
- クラウドならではの機能やオプションが豊富であること。サーバスペックのアップダウン、サーバイメージのクローニングは必須。また保険として、物理サーバを利用できるオプションは絶対にあった方がいい。
- サーバの納期が早いこと。SNSはスピード感が非常に大切。サービスの投入や増強、縮小などにタイムラグが発生するようなクラウド事業者は使えない。
2:クラウドで便利な機能は最大限活用する
サーバスペックのアップダウン、サーバイメージのクローン、上流回線の増減など、コンテンツの規模に合わせてより短時間で、より低コストで実現することが求められます。
3:サーバ費用は上手に圧縮する
開発時点は、低スペックなサーバでスタートします。負荷テスト時などは本番相当のサーバへスペックアップを実施し、本番開始直前までは低スペックに落とす。そして本番直前にスペックをアップする。サーバ台数の見直しも、こまめに行います。
4:パブリッククラウドを使う上でのリスク管理をしっかりする
セキュリティの確保は重要な要素。クラウド事業者のメンテナンス情報をこまめにチェックし、在庫切れなどの情報は営業経由で聞き出します。
5:パブリッククラウド間の引越しも検討する
サービス規模が大きくなったり、現在のクラウド事業者のメニューだけではサービスを提供できなくなった際には、引越しの決断も必要。例えば、仮想サーバから物理サーバに引っ越せば、大幅なスペックアップを図れます。ただし、データベースサーバのデータ移行は、かなり困難。インターネットをまたいだMySQLレプリケーションが非常にスムーズでよいです。
まとめ
ソーシャルゲーム開発・運用にまつわるノウハウをいくつかご紹介してきましたが、このように大規模Webサービスの最前線を支えるエンジニアを、コナミデジタルエンタテインメントでは積極的に募集しています(2011年12月現在)。Webアプリ開発、運用、ネットワーク管理と幅広いエンジニアを求めていますので、意欲のある方は採用ページから奮ってご応募ください。