Minecraft appears to be the gaming and visual building environment of choice for today's youth! Pretty much everyone I know in the 8-18 age range admits to spending a lot of time in-world. The game's outward simplicity hides an environment of considerable richness and complexity, with many interesting emergent properties.
The game runs in single and multiplayer mode. In the latter mode, you can host and run your own server for you and your friends, or you can use a commercial or freely available multiplayer host. Running your own server brings with it all of the usual issues -- maintenance, scaling, security, and upgrades. You can avoid these issues by using a multiplayer hosting service. The hosts remove the administrative burden and make it possible for more fans to enjoy and to play multiplayer games.
Minecraft Realms is a new multiplayer hosting service from Mojang, the creators of Minecraft. It was designed to help people who don't want to deal with all of the technical aspects of hosting. Each realm can accommodate up to 20 friends, 10 of which can be playing at any given time. The service is offered on a subscription basis, and is currently available to players in Sweden, with plans to expand availability in early 2014.
In order to prepare for the expected onslaught of players, the development team at Mojang decided to host Realms on AWS. I chatted with Chief Architect Daniel Frisk (pictured at right) to learn more about why and how they did this.
The team was impressed by the ease with which they were able to get started on AWS. They enjoyed the fact that they didn't have to make an investment in development or production hardware, and looked forward to being able to scale their systems as needed once they were in production.
Assisted by the AWS Solution Architects, the team decided to make use of the following AWS services:
- Amazon EC2 for compute power.
- Amazon Elastic Block Store (EBS) for file storage.
- Amazon Relational Database Service (RDS) for database storage.
- Amazon S3 for object storage and backup.
- AWS Elastic Load Balancing to distribute incoming requests.
The architecture is clean and simple, with three distinct types of servers:
- Frontend - Handles communication with clients and serves dynamic web pages.
- Manager - Manages the controllers, starting and stopping them as required; collects data & statistics.
- Controller - Runs the Minecraft game servers.
Daniel was kind enough to share the architecture with me:
The architecture was designed for scalability and high availability. Controllers hosting the game are added and removed in response to changes in demand, and there's no single point of failure.
The Minecraft client applications require low-latency access to the Realms servers. In order to meet this need, servers are run across multiple AWS Regions (see the AWS Global Infrastructure page for more information).
Minecraft worlds and game state are stored in Amazon S3. The system takes advantage of S3 versioning, giving the owner / administrator of a realm the ability to roll back to a previous state. The team implemented efficient transfers to S3 by using S3's multipart upload capabilty.
PS - If you are interested in building and hosting a game of your own on AWS, please take a look at our game hosting page.