はじめに
GS2-SDK に「カオスエンジニアリング」のための機能が追加されました。
カオスエンジニアリング とは Netflix が提唱した開発手法です。
Netflix は皆さんもよく知る動画配信サービスですが、本番環境のサーバーをランダムに停止する「カオスモンキー」や、本番環境のデータセンターのサーバーを全て停止する「カオスゴリラ」、特定地域のデータセンターのサーバーを全て停止する「カオスコング」といったプログラムが日常的に動くことで、システムの障害耐性を高めるアプローチをとっているという発表を行い、方々に驚きを生みました。
この手法はゲーム開発にも応用できると考え、追加されたのが今回の機能です。
追加された機能の詳細
GS2-SDK の初期化時に「カオスレート」を指定できるようになりました。
カオスレートは SDK の API 呼び出し時にリトライが必要なエラーを応答する確率です。
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 を普段開発で利用していても、リトライが必要なサーバーエラーが発生する確率は極めて低いため、エラーハンドリングの実装が漏れて、いざエラーが発生してみるとゲームがフリーズすような事態が発生しがちです。
しかし、日頃からリトライが必要なエラーが応答されるようになるため、エラーハンドリングのミスに気づきやすくなり、最終的なゲームの品質が向上します。
ぜひカオスエンジニアリングに挑戦して、ゲームの品質をより良いものにするのにご利用ください。