SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

【Developers Boost】セッションレポート (AD)

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

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

  • X ポスト
  • このエントリーをはてなブックマークに追加

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

  • X ポスト
  • このエントリーをはてなブックマークに追加

株式会社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に対し、大量の負荷をかけることから)に決定したという。

次のページ
「何がボトルネックか」を特定し、性能を改善する

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
【Developers Boost】セッションレポート 連載記事一覧

もっと読む

この記事の著者

CodeZine編集部(コードジンヘンシュウブ)

CodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/11320 2019/01/21 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング