Customer Introduction
Scaling Gaming Platforms
Up through 2018, the customer ran its core game platform on-premises and at co-location facilities. To achieve the scalability needed for Rogue Company, its latest game, the customer moved its core platform to Azure Kubernetes Service and Azure SQL, using Kafka for messaging, HashiCorp Terraform for deployment, and GitHub for source control and collaboration. Since then, the customer has adopted several additional Azure services, open-source solutions, and HashiCorp tools—giving the company a scalable DevOps environment that benefits both its centralized back-end services team and its portfolio of game studios.
Continued Success
Up through 2018, the customer ran its core game platform on-premises and at co-location facilities. To achieve the scalability needed for Rogue Company, its latest game, the customer moved its core platform to Azure Kubernetes Service and Azure SQL, using Kafka for messaging, HashiCorp Terraform for deployment, and GitHub for source control and collaboration. Since then, the customer has adopted several additional Azure services, open-source solutions, and HashiCorp tools—giving the company a scalable DevOps environment that benefits its centralized back-end services team and its portfolio of game studios.
Containerization on AKS
As the customer moved its on-premises applications into Azure Kubernetes Service, they also migrated the data stores needed to support those applications to Azure. Azure SQL Managed Instance provided a simple migration path for older databases. At the same time, the Azure SQL Database Hyperscale tier gave customers the scalability needed to handle the massive database load that Rogue Company would eventually generate.
Initial Gen-2 efforts also marked the company’s adoption of Azure Container Registry, which stores container images before they’re deployed into Azure Kubernetes Service.
With Azure Kubernetes Service is beyond anything customers could have achieved before, and the way it automates everything for us is like having a free ops team.
Adoption of other Azure Services
While Azure Kubernetes Service and Azure SQL were primary enablers for supporting more concurrent gamers, they aren’t the only Azure services customers have adopted to meet their scalability needs. The company’s homegrown ETL pipeline that feeds its data warehouse—developed soon after its move to Azure—is a good example.
In the past, the ETL pipeline used long-running Python scripts that ran on game server instances for data collection. Other Python scripts running as scheduled jobs would then periodically collect that data, transform it, and load it into the data warehouse. This approach provided manifold problems.
The customer solved all these problems by rebuilding the ETL pipeline using Azure services. Today, the game servers send HTTP messages containing file content to an Azure Function, which stores that data in Azure Blob Storage. The function also sends an event to Azure Event Hub, upon which another Azure Function loads the information into the data warehouse.
Use of Open Sources
As the company’s use of Azure services has expanded, so has its use of open source. Today, in addition to Kafka, the customer also uses Apache ZooKeeper for configuration management, Linkerd as a service mesh, FastAPI to publish Python APIs, and HELM for the deployment of containerized applications into Azure Kubernetes Service.
GitHub for Source Control
Historically, Customers, like most leading game studios, used Perforce for all their source control needs. However, since the company’s move to Azure, the Back-end Services Team has moved almost all of its code to GitHub.
The back-end services team also uses GitHub to request changes from other parts of the business.
Customers use it for pull requests and other coordination tasks. The HELM charts for our Kubernetes environment are also stored in GitHub, which we use to automate a CI/CD process for each environment. And we run many environments for each game, so there’s a lot to manage in that area. Being able to stay hands-off via automation has been a huge win.
Hashicorp Tools for DevOps
Alongside Azure, open source, and GitHub, tools from HashiCorp comprise the fourth major pillar of the company’s Gen-2 architecture. Use of the HashiCorp suite began alongside the move to Kubernetes when the company began using HashiCorp Terraform to describe the deployment of Azure Kubernetes Service clusters using code stored in GitHub.
Terraform lets customers codify what they want in a text file and then creates that infrastructure for them in a fully documented and repeatable manner. With Terraform, we know that any time we deploy a Kubernetes cluster or other resource, it is set up correctly.
Terraform also makes provisioning new infrastructure faster and easier. Xie's new ETL pipeline is a good example.
The customer also adopted HashiCorp Packer, which enables the creation of identical machine images for multiple platforms from a single source configuration.
Solution Design
A Successful Launch
The customer released Rogue Company into open beta in October 2020 across the Windows, Xbox One, PlayStation 4, and Nintendo Switch platforms. An Xbox Series X/S release followed in November 2020. A PlayStation 5 release followed in March 2021, and the game came out of beta in May 2022.
The company’s Gen-2 architecture, based on Azure, GitHub, open source, and the HashiCorp suite, helped pave the way for Rogue Company's success. It delivered the scalability needed to support 15 million players within the first two months—followed by millions more since then.
What’s more, with the DevOps environment that customers now have in place, developers across the company are also more agile—able to deliver new functionality faster and with fewer distractions.
As customers continue to delight gamers with new experiences, the company plans to rely on the technology partners that helped it get to where it is today.
Hozzászólások