What’s better: Pricier Google App Engine, or nothing?
gigaom.com
gigaom.com
It was news to us that they are losing so much money.
It was news because they spent the last three years telling us to jump through insane hoops, locking ourselves thoroughly into a for-profit company, on the sole belief that doing so would allow efficiencies and scale not to be found elsewhere.
The complaint is not "you shouldn't make money off us". The complaint is what the fuck was all that bullshit we've been doing for three fucking years if it didn't make any fucking difference - as demonstrated by your "viable billing prices"?
And what does it say about their competence? After three years, they only discovered in May that they were measuring the wrong thing? Google? The analysis company. Only in May someone decided to look at how all the "brilliant GAE Way" actually impacted performance and resources? Nobody thought, "this cpu billing is all very well, but we are actually running 20 bazillion machines to serve 5 web pages per second - maybe our model might be wrong".
For the tiny guys, the free plan is viable. Perhaps for the giant guys, (I don't know) the plan is viable. For everyone in the middle, it is better to go to EC2. The only people who say they are staying are those who do not have the competence to move to EC2 or Heroku, i.e. non engineers every one of them.
So GAE used to be all "Hey, engineers, come code to our awesome paradigm shifting api, and you can be efficient and scale."
Now GAE is, "Hey, MBAs and Muggles, have your monkeys write generic java/python and we'll make it scale no matter what the cost (to you)!"
gregd, project manager: "We will also introduce a new pricing structure for App Engine based on more transparent usage-based pricing." http://goo.gl/d78vS
jonmac, engineer: "The system is large and complex, its hard to understand and hard to explain." http://goo.gl/6NzF1
[1]http://googlecode.blogspot.com/2011/05/google-app-engine-new...
"Over the last three years, we’ve collected great feedback from our customers and now believe that the biggest thing we can do to help our customers is to graduate App Engine from preview status. "
"Adding business features will help App Engine meet a broader set of needs and the new, more transparent pricing model will help customers better align their App Engine investment with their business goals."
[2]http://googleappengine.blogspot.com/2011/05/year-ahead-for-g...
"App Engine graduating from Preview later this year! Based on this feedback we’ve decided to make some fairly large changes:"
"In order to become an official Google product we must restructure our pricing model to obtain sustainable revenue. Based on customer feedback this means focusing on usage-based pricing and placing per-user, per-app pricing on hold until further notice."
Look at Linode, Rackspacecloud, even EC2. They all charge primarily by the megabyte. I don't like it either, but it's the unfortunate economic reality.
"Most frontend instances don't come near their RAM limit, and most of their RAM consumption is on shared data like packages." -- nickjohnson http://goo.gl/SOeSF
It's not about how much you use, it's about how much you could use.
That's not the point. The point is that AppEngine boosted their pricing from between 5x-25x depending on the project. People aren't mad that AppEngine is using instance-based pricing, they're mad that they bought into a proprietary system that has a lot of lock-in and then the system increased their pricing by a ludicrous amount.
What if they weren't charging any money before, and then started charging? It would be an ∞% raise. Is it bad that they offered their service for free for a while?
PS: feel free to point out what's wrong with my questions.
We can answer this by comparing prices to other providers. For example:
Amazon (a standardised but not a cheap provider) used to charge $0.15/GB bandwidth out but now charges $0.12/GB (and does not charge for bandwidth in): http://goo.gl/n1ZxZ And this is tier one; it goes down to $0.05/GB or less for bulk bandwidth.
Appengine used to charge $0.12/GB out, but under the new pricing will charge $0.15/GB out (and still charges $0.10/GB in): http://goo.gl/QgA3n
Does this suggest that Google was running a charity, that it is merely covering it's costs, and that Google's world-renowned infrastructure costs more than Amazon's?
The author is completely clueless here.
The GAE change is that "true resources-based pricing" switched from an overabundant, almost irrelevant resource (CPU time) to the actual resource in short supply - RAM.
For web servers, it doesn't matter how much CPU time you use, it only matters how much RAM you occupy. Linode, Rackspace, and most other VPS providers* charge this way. Most server CPUs are sitting around blocked on I/O - especially ones running single-threaded synchronous web servers (I'm looking at you, Rails).
The new GAE pricing is still based on true resources - the ones that matter, not the ones that are irrelevant.
* AWS is fairly unique with a hybrid billing approach.
The first GAE instance process on a server would take up fair amount of RAM. The next one takes very little. Yet Google charges for the second one fully.
This is a natural way to prevent hot instances from overwhelming a single box in the cluster.
* In modern interpreted/JITed languages, the "code" is actually data that gets malloced. These segments are not shared.
* Modern interpreted/JITed applications eat VAST quantities of heap. They constantly produce garbage, most of which (hopefully) gets culled by the garbage collector.
On GAE, even small Python instances typically grow to 30-40MB. Java instances typically hover around 90MB. The actual per-instance reservation must be significantly larger because boxes can never be allowed to go into swap. Figure that Google allocates ~128MB for every single active instance of every single application. It's a lot.
Except that thats just not true! We aren't charged by MB-hour. We are charged by instance hour. Do I pay less if my app is using only a small amount of memory? Not at all.
You may argue that instances are a proxy for ram. Certainly they are. They just aren't a proxy that has useful, meaningful metrics. The rules for when or why the infamous scheduler decides to spin up a new instance is pretty much fucking voodoo right now. Before, I had a metric, and it was directly related to me writing good code. Now, I might as well read tea leaves.
So, specifically, I am not complaining about being billed for RAM. If this is the route they want to go (and I understand why), then I my complaint is precisely that I am not being billed for RAM.
The problem is that while your instance may only use 30MB now, it could grow to 100MB in an instant without warning. Tipping a box into swap would effectively crash all instances present. Oversubscribing RAM is a dangerous game, and I suspect Google doesn't try to play it - they have enough trouble debugging performance issues as it is.
So basically, an instance represents a fixed about of RAM. Instance-hours and RAM-hours are the same.
Primary complaint. We are all speculating. We went from measurement to speculation. I can't write performance applications on speculation.
No, the fervor picked up in intensity because they only now gave us the new metrics, and the price of them, and they are fucking insane.
We knew how much instances would cost, it just looks like nobody bothered to do the math until Google built it into the billing.
No one is trying undermine the fact that Google has to turn a profit, but they should've have either been frank about the pricing from the very beginning so that people would have made an informed choice, or retooled the platform so that it didn't require all that custom plumbing and would not have done all that optimization to use the least resources thats now useless if you want to migrate elsewhere.
This can be called a classic bait and switch if it was done intentionally. At the very least Google should offer grandfathered pricing for people who already depend on GAE.
This article is right - Google needed to make Appengine pay for itself. And when you factor in how much it costs to provide a scalable service from redundant servers, Appengine is still good value. For example, most of the grumblers are muttering about migrating to AWS, but when they realise that they need at least two instances in diverse locations; or make that two instances in each location if their service might become too popular for one server to handle; and ELB to route requests to the servers; and how tricky it is to keep their data consistent on all those servers; and what a hassle a serious backup regime is; and how much time it takes to manage the whole thing... I'm picking they'll suddenly go rather quiet.
Or maybe they're happy to run their site on a single AWS instance. In which case, they should do just that - Appengine is not the right tool for them anyway.
I run several profitable apps on Appengine, and until now paid cents a month to Google. I've always known that isn't sustainable for them, and that they'd have to get serious about pricing someday. I for one am happy to pay a couple of orders of magnitude more for the certainty that my platform will persist.
How will Google encourage a new developers to start working with GAE when platform-neutral providers (AWS, linode) are getting cheaper and better all the time?