Game developers dream of the day that their app gets the sought-after App Store feature and the onslaught of downloads that comes with it. However, the reality of that dream will be dampened if your game can’t handle a massive spike in traffic.
Although it’s great to get a ton of new players, the uptick can backfire if your users can’t even play the game due to your servers crashing. You get one chance to make a first impression —crashed servers don’t make a great one and harm retention.
You have to be proactive about the backend and your overall infrastructure so that you’re ready if (and when) your day in the spotlight happens. The following are strategies you should take so that you’re ready when you find yourself with a hit game on your hands.
Remember that caching applies to just about everything.
“Cache is King” has long been a mantra in the industry, and for good reason: caching exists for just about everything, and it make can make an enormous difference when it comes to heading off infrastructure problems. You need to cache whatever you can, from database calls to assets, and remember that you can cache application level data with memory-based caching systems. Content delivery networks provide high availability for static assets as well as reduce network latency. There is even a way to cache dynamically generated responses by setting up web server accelerators in house or using third-party services.
Make sure you have a frequent cache in place. That way you can just return the cached version while updating the data at certain times (every minute or even less). This will greatly help reduce load.
Eliminate single points of failure.
If applications all write to one database instance, what happens if it goes down? The entire application could stop working.
Having multiple database instances with data replicated among them is one solution. Other techniques like partitioning can go a long way to spreading workload and increasing performance. This idea is applicable to all parts of the stack.
One strategy to identify potential weaknesses is to make a diagram of the whole system and pinpoint potential points of failure. Ask yourself, “What happens if this component goes down?” Address potential points of failure by adding redundancy. Depending on your architecture, this can mean adding more servers, using a robust networking protocol or simply being not locked into one hosting provider.
Automate infrastructure management.
With the advent of IaaS, it’s tempting to manage infrastructure manually from a web-based user interface. This process is simple, but it doesn’t scale when you need to cater to fast-paced and rapidly changing environments. When you automate infrastructure management, you reduce costs, increase speed, and remove risks in terms of errors and security violations. The added bonus is that by doing so, you increase visibility across teams.
Although these guidelines can make your application scalable, remember that scalability is only one part of the equation. Developers should always be on the lookout to optimize their application for performance. This can necessitate, among many things, rewriting their backend systems. Historically, this has been an inevitability when application usage starts growing; Twitter has a great backstory on how their engineers rewrote its code base.
An App Store feature can be game-changing and lucrative, but it can turn into a huge missed opportunity if your game can’t support the influx of traffic. Follow these strategies to make sure you’re prepared for every eventuality, and you’ll be ready when opportunity strikes.