I would be very happy if Niantec releases an in-depth write up on the how the backend was implemented and what measures they took to make it scale to handle this kind of traffic. I don't care much for the game, but details of why the servers weren't (aren't?) able to handle the traffic interests me immensely.
I suspect one reason for heavy traffic is that a lot of the logic you would expect to implement on the client, actually needs to execute on the server, in order to avoid client based hacks. For example the logic of whether the poke ball successfully catches the Pokemon. Sure you could implement that on the client but then you'd have third party apps cheating at the game without any verification from the server.
I suppose that would enable further cheats such as not wasting pokeballs on ones you know will fail by peeking into the future.
The throw itself is client-side though, so I suspect it's already possible to cheat with "perfect throws" every time.