リアルタイム性の高いゲームを楽しむ上で、ネットワーク遅延を起こすことはゲームタイトルの本来の魅力をユーザーに伝えられないことと同義です。
一方でネットワーク遅延を起こさないために、サーバーリソースを余剰に投資し続けることは、サーバーコストの増加、及びサーバー管理人件費の増加に繋がり、事業としての収益を圧迫します。
ゲームタイトルを運営する事業者は、ネットワーク遅延を起こさずに、適正なサーバー運用コストをコントロールし続ける必要があります。
リアルタイム通信は我々の生活と切り離せない存在になりました。
例えば、スマホで気軽に全世界のユーザーと通信対戦を行う、リモートワークでビデオ会議システムを活用しビジネスの議論をする、オンラインのライブイベントに参加をするなど、これら全てにリアルタイム通信が使用されています。
一方で、リアルタイム通信を行う環境を用意することは簡単ではありません。なぜならば、これらのサービスは1秒間に数十回のサーバーとの高頻度の通信を行いますが、遅延を数十ミリ秒に抑えなければ利用者の満足度を下げることに繋がるためです。
イメージしてください。大切な案件でリモート会議をするときに、毎回声が遅れてしまうと商談もうまくまとまりません。対戦型のゲームを行っているときに、1秒間キャラクターが止まっていては、どれだけの技術を持っていても相手に勝つことはできません。
リアルタイム通信を伴うサービスの顧客満足度を高位に保つためには、一つのサーバーに多数のユーザーが接続しても安定して、遅延なく運用できるリアルタイム通信専用のサーバー「リアルタイムサーバー」が必要となるのです。
リアルタイムサーバーを運用するためには、運用対象のサーバー自体に関わる「サーバーコスト」と、その運用を行う「運用人件費」が必要となります。
遅延を起こさずに、サーバーにつながる全てのユーザーとの通信を行うためには、常にサービスを利用する最大人数をベースに環境を構築する必要があります。
例えば、一つのサーバーに同時接続する人数を 100 人以内に抑えると安定的に運用できるサービスが、 10 万人のユーザーを抱えている場合、サーバーを 1000 台用意する必要があります。しかし、全てのサービスにはピークタイムとアイドルタイムが存在します。 10 万人の接続が行われるピークタイムとユーザー数の少ないアイドルタイムのギャップが大きいサービスであればあるほど、余剰のサーバーコストを支払うこととなります。それを避けるために、これらの不要な余剰サーバーについては運用担当者が手動で管理し、コストを最適化する必要があります。
前述の通り、サーバーの保守、管理はリアルタイムサーバーにおいては基本的に手動で行われるため、運用するための人件費が増加します。
具体的に月間の運用コストを試算してみます。運用を担当するエンジニア一人あたりの勤務時間は 1 日 8 時間、月間 20 日稼働する場合、160 時間が一人がひと月に稼働できる時間となります。この数値をベースに、月間稼働時間 24 時間 × 30 日=720 時間の運用体制を敷くには、最低限5人の人員が必要となり、時間単価 3000 円で試算すると 216 万円の人件費が必要となります。
必要となる人件費の絶対額もさることながら、サーバーを管理するエンジニアの働き方は昼夜関係なくサーバー情報を常に監視、問題があれば即時に対応することが求められるので、非常にシビアな労働環境であることが多く、人材の流動性も高い職種です。そしてエンジニア売り手市場の今、優秀なエンジニアを社内に留めることの難易度も増加しております。
サーバーを維持管理をするための人件費、そして退職が発生した場合その採用コストを含めた、トータルのコストを運用人件費として認識し、最適化をしていく必要があります。
一般的に、HTTP サーバーといったステートレスなサーバー運用コストを下げるためのアプローチとして、オートスケーリングといった手法がよく用いられます。
しかし、対照的にリアルタイムサーバーのオートスケーリング化は実現するのが困難なことが多いです。
その理由として、リアルタイムサーバーはステートレスな HTTP サーバー等と異なりステートフルな性質による課題を多く抱えるためです。
課題としては、
等々が挙げられます。
そこで提案させていただきたいのが、Diarkis のオートスケーリング機能です。
Diarkisでは独自のサーバーディスカバリーの仕組みによってサービスインしているサーバーを自動的に取得し、クライアントに返す仕組みを持っており、新規に起動したサーバーへの流入をマネジメントすることを可能にしています。
また、Diarkis では内部に独自のメンテナンス状態を持ち、新規ユーザーの流入の停止と、接続済みユーザーが正常に切断するまで、終了しないという仕組みを持っています。
以上の機能によって、Diarkis を使用すれば、リアルタイムサーバーにおいてもオートスケールを実現することができます。
Diarkis でオートスケールが可能なことを前述しましたが、さらにコスト最適化を行いたいためにはどのようなアプローチが考えられるのでしょうか。
そこで我々が提案するのが、いつ落ちるか予測不可能だが安価に使用できるという特徴を持ったインスタンスをリアルタイムサーバーに使用するです。
このタイプのインスタンスは AWS においてはスポットインスタンス、GCP においては PreemptibleVM と呼ばれます。
この種のインスタンスは、非常に安価で利用できると言った特徴を持っています。
しかし一方でいつシャットダウンされるかが予測できないためにリアルタイムサーバーにおいては今まではほぼ利用されていませんでした。
Diarkis においては、Diarkis Room Migration というユーザーが接続しているリアルタイムサーバーのメモリ内の情報を別のリアルタイムサーバーに移動させ、シームレスに接続を切り替えるという画期的な機能を備えています。
この機能によって、Diarkis を使用した場合には、予期しないシャットダウンが開始されたときに、別のサーバーにユーザーを退避させることによって中断を挟まずにサービスを継続することができます。
この Diarkis Room Migration 機能によって、スポットインスタンスの利用が可能になり、大きくサーバーコストを削減することができます。
全体のインスタンスのうち、5 割をスポットインスタンスにした場合には、30 %ほどのコスト削減効果が見込まれます。
リアルタイム通信を行うサービスを運営する事業者は、高頻度の通信を低遅延で行いつつ、コストを最適化し続ける必要があります。
この環境を構築する上で、リアルタイムサーバーを活用することはとても有効です。
一般的に、安定性とサーバー運用コストはトレードオフだと思われがちですが、必ずしもそうではありません。
今回お伝えした仕組みを活用すると、高い安定性を維持しながら、大幅なコスト削減も実現できます。
Diarkisの「オートスケール」と「Diarkis Room Migration」によって、ユーザー満足度を高めながら、事業の収益性を向上させましょう。