Windows Azure- Microsoft’s secret weapon in the gaming world
The next console generation is coming soon, and all the gaming companies are trying to use this period to elevate their position in the industry. Against Sony and Nintendo, Microsoft has some areas where they are lacking, but they have a trump card that Sony and Nintendo cannot even hope to match, they have something that can literally change the way games are made; that secret weapon doesn’t even come of the gaming division. Microsoft has a potential super weapon in their cloud platform, Azure.
Consider the launch of every single online game. When was the last time that an online game launched perfectly? Sim City was the highest profile incident last year, but other games like Diablo don’t fare any better. Every single time a major online game launches, there are always complaints about the online system. Sure, a lot of it can be blamed on the networking code, but most of it seems to lie with the server side.
The issue almost always comes down to a lack of server resources. Look at almost every single MMO launch, you will very likely see players complain about the long waiting times, of overloaded servers, and of poor performance. This is not just a problem with new game launches, server issues also pop up when games experience a sudden sales spike (for example when a game goes on sale). It’s really a server load issue, when you have a large amount of players, each taking up certain amount of resources, your limited amount of servers will simply crumble under the load.
The traditional server model is simply not capable of dealing with the challenge of gaming. Imagine this, if a video game company creates a game that sells 2 million copies, the majority will probably be sold near launch. Let’s assume 1.5 million copies were sold in the first two weeks, and since players have just bought the game, they will be devoting a large amount of time into the game. Concurrent player numbers in our hypothetical scenario can be very high, there can very well be 500000 concurrent players playing in the first weeks after launch.
Now this is where the traditional datacenter model falls apart. If you buy 500000 players worth of servers, you would be wasting a mountain of money. After all, after the novelty wears off, most players would move on to the next big thing, and player numbers will drop drastically, possibly to even 10% of what player numbers were like near launch.
So this is why almost every single video game company allocates less servers than what is needed toaccommodate the maximum player numbers at launch. They are of course hoping to help the issue somewhat through techniques such as waiting lists, and through putting players on "less than optimal" servers (often servers with worse ping, or where the majority of players are speaking a different language). Sure, bigger companies with multiple titles can perform a bit of "juggling" between their titles, but even then, they always struggle with the maximum demand. If you buy enough servers to accommodate your player numbers at launch, the servers will be idling later, and your money is going to waste.
Now of course, everything tends to work out fine if the game sells the number that the developers anticipated. But what if, the game sells much better than expected, or if the server side code suffers from some performance issues, than it really is uncontrollable with the standard server architecture. I would imagine that a combination of both is what made the Sim City launch so horrible. Also, another big issue is, during testing, you have at best a few thousand players playing. At launch, you will have to deal with millions. The developers can’t even anticipate how their game will scale up, it doesn’t always scale linearly. The developers cannot really anticipate where the bottlenecks will occur anyways. Is it the CPU resources? The RAM? The network connection? The storage system? The developers cannot know for sure.
Now if you look at online games, you are most likely playing on servers local geographically close to you. After all, you do not want to play on servers will poor ping. This leads to another big issue, different players around the world play at different times. When players in Japan are online, American players are probably asleep, and your servers in America are probably idling, and vice versa.
This all combines to create a very bad scenario, where server resources are both not enough, leading to poor player experiences, and where they are being wasted, leading to lots of wasted money for the developers and publishers.
Microsoft has the key to solving this issue, it lies within their cloud and server expertise. Azure was designed with solving this kind of issue in mind, albeit for enterprise and web workloads, but I can easily see them leveraging this expertise to great effect in gaming.
Before we look at how Azure can become Microsoft’s trump card, let’s look at how networked gaming works for Xbox live now.
As we can see from this picture here, Xbox live gaming’s server components are mainly comprised of two pieces. There is the Xbox live side, where Microsoft handles authentication, achievements, and other Xbox Live functions. Then there is the actual game servers, run by the developers themselves. Notice how game data has to pass through an Xbox live gateway before it actually reaches the gamer.
This model has many inefficiencies, it is expensive, lacks scalability, and slow to adapt. This is where Azure can come into play, and completely revolutionize the industry.
So what is Azure? Azure has two major components, IAAS (infrastructure as a service) and PAAS (platform as a service). So what is IAAS and PAAS? IAAS is virtual machines, the actual infrastructure behind the virtual machines have been abstracted away and is provided to you as a service, hence the name infrastructure as a service. IAAS is pretty easy to understand, you rent virtual machines from Microsoft, and your programs run on said virtual machines. PAAS runs differently, the abstraction is higher level, and instead of abstracting away the infrastructure, the actual platform the programs are running on are being abstracted away. An example would be the most popular application of PAAS: Web sites. For example, if your website needs IIS, SQL server, and .net framework, Azure will abstract all of that away from you. Your site will simply run on Azure, all the backend infrastructure is handled by Azure, you don’t need to worry about any of it. It the words of Microsoft themselves: "Simply upload your application and Windows Azure handles the deployment details - from provisioning and load balancing to health monitoring for continuous availability."
The next question should be, why Azure? What advantages does it have compared to the traditional model of buying servers and co-locating them inside datacenters?
The answer to that question is, Azure is flexible. There are no upfront costs, you pay for what you use. This allows Azure to scale very, very effectively. Traditionally, if the player number explodes, you would be forced to buy servers, install them, and setup them. This process can take weeks, if not months. Loss of player goodwill and a PR fiasco is guaranteed. After all, players would go up in arms, complaining that the "online portion sucks!", by the time you would have gotten your new servers, most of the players would have probably left, moved on to the next big thing. With Azure, if you need more, in a few clicks, you can easily get more instances, or, you can increase the size of your instances. It takes hours, instead of months.
With Azure, Microsoft charges by hour. So you can pay for more instances during peak times, and where there are less players, you can scale down the instance, or turn it off (and stop paying). This allows for an unprecedented level of flexibility for game servers.
Azure also offers geographical flexibility. Microsoft runs internet services around the world, and thus, they operate datacenters one multiple continents. This allows for some interesting options for video game developers. Azure instances can be snapshotted and transferred around the world to accommodate peak playing times across multiple time zones.
So as we can see, Azure has potential in the gaming world. I am willing to bet that Microsoft is currently working "behind the scenes" on turning Azure into the trump card in which they can use to gain a significant leg up against Sony and Nintendo.
So how can Microsoft turn their cloud platform into their gaming trump card? Well, let’s take a look at this picture again.
Everything actually passes through the Xbox live gateway. Now if Microsoft throws their azure servers and Xbox live servers into the same datacenter, and do some "server magic", they can manage to significantly improve service quality. But good performance is far from enough, Microsoft has to actually push Azure for non-Microsoft platforms too.
It sounds counter-intuitive, but the best course of action for Microsoft is to actually try to push Azure for non-Microsoft platforms too. If Microsoft only pushes Azure for Microsoft platforms, it will not reach the critical mass they need for Azure to take off. The secret is to entice developers to use Azure for all their platforms. If developers move to Azure en mass, than Microsoft will have Sony "by the balls".
Microsoft has a great service (Azure). If they can leverage this service to work better with its other service (Xbox), they can end up dominating both markets. If Azure works better with Xbox Live than EC2, it could drive up adoption of Azure for them. If Xbox Live works better than Azure than PSN, it could also prove to be a major boost for Microsoft’s Xbox business.