Google App Engine and Amazon’s EC2 Compared

by alex on April 14, 2008

There is some interesting discussion going on about Google’s new App Engine and Amazon’s EC2 service. Both of these services let you run web sites up in the cloud.

This from Brad Feld is a good run down on the two services.

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.

The comments about about the issue of Amazon’s EC2 persistent data problem should be eliminated soon. And the issue of lock in that O’Reilly seems concerned with is being tackled as well.

These services along with platforms like Facebook are going to change how the web works. It is like a layer of new functionality being layered on to the web so that things that low value work gets eliminated and we can spend our time on the interesting stuff.

Leave a Comment

Previous post:

Next post: