I run a $MM enterprise business almost entirely on GAE/python with a staff of ~40, public-facing site, etc and the monthly bill is under $1500/mon. Sure, I'd prefer lower $ and faster performance but truthfully, I'm no longer complaining: GAE/python saves me $$$ in IT staffing costs including security upgrades on dozens of packages that are either pre-integrated or I don't need at all (SQL & NoSQL databases incl multi-DC failover, memcache, reverse proxy, email hosting, auto-scaling, etc. etc.)
This doesn't surprise me at all. It is trivial to run a site on app engine that can handle hundreds of requests a second continuously without leaving the free tier.
Sure, when the change from billing CPU time to instance hours came in some app's bills sky-rocketed. But that was because they were poorly coded such that instances were blocking and unable to serve incoming requests.
With a thread safe application and the proper configuration there is absolutely no reason why instance-hours pricing shouldn't be competitive.
> This doesn't surprise me at all. It is trivial to run a site on app engine that can handle hundreds of requests a second continuously without leaving the free tier.
Really? The free tier comes with 28 instance hours per day. That'd mean your app would have to serve hundreds of requests per second, meaning each request must take substantially less than 10 ms, on a 600 MHz, 128 MB RAM machine.
If your request do any work at all, I doubt you can handle them in <10ms on a 600 MHz CPU.
>meaning each request must take substantially less than 10 ms
Correction, each request would need to have less than 10ms of CPU time - the instances support concurrency.
My web frontend, by design, does very little - any CPU heavy operations are done by other systems using the task queue. Writing it in golang has helped as well, wouldn't get that performance from python.
Write a simple Hello world example in golang and get it to do some mathematical calculations to simulate "work", I think you'll be surprised at how many requests a second you can squeeze out of a single instance.
But still, 10 ms really is not a lot on a 600 MHz machine. How long does your front end take to serve one request? How many qps do you serve from a single instance?
I have some go code with a trivial, completely unoptimized blog, rendering a couple of articles. Poking at appstats suggests I spend a bit more than 10 ms CPU time, App Engine reports ~30 ms CPU time.