In this post, we dive into four reasons why containers may be the power-up game development companies are looking for.
1. Quicker Deploy Time, Quicker Recovery
Imagine a new player attempting to start up the game and not being able to load the first screen. Or a seasoned player in the middle of a crucial raid experiencing lag. Gamers are fickle and demanding customers. The cost of poor performance is undeniably too high for gaming development teams to risk performance issues.
One option to prevent lag is to run server resources at a much higher level than required. In reality, this is impractical and costly. Instead, DevOps teams can use containers to lower the risk of balancing cost with performance. Container deploy time is almost instantaneous. This is mostly due to containers sharing an OS kernel, and not requiring new installations of services.
Because container images deploy instantly, there’s no delay in delivering more resources to a struggling server. Containerization allows teams to operate on a “just in time” scaling philosophy, with the confidence that adding more power will deploy instantly, and accurately, every time.
2. More efficient load balancing
Another benefit of a containers’ shared operating system is significantly less overhead. Containerized systems use less RAM, and allow for on-the-go load balancing – further reducing the cost of scaling an AAA game.
Because containers share the same OS, application logic is never replicated when run. You can initiate the same process multiple times without requiring more memory. However, while the actual byte-code of the program is shared, the memory required to store the running state for each instance will be consumed as usual. In addition, unlike VMs, containers don’t require a pre-allocated section of memory for the OS, so they are much more lightweight to install. You can run thousands of containers on a host server, which would be nearly impossible with VMs.
Top Benefit: Efficient resource sharing means all connections keep moving smoothly – your players will be less likely to notice reductions in performance as more players come online.
3. Empowered Development Teams
Often the necessity of stability means that new features aren’t deployed to players as quickly as they should be. Containers help address this issue by putting the ownership of builds directly in the hands of the engineers. Compiling a container using Docker images is simple. It doesn’t require complex provisioning scripts to install a new micro-service on a cluster – instead, simply hand the image to the production cluster, and it runs. Releasing a new microservice becomes a development led initiative – letting them focus on creating the best possible game experience instead of fighting with the administration of deployment.
Riot Games, the creator of League of Legends has moved to using containers for continuous deployment for the stability benefit. Using Docker container files means that they could achieve their core principles: true engineering ownership over their build environments. Developers have found it faster to iterate and deploy improvements to their audience, which means League of Legend players are always getting the best possible experience and the latest code.
Top Benefit: Faster iteration and improvement deployment
4. Deploy with confidence across multiple environments
Before containerization, the portability of deployments was often reliant on luck. Containers separate the application needs from infrastructure restrictions, so code functions the same across multiple environments.
By drawing a black box around the contained code, file systems, processes and the applications within, containers effectively become building blocks with output and input – and very little affects the operations within them. Containers can be moved between servers which makes hardware maintenance much simpler. They can also be moved and deployed across different development environments, meaning that moving the same code from development to staging to production is a breeze.
Top Benefit: Environment agnostic deployments means that the development team can retain accountability for staging, QA and production environments. Testing new code becomes less of a guessing game on dependencies, and more player experience focussed.
We anticipate seeing many more AAA games moving to containers to reap the many benefits it brings to engineering and devops teams alike. For more information on containers and their benefits to gaming companies, check out 100TB’s white paper on Harnessing the Power of Containerized Gaming.