GAMESUS01-BP01 Use storage technologies that fit the patterns adapted to user content, subscriber information, and in-game purchases
You should classify your data by type, retention need and frequency
of access. This enables you to select the most optimized storage
solution for the myriad data types of your game or backend services
produce. Fast changing data should be stored in key-value or
in-memory database services. Transactional data should be store in
relational database services. Large files, game assets, or
user-generated content should be stored in object storage services.
Level of risk exposed if this best practice
is not established: High
Implementation guidance
Games produce and consume a large variety of data types that
require storage solutions optimized for frequency of access,
latency, and cost. Data stored should be classified using tags to
differentiate data that can be removed or needs to be stored
long-term.
The following services work well for a variety of Games use-cases:
Amazon Aurora (compatible with MySQL and PostgreSQL) offers high
availability, low-latency, and automatic scaling, making it an
excellent choice for handling large amounts of transactional data,
such as player account management and authentication, in-game
economies, leaderboards and player rankings, game state
persistence, event and campaign management, and multi-Region and
high-availability deployment.
Amazon DynamoDB is a fully managed NoSQL database known for its
low-latency, high throughput, and seamless scalability, which
makes it ideal for handling real-time player data, session
management, inventory, in-game economy, real-time multiplayer game
state, matchmaking, event logging, and scaling for global
audience.
Amazon DocumentDB (compatible with MongoDB) provides a scalable,
low-latency document-oriented database service, perfect for
storing flexible, semi-structured data, such as inventory system,
player profiles and customization's, game worlds and procedurally
generated content, social and player interactions, analytics and
behavior tracking, and in-game metadata and configurations.
Amazon ElastiCache supports in-memory caching with Redis or
Memcached, offering rapid data access and reduced response times,
which is critical for real-time multiplayer games where speed and
performance are essential for a smooth user experience.
ElastiCache is utilized in gaming for real-time leaderboards,
session management, caching game metadata, in-game chat and
messaging, matchmaking, real-time analytics and telemetry, and
scaling for high-traffic events.
Amazon Simple Storage Service (S3) can be used to store objects
like game assets, videos, pictures, text log files and more. S3 is
an object storage service offering industry-leading scalability,
data availability, security, and performance.
If it offers multiple storage classes that support frequent and
in-frequent data access, and cost-effective archive storage. For
data that is frequently accessed throughout development, studios
should store objects in
S3
Standard for low latency and high throughput performance.
For data that frequently goes from hot to cold or vice versa,
studios should investigate
S3
Intelligent-Tiering. Intelligent-Tiering monitors the
access patterns of your data and automatically moves data to the
most cost-effective access tier.
For studios that need high throughput, low latency and are ok with
it living in a single Availability Zone use
S3
Express One Zone. This replicates data to a single AZ and
can improve data access speeds compared to S3 standard. For deep
archive needs of historical data Amazon also offers
Amazon Glacier. The Amazon Glacier storage classes are
purpose-built for data archiving, providing you with high
performance, retrieval flexibility, and low cost archive storage
in the cloud.
Amazon Elastic Block Store can be used to store game servers' binaries,
executable files and configurations your game servers or asset
repositories need to function. You should snapshot and delete
unused volumes that are not attached to an EC2 instance. This
alleviates you from storage charges incurred while lowering the
usage of unneeded services and hardware.
Implementation steps
-
Classify game data by type, retention needs, and access
frequency, tagging data to distinguish between short-term
and long-term storage requirements.
-
Use Amazon Aurora for transactional data, DynamoDB for
real-time player data, DocumentDB for semi-structured data,
and ElastiCache for low-latency caching of time-critical
game information.
-
Store game assets, logs, and user-generated content in
Amazon S3, selecting appropriate storage classes (for
example, Intelligent-Tiering, One Zone, and Glacier) based
on access patterns and archive needs, and use EBS for game
server binaries and configurations with regular snapshot
management.