システムのQoSを把握するために、負荷試験は極めて重要
Arkはgumi社が自作したErlang製のリアルタイムサーバだ。通信処理を高速化するため、自社ゲームに最適化したシンプルなプロトコル設計となっている。ゲームロジックを持たず、Pub/Subの役割のみを担う。
gumiが開発した対戦バトルゲーム「ドールズオーダー」では、複数のユーザーが対戦する際にルームという機能が用いられる。マッチングされたユーザーが同じルームに入り、お互いの状態を同期しながら対戦を行う。その機能を実現しているのがArkによるPub/Subなのだ。
この前提を共有した後、叶氏は「なぜ負荷試験が必要なのか」について解説した。
「システムのQoS(Quality of Service)を把握するには、負荷試験を行う必要があります。システムのレイテンシーやスループットがどれくらいなのかを把握しなければ、ユーザーに安心してサービスを提供できません。
Arkはゲームを支えるうえで特に重要なサーバのため、リリース前の段階でも負荷試験を実施していました。しかし、リリース後に機能追加やバグ修正などを行ったため、再度負荷試験をする必要が出てきたのです」
負荷試験を行うにあたり、まず検討されたのはインフラ構成だ。サーバをAWS上に配置し、Arkサーバと負荷クライアントを同じネットワークから通信させた。これにより、ネットワークがボトルネックにならないようにしたという。
「インフラ構成を決めたら、次は負荷クライアントの用意です。Arkサーバでは自作のプロトコルが用いられているので、一般的な負荷試験ツールは使えません。そのため、私たちはツールを自作しています」
前回の負荷試験ではPython製の負荷クライアントが用いられた。だが言語の特性上、CPUの利用効率が悪かったため、今回は不採用となったそうだ。メンテナンスのしやすさも考慮し、今回の負荷試験ではArkでも用いられているErlangで負荷クライアントを実装する方針となった。
負荷クライアントの名は、Flood(洪水の意味。方舟の名を冠したArkに対し、大量の負荷をかけることから)に決定したという。