Armada: A Hybrid Approach to Bare Metal and Cloud Infrastructure — Part 1
Written by Michael Assis. Article was originally published on AccelByte Blog, re-posted here for more people to observe and enjoy.
If you have spent more than 5 minutes researching server hosting on the internet recently, you have almost definitely been encouraged to use “the cloud”. Google and Amazon have dominated the hosting space, offering solutions and products that aim to make hosting as easy as possible at a ‘fair’ price. The crazy thing about this is that “the cloud” is actually just a bunch of bare metal servers in a data center, with an elaborate management system running it all. So why not just skip the middleman and deploy your own bare metal? This blog post will hopefully help you to understand why instead of using one or the other, you should be aiming to use both!
Overview on Cloud
Let us begin with Cloud. As mentioned previously, Cloud is just a bunch of bare metal. So what makes it different and why is it more popular than ever? The main benefit to using cloud is that it is on demand. This means that you can go into any cloud providers panel, click a few buttons and have a usable Ubuntu instance in just a few minutes (other operating systems are also available). This is extremely powerful if you are looking to host a multiplayer game, as it means you can almost indefinitely scale your capacity depending on player demand. You will always have the exact amount of capacity needed to keep your players happy, while ensuring that any excess, unused capacity is returned. But wait, there is more! The reach of the cloud means you can not only facilitate your ever growing player base, but you can also ensure that these game servers are being deployed all around the world and as physically close to the players as possible. This results in lower latency, better performance and a bunch of very happy players!
Like with almost everything in life, there is a downside to purely using cloud. A lot of these issues aren’t major, but they do play a part in performance and, ultimately, player experience. The first thing to be aware of with cloud computing is that a lot of the time, you are sharing the actual hardware with other cloud users. From a hardware standpoint, cloud providers will often use a massively powerful CPU and RAM configuration (We’re talking about 64 core CPUs and 256GB RAM) and then partition it up. You may get 2 of those cores and 4GB of RAM for your game servers, while Joe Blogs is using 8 cores and 30GB of RAM for his project. The real crux of the matter is that these powerful machine types often have much lower clock speeds. What do game servers need to run really well? High clock speeds!
The biggest issue with most cloud providers in their current form is the pricing models they use. While pay as you go seems like a great model at first glance, things can get very expensive, very quickly. The reason for this is that most cloud providers will charge you by the minute for “renting” the hardware space, while at the same time charging you for any bandwidth you use and then adding storage costs into the mix. While on the surface a cloud provider may advertise that a 1CPU, 2GB RAM dedicated server costs $0.0077 per hour, by the time you add in all the extra costs you’re looking at closer to $1 per hour. That may not sound like much, but if you had that running for an entire month you would be looking at $730. That would get you 3 8 core, 32GB bare metal machines and still have change left over for a round of beers.
Overview on bare metal
While most bare metal providers are not anywhere near as flexible in their approach when compared to cloud, it can certainly be a hugely cost effective approach when it comes to hosting your game servers. Not only are you often saving a ton of money, you also get a huge performance boost which your players are definitely going to notice! With dedicated bare metal servers, you are effectively renting an entire server blade in a rack each month. You get to choose what spec it is, what operating system is loaded on it and how it is set up from a network point of view. Utilizing this form of server setup also means that you are not sharing your hardware with anyone else, which may result in a much better experience overall.
One of the biggest downsides to bare metal servers comes into play when estimating capacity for your game. You see, bare metal servers can only ever fit a set amount of game servers on them, depending on the resource usage. This is great if you know you will need an exact amount of servers to cover your player capacity. This is not so great if you are about to launch a game and are relying on estimates. Your game may do exceptionally well and you might run out of capacity, resulting in queues for your players to get in game. On the other hand, your game may flop (it happens) and you are paying a huge amount of money for capacity that just isn’t used.
As the world moves onto a more automated and flexible style of working, bare metal providers are often left behind. A lot of providers require you to speak to a sales representative if you want capacity and the majority of them have not really implemented the systems needed to automate the ordering and deployment process. When compared to most cloud setups, bare metal is usually stuck in the past. But it’s not all doom and gloom: there are a handful of providers that have accepted this more flexible approach and are in the process of implementing APIs that allow you to order, install and deploy your systems onto bare metal within a few minutes, but they are few and far between. Right now, you are most likely going to be relying on ordering through a sales person, waiting a day for delivery, then manually setting up your new server. You can always use something like Puppet or Ancible to make this process easier, though there will still be a handful of manual steps.
Here at AccelByte, we like to develop solutions to some of the most difficult problems faced when creating a game. We understand that both cloud and bare metal have many benefits as well as plenty of cons if using only one or the other. That’s why we have come up with Armada! Armada allows you to enjoy the benefits of both cloud and bare metal, while helping to reduce cost and the complexity that comes with capacity management. With Armada you can have a dedicated pool of bare metal to cover 80% of your player base, then utilize the flexibility of cloud scaling to deploy virtual servers as your player capacity needs increase. What’s more, if your game is picked up by a popular streamer and you get a sudden influx of players, you can be sure that Armada is able to seamlessly scale to meet that extra demand so that your players can experience your game without any of the negative effects.
AccelByte’s hybrid approach also includes the ability to pick and choose which providers you use. You are free to choose from any of the cloud providers as well as any bare metal. This is a huge advantage as you can combine different providers depending on their availability, offered locations and cost. Ultimately, Armada was designed to bring hosting costs down, while bringing server availability and accessibility up. Armada not only benefits you from a cost and capacity planning standpoint, it also benefits your players when it comes to server stability, low latency and never having to worry about being unable to join a match again.
In part 2 of this blog series on Armada’s hybrid approach, we will explore the costs and potential savings from using a hybrid approach as well as examples of choosing either just bare metal or cloud.