MediaMolecule is a game developer based in the U.K. The company is now part of Sony Worldwide Studios and has released two games, LittleBigPlanet (LBP) and LittleBigPlanet 2 (LBP2), along with many add-ons. These games pioneered user-generated content on the PlayStation 3 platform.

MediaMolecule looked at Amazon Web Services (AWS) because, says Alex Evans, CTO, “Back in 2009, AWS seemed to be the best solution available to allow a small, independent company to rapidly develop and test a completely new infrastructure, and host it. We also loved the flexibility that AWS allowed us, when spinning up smaller test environments, for beta trials, QA, localization, and during development. The low initial cost was also crucial.”

Evans adds, “Large console games tend to launch to a large spike of initial activity. So, we couldn’t slowly build up our infrastructure as the audience grew. We knew that on day one we would have to handle millions of users and serve tens of thousands of requests per second.”

LBP was originally run on traditional hardware, using Java, Oracle, and NetApp filers as the primary parts of the architecture. Evans notes: “For LBP2, we rebuilt the servers from the ground up to run on AWS. We actually launched the new servers on AWS before the second game came out. We migrated all the old data from LBP into AWS, and then switched the original game over. This provided a nice stress test of the new servers before the huge influx of new players at the launch of LBP2. Both of the games now share this single server set.” The setup uses Amazon Elastic Compute Cloud (Amazon EC2), Amazon Elastic Block Store (Amazon EBS), Amazon Simple Storage Service (Amazon S3), Amazon CloudFront, Amazon Simple Queue Service (Amazon SQS), and Amazon Elastic IP Addresses.

Evans describes additional aspects of MediaMolecule’s configuration: “The servers provide game services, user-generated content storage, and delivery, as well as a website. The data is stored in a custom data store, written in C++, and running on 24 m2.2xlarge instances. The front-end applications use a mixture of C++ and Ruby, behind HAProxy for load balancing and nginx for HTTP(S), with Varnish providing HTTP caching for LBP.me. The database stores transaction logs and checkpoints on Amazon EBS volumes, which we back up to Amazon S3. User-generated content is cached on the front-end servers’ local storage, and also placed in Amazon S3 as the persistent store. We have over 3 TB of data stored in Amazon S3, made up of hundreds of millions of files. The database currently stores over 3 billion key/value pairs.”

Through the development process, Evans learned several valuable lessons:

“Ensure that you design your architecture to play to the strengths of the AWS environment.”

“On the other hand, don’t make any engineering decisions that tie you to AWS specifically.”

“If you give a single team the power and responsibility to develop, provision, deploy, support, and maintain everything from applications to infrastructure, everything becomes more efficient.”

Evans describes the level of activity possible with the AWS configuration: “Our full production environment is about 50 instances, serving over 6 million levels created by a very active community of LBP and LBP2 players. At our peak of activity shortly after the launch of LBP2, we had over 80,000 concurrent users making just fewer than 30,000 HTTP requests per second. Right now, our weekend peaks are consistently about a third of that. We currently serve about 1 TB of traffic per day.”

MediaMolecule will likely continue to use AWS. Evans says, “AWS is certainly something that we will consider for future projects.”