At Edgegap, we’ve been focused on making it simple for developers to use distributed infrastructures. Our platform, based on containerization and micro-services, automates the deployment and management of game servers on a highly distributed infrastructure so game studios can focus on what matters to their game and their players. We sometimes meet game studios that compare what we do with the Agones project. However, we’ve seen from experience that Agones was not made for high distribution, and the costs of running and managing it can quickly become prohibitive.
Kubernetes is headed the same way as mail servers
Ten years ago, every company hosted and managed its own email servers. Microsoft was selling licenses for their on-premises mail server, Microsoft Exchange, like candies. Today? Most SMBs are using a managed email server. Microsoft does not release the breakdown between Office 365 and Exchange self-hosted licenses, but they are directly correlated in the opposite direction. Within a few years, the same will be said about Kubernetes and services built on top of it, such as Agones.
Isn’t Agones just a simple software?
On the surface, Agones sounds like a dream for most game developers working on multiplayer games. It is an open-source fleet management software built on top of Kubernetes to manage and scale game servers on demand.
However, dev teams will quickly realize that the dream can become a nightmare. Running Agones is both challenging and time-consuming, even for experienced teams. It requires a deep understanding of the technology itself and the right kind of expertise to maintain and manage the cluster properly. This is especially true for highly distributed clusters, which can be even more complex. As the number of regions and countries increases, so does the complexity of managing the deployment and configuration of the cluster, which can make it difficult to ensure that all cluster components are correctly configured and working together.
Being an open-source project, the cost of the Agones software itself is typically free, which sounds great. However, you’ll quickly realize that the costs and resources to set up and manage it can become overwhelming.
Installing and managing Agones requires a good understanding of Kubernetes (K8), Linux operating systems and proficiency in a programming language like Python or Go. In addition, engineers must have experience with containerization technologies like Docker and containerD and be familiar with networking, security, and automation. Lastly, your team needs to have know-how on cloud-based technologies or on-premises hardware. That’s probably why DevOps engineers in the bay area earn, on average, USD 200k per year.
The cost of the underlying infrastructure will depend on where you choose to host your Kubernetes cluster(s). For example, suppose you host it on your hardware. In that case, the cost will be the physical servers’ price, electricity, and other resources needed to run them, along with insurance for the building, engineers, and everything in between. If you host it on a cloud provider, the cost will be the price of the virtual machines and any other services that you use, such as storage and networking. As someone trying to understand cloud invoices monthly, I confirm this can quickly whirl down into an expensive bill (public IP, network traffic, load balancers, storage, API calls, support fee…)
In addition to the infrastructure and software costs, there may be costs associated with any additional tools or services you use with Kubernetes. For example, you may need to pay for a load balancer, monitoring and logging services, or a continuous integration and deployment (CI/CD) platform. The specific costs will depend on the tools and services you choose.
Don’t fool yourself, you may think that a virtual machine at $50 per month will suffice to run this open-source software, but the reality is far from it.
Heading towards managed services
Like the transition from Exchange servers a few years ago, managed services have started replacing self-hosting. Using a fully managed Kubernetes service provides many benefits. For starters, it takes the burden of managing and maintaining the cluster off your hands. This can save your team significant time and effort, allowing them to focus on more important tasks.
Additionally, a fully managed service can provide access to expert support and guidance. This can be especially useful for organizations new to Kubernetes or unsure how to utilize the technology best. With a managed service, you can get help and advice from experienced professionals who deeply understand the technology and can provide valuable insights and guidance.
Another advantage of using a fully managed Kubernetes service is the ability to scale quickly and easily. Once your organization grows, and your workloads become more complex, a managed service can provide the flexibility and scalability you need to keep up. This is especially important for highly distributed clusters, which can be challenging to manage and scale independently. Your goal is to make a great and successful game rather than to handle the underlying plumbing that serves your game to players.
Overall, using a fully managed Agones/Kubernetes service can provide many benefits, including saving time and effort, access to expert support, and the ability to scale quickly and easily.
The real question is; do you even need Agones in the first place?
Kubernetes was initially made for web-based technologies. They manage thousands of stateless connections, serving small requests for a fraction of a second. Game servers are the opposite of this philosophy. Game servers and relays are stateful, managing persistent connections for 5 to 45 minutes.
The gaming industry is used to configuring as many servers as possible and having them “standing by” for players to connect. AWS Gamelift has been a precursor of this architecture. With this architecture in mind, Agones is a CRD to enable such standby servers within Kubernetes. However, having standby instances is unnecessary and brings little value considering Kubernetes is not meant to manage such stateful applications in the first place.
The reality is that since its launch in 2018, Agones has been a solution in search of a problem. It is too complex for small teams to set up and manage, and it won’t solve the problem of bigger teams needing highly distributed servers.
Take the good of Agones architecture, leave the bad behind (or to someone else)
Agones takes as input from you, the game developer, a container image. For those who don’t know, containers are a popular technology for deploying and running applications in a lightweight and portable manner. They offer several benefits compared to virtual machines and bare metal servers, including increased efficiency, portability, and flexibility.
One of the main benefits of containers is that they are more efficient than virtual machines or bare metal servers. Containers share the host operating system, whereas each virtual machine runs on its guest operating system, which can be resource intensive. By sharing the host operating system, containers can use fewer resources and provide better performance than virtual machines.
Another benefit of containers is their portability. Unlike virtual machines, which are tied to a specific hypervisor and host operating system, containers can be easily moved between different environments and platforms. This makes it easy to deploy and run your applications on other infrastructures, whether on-premises, in the cloud, or on a hybrid setup.
In addition to increased efficiency and portability, containers also provide greater flexibility. With containers, you can easily package and deploy your game and its dependencies as a single unit, which makes it easy to update and maintain your applications. This can be especially useful for microservice architectures, where applications are broken down into smaller, independent components.
Velocity vs. Do-it-yourself
There is a swarm of emerging vendors proposing SaaS environments for game developers to host and manage the lifecycle of their games without the hassle of handling Agones and Kubernetes. For some reason, the gaming industry tends to try to reinvent the wheel constantly, and Agones is one of those examples. From a cost perspective to a velocity and quality of service, the only driver to manage Agones internally is to please backend developers that want to keep managing servers instead of doing productive game development work. At the end of the day, the game studio and the players often pay the price.