GS2 Blog

Game Server Services(https://gs2.io/) の最新情報をお届けします

C# SDK にカオスモードが追加されました

はじめに

GS2-SDK に「カオスエンジニアリング」のための機能が追加されました。

カオスエンジニアリング とは Netflix が提唱した開発手法です。
Netflix は皆さんもよく知る動画配信サービスですが、本番環境のサーバーをランダムに停止する「カオスモンキー」や、本番環境のデータセンターのサーバーを全て停止する「カオスゴリラ」、特定地域のデータセンターのサーバーを全て停止する「カオスコング」といったプログラムが日常的に動くことで、システムの障害耐性を高めるアプローチをとっているという発表を行い、方々に驚きを生みました。

この手法はゲーム開発にも応用できると考え、追加されたのが今回の機能です。

追加された機能の詳細

GS2-SDK の初期化時に「カオスレート」を指定できるようになりました。
カオスレートは SDKAPI 呼び出し時にリトライが必要なエラーを応答する確率です。

C# の初期化例

    var session = new Gs2.Core.Net.Chaos.ChaosGs2RestSession(
        new Gs2.Core.Model.BasicGs2Credential(
            "your client id",
            "your client secret"
        ),
        Region.ApNortheast1,
        0.1f // カオスレート
    );

Unity の初期化例

    var gs2 = await Gs2Client.CreateChaosAsync(
        new Gs2.Core.Model.BasicGs2Credential(
	        "your client id",
	        "your client secret"
        ),
        0.1f, // カオスレート
        Region.ApNortheast1
    );

このようにカオスレートを指定して初期化することで、指定した確率(例では10%)でリトライが必要なエラーが応答されるようになります。

GS2 を普段開発で利用していても、リトライが必要なサーバーエラーが発生する確率は極めて低いため、エラーハンドリングの実装が漏れて、いざエラーが発生してみるとゲームがフリーズすような事態が発生しがちです。
しかし、日頃からリトライが必要なエラーが応答されるようになるため、エラーハンドリングのミスに気づきやすくなり、最終的なゲームの品質が向上します。

ぜひカオスエンジニアリングに挑戦して、ゲームの品質をより良いものにするのにご利用ください。

(C) Game Server Services, Inc.