What Exactly Is Google App Engine?
Last week was Google App Engine announcement and brouhaha. This week is deeper analysis and understanding of Google App Engine. I spent some time last week trying to understand this better, read a bunch of stuff, and spent some time having a top secret special meeting that I can’t talk about with some of my friends at Microsoft where this was discussed.
Following are three interesting things for you this morning (all courtesy of my friend Scott Moody) if you are interested in learning more:
1. The Google App Engine Q&A – an in-depth blogger-created FAQ that provides great links to other blog posts on the topic and summarizes various opinions and known facts.
2. Google App Engine for developers – Nial Kennedy’s overview from his meeting with the App Engine team leads.
3. A high level comparison (via email) from Scott Moody where he compares App Engine and Amazon EC2. Since Scott doesn’t keep a blog, following is the pertinent text from his email.
Google hides infrastructure from AppEngine users. AE programmers never (and, in fact, aren’t allowed to) think about database scaling and configuration, load balancing , fail-over, etc. In theory, the complexity of writing a highly scalable app completely disappears.
With EC2, you still have to set-up load balancers, configure multiple replicated database servers, implement scalability hacks if things grow too fast (such as distributed caching of data via memcached), keep distros and apps up-to-date, etc. Bottom Line: EC2-based companies still require sys admins, AppEngine companies don’t. That will certainly change as more companies begin offering EC2 server management services.
Google provides a non-relational datastore and that’s the only datastore available (no traditional file system, no relational databases). With EC2, people generally use MySQL or Postgresql. Amazon offers a non-relational datastore called SimpleDB, but it’s a bit *too* simple. For example, it does not support sorting of results sets. Huh? That makes it non-workable in my opinion. There’s also an issue with using EC2 virtual machines for your database servers — Amazon says that when a virtual machine crashes, all the data managed by it disappears, so virtual machine crash = hard drive crash.
With EC2, programmers can use any (non-Microsoft) language to develop their apps. AppEngine users must code in Python. Also, Google does not support sockets at this time. All cross-app communication must be done via HTTP.
At *this* moment in time, it would be difficult to move apps off of AppEngine. Doing that in EC2 is trivial. This, to me, is the biggest issue, as I believe it could make startups less-interesting from an acquisition perspective by anyone other than Google. This will most likely change as people develop compatibility layers. However, Google has yet to provide any information about how to migrate data from their datastore the best I can tell. If you have a substantial amount of data, you can’t just write code to dump it because they will only let any request run for a short period before they terminate it.
Some people are complaining about Google having access to their source code. I don’t see this as an issue. I’d rather have it be stored at Google than at some small hosting company.
One final nice little thing in AppEngine’s favor: Websites that store less than 500MB of data and get roughly 5MM pageviews per month or less can use AppEngine for free. The downside is that Google has yet to say what they’ll charge if apps go over that quota, but I have to believe that it will be reasonable. Right now, you’re prevented from going above the free-level quotas.
If you are into this and have other good links, please leave a comment with them.