I used to share your view until a few years ago and completely flipped. We moved back to Amazon + Digital Ocean and others. From my experience GAE is the worst technology choice I have made in my career.
Picking them as a platform has cost us a ridiculous amount of money and is still costing us because the cost of moving off them is so great we’d rather keep paying for their service rather than do a complete rewrite in one go for a live product.
I would describe GAE as a product by hackers who put out a half baked solutions without actually testing them and covering it with a new layer of paint ignoring the inherent flaws. E.g. basic things we ran into right on the start that should have been a HUGE warning sign. GAE claims to support JPA/JDO, so to maintain a platform agnostic architecture we based everything on JPA. Turns out basic features like “count” just failed in production once you get passed the 10k entities. I don’t see how Google can claim “scaling” with stuff like that. Also the basic decision to support this instead of failing immediately is problematic and shows the lack of thought on their side.
So we switched to working with entities (throwing away the idea of portability) and had quite a few problems but I’d like to focus on one HORRIBLE problem. At some point in time I checked our billing and was shocked to find out we were paying 20x our usual bill with no additional activity… To be clear this was so much money and on production servers it had seriously damaged our companies financials!
GAE claimed we were doing a lot of datastore reads, that’s roughly the equivalent of an operator telling you that you are making too many calls without letting us know to whom the calls were placed or when. There are some monitoring tools (which you need to turn on in advance) but they give nothing other than high level stats. The truly annoying thing is that this data exists and they choose to bill based on it without exposing it. So I filed a billing complaint twice. We added a lot of caching (there already was a lot we added more everywhere) and the billing went down but to this day I have no idea where the issue was or why it started “suddenly”.
Notice that we were gold customers paying for support with a 4 digit monthly bill… Their answer was “it’s a problem on your side, somewhere”.
When I explained that this is ridiculous. You can’t charge for something you can’t itemize and you can’t charge for something a user can’t control a Google rep said I can use billing limits!
The guys with “Google scale uptime” recommended that we setup downtime in case billing gets too high!!!
Google is an opaque company that doesn’t place it’s “best and brightest” into app engine. They have a hacker culture which I normally appreciate, but when time comes for infrastructure of this type you need a product you can trust. We’ve been using Cloud Flare IaaS and it’s been a pleasure for the most part since.
FYI there are MANY other problems such as inaccessibility in China and other issues.