コストの最適化
GS2 の利用料金を最適化するための設計ガイド
GS2 は従量課金制を採用しているため、ゲームの設計次第で利用料金が大きく変わる可能性があります。 このセクションでは、パフォーマンスを維持しつつコストを抑えるための設計のポイントを解説します。
1. API 呼び出し回数の削減
GS2 の料金の大きな割合を占めるのが API のリクエスト数です。
SDK のキャッシュ機構を活用する
GS2 SDK にはキャッシュ機構が組み込まれています。
同じデータを短時間に何度も取得する場合、サーバーへリクエストを飛ばさずにキャッシュから返すように設計されています。
SDK の各メソッドの Future や Async 版を使用する際、可能な限り高レベルな API(Domain オブジェクトを介したアクセス)を使用してください。
まとめて取得・更新する
例えば、複数のアイテムの所持数を取得する場合、個別に API を呼ぶのではなく、インベントリ全体を一度に取得する方がリクエスト数を抑えられます。
2. GS2-Deploy によるリソースの適切な管理
不要なネームスペースやリソースが残っていると、わずかですがストレージ料金や管理コストが発生し続ける場合があります。 開発環境や検証環境は、不要になったら GS2-Deploy のスタックを削除することで、関連するリソースを一括でクリーンアップできます。
3. GS2-Script の実行効率
GS2-Script の実行料金は、実行時間に応じて変動します。
- 効率的なコード: ループ内での不要な API 呼び出しを避けるなど、Lua スクリプト自体の効率を高めて実行時間を短縮してください。
- 外部通信の最小化:
http.getなどの外部通信は実行時間を延ばす要因になります。
なお、メモリ使用量は直接料金には影響しませんが、使用可能なメモリ容量には制限がある点に注意してください。
4. ログと分析の活用
各マイクロサービスのネームスペース設定で GS2-Log を関連付けることで、各マイクロサービスのアクセスログ(リクエスト・レスポンスの内容)を収集できます。 これにより、特定の機能が想定以上のリクエストを発生させていないか、どの API がコストの要因になっているかを詳細に分析し、最適化に役立てることが可能です。