View a markdown version of this page

GAMECOST03-BP02 ゲームバックエンドのデータベースを最適化する - ゲーム業界レンズ

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

GAMECOST03-BP02 ゲームバックエンドのデータベースを最適化する

ゲームは、プレイヤープロファイルやインベントリからゲーム内のマイクロトランザクションや進行状況メトリクスまで、さまざまな重要なデータを保存するためにデータベースに大きく依存しています。データベースは、プレイヤーグループ、パーティーの作成と維持、モデレーションポリシーの適用など、ゲームの社会的側面を管理する上でも重要な役割を果たします。ゲームのプレイヤーベースが大きくなるにつれて、データや使用状況の需要の増加に対応するために、関連するデータベースコストは必ず増加します。

このベストプラクティスを活用しない場合のリスクレベル:

実装のガイダンス

Amazon Aurora で実行されているゲームバックエンドには、いくつかのコスト最適化戦略を使用できます。主な推奨事項の 1 つは、使用パターンに基づいてリードレプリカを自動スケーリングし、トラフィックの変動を処理するためにレプリカの数を動的にスケールアップまたはスケールダウンすることです。つまり、本当に必要なリソースに対して料金を支払うことになります。もう 1 つの最適化戦略は、ゲーム分析に使用されるリードレプリカを Amazon S3 への DB スナップショットのエクスポートに置き換えることです。これは、S3 ストレージサービスが一般的にプロビジョニングされた Aurora データベースインスタンスよりも手頃な価格であるためです。詳細については、「Amazon RDS の Amazon S3 への DB スナップショットデータのエクスポート」を参照してください。

Amazon Aurora のリザーブド DB インスタンスをコアデータベースインスタンスに使用して Aurora Serverless 設定に移行すると、リソース使用率をより柔軟にきめ細かく制御できるため、大幅な長期コスト削減にもつながります

同様に、Amazon DynamoDB を使用するゲームバックエンドの場合、DynamoDB オンデマンドキャパシティモードを採用すると、特に新しいワークロードや予測不可能なワークロードでは、過剰プロビジョニングを必要とせずに消費したリソースに対してのみ料金を支払うことができるため、効果的な選択肢になります。ゲームトラフィックパターンが時間の経過とともにより安定し、予測可能になると、DynamoDB プロビジョンドキャパシティモードに移行できます。これにより、キャパシティプランニングを改善することでコスト削減を実現できます。DynamoDB テーブルで自動スケーリングを有効にすることは、もう 1 つのキー最適化です。これにより、サービスはトラフィックの変動に基づいてプロビジョニングされた容量を動的に調整できます。起動前に開発環境でゲームのデータ構造をテストして、不要なローカルセカンダリインデックス (LSIs)グローバルセカンダリインデックス (GSIs) を見つけて削除します。これにより、ゲームデータストレージとオペレーションの大幅なコスト削減につながる可能性があります。ゲームバックエンドコードから非効率的なスキャンオペレーションを削除して、よりターゲットを絞ったクエリを優先し、Amazon DynamoDB リザーブドキャパシティを購入し、AWS Lambda トリガーで DynamoDB Streams を活用してゲームバックエンドイベントを処理することで、DynamoDB コストをさらに最適化できます。詳細については、DynamoDB でのデータのクエリとスキャンのベストプラクティス」を参照してください。

Amazon Aurora と DynamoDB の両方にこれらのコスト最適化戦略を実装することで、ゲーム開発者とパブリッシャーはゲームバックエンドデータベースの支出を大幅に削減できます。

実装手順

  • Amazon S3 への Aurora リードレプリカの自動スケーリングと DB スナップショットのエクスポートを使用して、変動するトラフィックと分析のニーズをコスト効率良く処理します。

  • DynamoDB のコストを最適化するには、新しいワークロードのオンデマンドキャパシティから始め、予測可能なトラフィックの自動スケーリングを使用してプロビジョニングされたキャパシティに移行し、未使用の LSIs と GSIs を削除します。

  • ターゲットクエリを優先して非効率的なスキャンオペレーションを避け、リザーブドインスタンスまたはリザーブドキャパシティーを使用し、イベント処理 AWS Lambda に DynamoDB Streams を と共に使用します。