What can startups learn from Pokémon GO’s server scalability engineering?

Quora Feeds

Active Member
Alexander Nowak


Update 07/20/16 (105mb): Nothing has been fixed, my answer still remains valid in every aspect.

Update 07/29/16 (a few days after Japan release): the servers are mostly stable now. They probably expected Japan to go way more nuts than they actually did so they accidentally made the game enjoyable - wouldn’t surprise me if they shut down some servers now that the management thinks “if there are no lags, we are paying too much for the servers”. The awful way the whole thing is coded is still the same, they still waste tons of resources due to bad design.

Actually Pokemon Go’s server availability is a big fat mess. 3 years ago I read an article on tech startup’s biggest problem being them thinking “too small” so IF they succeed, their poorly-planned limited resources make them lose a lot of potential profit. It’s funny that Niantic, a company that had 12 months to do heavy marketing research was overwhelmed by the success of their app.

They published the app for Germany while the servers were totally overcharged by the traffic coming from the USA and Australia, yet they decided to even grant other countries access, too. Most of the day, 80% of the Pokemon me and my mates catch get stuck in a ball which really makes us think about quitting the whole thing.

If you check reddit you will see that these server issues aren’t something only a small minority experiences - people from everywhere complain about this.

You just closed the app and want to open it again? Not too soon bro, it’s gonna be stuck loading unless you quit it again, activate airplane mode, open it again, wait for the “no internet” message and deactivate airplane mode as suggested in A Trick For Stuck Loading Screens • /r/TheSilphRoad

main-qimg-198e48289aafd79501fc3e838a629b2a


You bought and activated an item that lasts 30 minutes? Good luck getting past this message

main-qimg-ac2b1dfb908e55ce400da88f321c66f4


Caught a rare pokemon? Too bad you won’t get past this screen, no matter how long you wait (if you are lucky, you might find it in your Pokemon list after logging in - if you can)

main-qimg-c3037cd4c7bf637f097301a56a0b4e77


After you encounter these issues, NOTHING will happen automatically. Usually, you would put those pending server requests on a stack so the server can just work through them, one after another. If the server notices that he physically can’t reach the end of the stack, Niantic could just randomly pick users that are being notified they have to repeat the action which helps the server to clear up the stack a bit. However, if the connection fails just one time (e.g. you caught a Pokemon while leaving your Wifi so your phone switches to 3G) the app will still be active and you might see some animations going but you don’t get past the screen you are on right now. Why? The communication between server and app is set up so badly, neither of them get notified when one couldn’t message the other.

Imagine two people were given the instructions to only talk after the other one finished his sentence. Also, they are supposed not to repeat themselves. The conversation might go well until you interrupt one of them. Person A won’t repeat his sentence and person B will wait for A’s sentence. They will be sitting there in 10 years, waiting for each other to talk/reply. This is what’s going on with the servers.

  • I can’t understand why my phone has to download a few hundred kb when I click on a Pokemon. It’s right there! Why not make the app a bit bigger so you don’t have to waste tons of traffic just for the Pokemon models?
  • I click on a Pokestop and it shows me the picture of the POI it’s referring to. Why? I am right in front of it, I can see it with my own eyes!
  • 5 seconds later I click the Pokestop again and it takes a couple of seconds to download the picture again. Why the heck can’t they just cache it for a minute or two?

I can understand that the company might not generate enough revenue to afford better/ more servers but the servers would probably work at least 2 or 3 better if instead of buying new hardware, Niantic would just go through their code again. With a little bit of common sense, you wouldn’t even code an app like that, so these issues wouldn’t even exist. I can’t even say that they made the app like this because they had to meet some deadline because some of the things that could be fixed really don’t take much time or effort. Another possibility would be that Niantic didn’t even test the app, just threw one ball “it’s working!” and moved onto their next project. I’d even travel to US and fix this game for free because Niantic doesn’t seem to get there anytime soon and their app and server code is no rocket science.

All in all, it’s been a terrible experience for everyone I’ve spoken to so far and it’s definitely a good example how companies should NOT plan and distribute their resources. I also can’t understand how they didn’t just buy a fuck ton of servers in first instance: if the US doesn’t generate enough traffic, enable access to Australia. If they aren’t enough, continue with middle Europe and so on. It’s not like Pokemon Go was supposed to end up as a 1 million downloads app and although literally no one expected SUCH a demand for it, most people thought that this app is gonna drive AT LEAST 100 million downloads.

There isn’t even much to learn from this as almost everyone tries to optimize their products as good as they can but this company obviously does not. Now they try to fit in even more people in a ship that’s sinking just to sell them apples that they can’t eat when the boat doesn’t float anymore. Occasionally they are able to fix some issues so the boat starts floating again but in this very moment they invite some more people onto the boat so it starts sinking again.

I am just a boring app dev but I could list and probably even implement at least 5 major improvements on how to make the game suck less, I don’t understand why Niantic can’t.



See Questions On Quora

Continue reading...
 
Similar threads
Thread starter Title Forum Replies Date
N Study Buddy need someone to learn python together(beginner) Study Buddy 1
R Study Buddy Learn Python together Study Buddy 1

Similar threads

Top