There has been a lot of talk today about the announcement of Google's App Engine. App Engine allows anyone to write their web application in Python and then have it conveniently and simply hosted on Google's powerful infrastructure.
One key advantage of course is the nearly unlimited scalability of your application. So, if you think about building the next Facebook or Twitter or whatever else you imagine to become widely successful... well, here is your chance to achieve the on-demand scalability you need without ever having to worry about scalability in the first place. Google will host not only your code but also your data on their servers (based on Google's BigTable and GFS), and will do whatever Google does to scale up as needed, transparently and quickly.
The other advantage is Python. That language has become very popular for all sorts of development, but particularly also for web apps. There is a large number of Python web app frameworks available. Google chose to have theirs inspired by Django, which is probably the most popular, mature and well documented one of these. They made a couple of changes to it, though. But you can download Google's SDK, develop your application locally, and then with one command upload the entire thing to their infrastructure. Very slick and very convenient.
The difference to Amazon's various hosting offerings is that in Amazon's case you deal with virtual machines, entire (virtual) server systems you will have to build and configure yourself. Here with Google, you have a complete hosting environment into which you deploy your application. For most people, this will be much simpler. The convenience of being able to develop locally towards Google's SDK and then to simply deploy it with a single command is very, very nice indeed.
Supposedly, up to 5 million page views per month will be free. After that, you will have to pay. No prices have been announced, but I would assume that this should be comparable to Amazon's hosting prices. In other words: Reasonable.
If you build a new e-commerce site, or some hip new social-whatever Web 2.0 site then you want to be ready on the day you finally get slashdotted, or dugg enough to suddenly be hit by this ever increasing avalanche of visitors that come storming through your door. Not being ready at that point could be disastrous for your visitors' experience, your reputation and a huge loss of potential customers who might never come back after an initial disappointment. Building and hosting your application with Google App Engine can make all the difference here.
Does Google give any service guarantees of any kind? Google is prone to occasionally change its algorithms and mechanisms in a very opaque and downright secretive manner. Everyone in the field of search engine optimisation will know the story. Google tweaks their page ranking algorithms and suddenly your site appears below the fold or (gasp!) not even on the first page any more. Your business literally might evaporate in an instance. What if something similar happens with App Engine? What if they change the service levels your site receives? What if they suddenly decide that your site actually doesn't need that great request latency you have been enjoying and they change their scaling methods in a way that suddenly impacts your user's experience negatively?
Also, do you know what Google does with your data? Do you want Google to know? What if you have a good idea that competes with some of Google's many activities? Do you want to be dependent on their infrastructure - and worse - their APIs? Changing hosts is always painful. But with something like Amazon's VM hosting service (EC2), you at least know that you can deploy your app as it is on another VM hosting environment (as long as you didn't start to rely on Amazon's S3, at least). But once your APIs are bound to Google's, your cost of switching becomes much higher, since you will need to make changes to your source code.
The big brother
So, let's say you develop a popular new web application. Google, of course, will know first hand how successful your application has become. In fact, they will know sooner than you do. And they will know more about the traffic to your site than you will know yourself. Now imagine that Google thinks that this is actually a nice app and approaches you with the offer to buy your small company. Great! They have been doing that in the past. It's a popular mode of operation these days for a startup to offer a web-based service developed using open source technology and to therefore have extremely low costs, which means they can get by without external funding (VCs). Even if Google would "only" offer you a few million dollars, you could still walk away quite well off after a few months of work, since you don't have to fork over any money to a VC.
Great? Yeah, in principle. But consider that normally when someone wants to acquire your business, you have a whole lot of information that they don't have, and thus you can try to negotiate with them having all that data available to your advantage. If your app is hosted with Google and Google approaches you with an offer then the tables have effectively turned. You might still do well, but potentially could have done much better.
Google gets first dips in the application kindergarten!
Google will be able to see which apps develop well in their little “application kindergarten” and are therefore worth buying early. "Early" means "cheap". If more and more web applications are hosted with Google, then Google will have a superior vantage point from which to survey this developing landscape. Nobody else will be able to have that insight. They will be able to pick the cherries and pick them cheap. And because of their insight into your business they will be able to make you offers that you can't really refuse.
If you feel that your web application is destined for greatness (the next eBay?) and you therefore settle in for the long haul, rejecting any early takeover offers, then you are suddenly in a very difficult situation. You rejected Google's offer, so what will they do next? Remember that part about no service level guarantees? Especially when you actively start to compete with one of Google's offerings, do you really want your business to rely on the support and – dare I say it – good will of your biggest competitor?
Well, there is no good will in business. As I said before, especially publicly traded companies have only one purpose in life: Maximise shareholder value. So, effectively, you can't possibly remain dependent on their infrastructure and will have to incur the porting cost for your application.
And so with you headed for greatness, along the way you could find someone else besides Google that's interested in buying you. But in that case this potential buyer will be worried that you still have to port your code to a different platform. Some may turn away for that reason alone. Others will deduct this porting cost from whatever they would like to offer, thereby essentially reducing your company's valuation. Not good at all. It means that in effect Google's APIs have locked you in to Google's infrastructure, but also left you with Google as potentially the only suitable or interested buyer and a lower value for your business.
In the end, Google App Engine is great if you quickly and conveniently want to develop your app and have it cost effectively hosted in a way that can withstand the highest traffic loads you could imagine. If your application is commercial and you like the idea of receiving an offer from Google then this is great as well. If you think you can drive a hard bargain with them, though, you might find that they simply know too much about you ahead of time.
And if you think you might like to compete with Google and/or become a really large web site or business yourself, then I don't think that Google App Engine should be your first choice, enticing as it may be.
Comment by Ed Singleton, on 10-Apr-2008 22:43
Some good points there. I think it's also fair to say that if you aren't in it for the long haul and want your app to be bought out early ('bird in the hand is worth two in the bush') then AppEngine could be a good choice.
In general, this could make buying and selling websites a lot easier. Something you develop in AppEngine is guaranteed to work for someone else in AppEngine with no problems.
Comment by hellonearthisman, on 16-Apr-2008 11:12
I think it's great, they host and run your scripts for free. Webhosting to do the same would cost. It's the best thing since you tube, but for the geeks.
Comment by John, on 25-Apr-2008 03:20
i think it's pretty nice, if anything it gives you a motivational reason to learn Python, it's free and you can code it wherever; and who knows in the end if it makes good they might even offer you a spot on their campus ;-)
Comment by Zoltan H, on 25-May-2009 17:00
I did a review of APress' Developing with Google App Engine a few months back. As far as I know the book is the only one out so far.
It was written before the Java support announcement was made, so it's all Python. What it does do is take readers though the design of BookmarksBin, a kind of little-Del.icio.us that could be whipped up in PHP/MySQL in a few hours and shows how to adapt this to App Engine's services. It's a short book, doesn't try and teach Python, but you get the basics of thinking the App Engine way.
Comment by mepster, on 7-Jul-2009 11:39
Great analysis... I would just make the point that, say you do successfully scale up to a site with real value. At that point you would have the revenue to pay for a port to another hosting service if need be.
One strategy is to be careful during development what APIs you use. For example, I am going to use the Juno python microframework, rather than Google's own python framework, for portability. For a scalable database, however, you have no choice but to use google's db... but then that's the cost of scalability.
There is an open source scalable database effort modelled after google's bigtable. http://hypertable.org/
It would be a good strategy for Amazon to help out the Hypertable folks...