Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

秒間10万メッセージをさばけ! リアルタイム対戦バトルゲームを支える負荷試験の挑戦【Developers Boost】

【A-2】リアルタイム対戦バトルゲームを支えるリアルタイムサーバの負荷試験のリアル

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2019/01/21 11:00

 12月15日、翔泳社主催の若手エンジニア向けカンファレンス「Developers Boost(デブスト)~U30エンジニアの登竜門~」が開催された。企業の中核を担う30歳以下(U30)の若手エンジニアたちが登壇。その知識やノウハウを惜しみなく公開した。本セッションで取り上げた「Arkサーバ」は、gumiのリアルタイム対戦ゲームを支えるリアルタイムサーバだ。対戦バトルゲーム「ドールズオーダー」でも、他ユーザーとの対戦時の通信処理に本サーバが活用されている。Arkサーバの負荷試験における試行錯誤の歴史を、エンジニアの叶若帆氏がふり返った。

目次
株式会社gumi Technical Strategy & Development 叶 若帆氏
株式会社gumi Technical Strategy & Development 叶 若帆氏

システムのQoSを把握するために、負荷試験は極めて重要

 Arkはgumi社が自作したErlang製のリアルタイムサーバだ。通信処理を高速化するため、自社ゲームに最適化したシンプルなプロトコル設計となっている。ゲームロジックを持たず、Pub/Subの役割のみを担う。

 gumiが開発した対戦バトルゲーム「ドールズオーダー」では、複数のユーザーが対戦する際にルームという機能が用いられる。マッチングされたユーザーが同じルームに入り、お互いの状態を同期しながら対戦を行う。その機能を実現しているのがArkによるPub/Subなのだ。

 この前提を共有した後、叶氏は「なぜ負荷試験が必要なのか」について解説した。

 「システムのQoS(Quality of Service)を把握するには、負荷試験を行う必要があります。システムのレイテンシーやスループットがどれくらいなのかを把握しなければ、ユーザーに安心してサービスを提供できません。

 Arkはゲームを支えるうえで特に重要なサーバのため、リリース前の段階でも負荷試験を実施していました。しかし、リリース後に機能追加やバグ修正などを行ったため、再度負荷試験をする必要が出てきたのです」

 負荷試験を行うにあたり、まず検討されたのはインフラ構成だ。サーバをAWS上に配置し、Arkサーバと負荷クライアントを同じネットワークから通信させた。これにより、ネットワークがボトルネックにならないようにしたという。

 「インフラ構成を決めたら、次は負荷クライアントの用意です。Arkサーバでは自作のプロトコルが用いられているので、一般的な負荷試験ツールは使えません。そのため、私たちはツールを自作しています」

 前回の負荷試験ではPython製の負荷クライアントが用いられた。だが言語の特性上、CPUの利用効率が悪かったため、今回は不採用となったそうだ。メンテナンスのしやすさも考慮し、今回の負荷試験ではArkでも用いられているErlangで負荷クライアントを実装する方針となった。

 負荷クライアントの名は、Flood(洪水の意味。方舟の名を冠したArkに対し、大量の負荷をかけることから)に決定したという。


  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

バックナンバー

連載:【Developers Boost】セッションレポート
All contents copyright © 2005-2019 Shoeisha Co., Ltd. All rights reserved. ver.1.5