Big data reference architecture for an online multiplayer game on Azure

TL;DR – code is here on GitHub

A customer I’ve been talking to recently asked me to work together to create a reference implementation (more like a proof of concept) for the next generation the backend for a game they currently have. In short, they needed a platform that would accommodate these needs and specifications:

  • accept incoming messages from game servers
  • incoming message rate would be a couple of hundred messages per minute
  • we need to store game session related events, so each piece of data is relevant to a specific game session that can run for minutes (20′-30′)
  • scalability and high availability (of course)
  • data is needed to be displayed in real-time (e.g. live leaderboards)
  • data is needed to be stored for later analysis (e.g. best players of the week)

This is a perfect example of a problem can be solved with a solution based on the lambda architecture pattern. After some research and some experimentation, we ended up using the following Azure services:

architecture

This is by no circumstances the only (or even the best!) solution (e.g. one could also use Databricks, Stream Analytics or HDInsight), however, for our purposes it worked quite well.

Feel free to check out the code at the GitHub repository here: https://github.com/dgkanatsios/GameAnalyticsEventHubFunctionsCosmosDatalake

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s