I really wasn't planning to post any more on this topic but one of the comments on waxy.org's Google App Engine post caught my eye. Here's the quote from Gordon of getlucky.net...
First of all, I don't believe that anyone creating applications that live in the cloud expects perfect portability from platform to platform. Whether you're living on Ning, Amazon, AppEngine, or something else, you're working in a sandboxed API that might just happen to look like an existing language runtime. If you're not willing to bind to a provider's cloud abstraction API, then that begs the question of what is acceptable and has semantics that magically port to the universe at large?
So, to me, this is all kind of a silly argument. Promoting the idea that all cloud platforms should speak some form of scripting and data Esperanto is probably just about as effective as filing a bug against the MySQL developers asking them to "work like Oracle."
To me, this post demonstrates a fundamental difference between the Amazon concept of "cloud computing" and what Google is doing with App Engine which is vastly different. More to the point, it shows that many people aren't seeing the difference between the two.
The "Cloud" is not a functional thing in the Amazon model. It is simply a virtual space where an application can reside and store data. There are APIs related to environmental functions such as what you use to write files or query databases but beyond that the "Cloud" isn't providing additional functionality. Any additional functionality is provided from outside the cloud by open (SOAP or REST based) web services and/or programming environments.
This is how Amazon is doing cloud computing and this gives the developer, as Gordon put it, "perfect portability from platform to platform"
What Google App Engine is doing is what I would call "Proprietary Cloud Computing". They're providing a cloud just like Amazon but then they're offering additional functionality which is limited to their cloud. Beyond that they are restricting you from using other open APIs that provide that same functionality *
In doing this they are locking your data into their data store. This isn't necessarily a bad thing if all you want to do is write applications for Google but its important to be aware of the box you are putting yourself in to. Google App Engine is not free. When you use it your simply paying in data instead of money. Google doesn't need your money but as a company they're in a mad dash to organize all the world's data so they do need your data. Data is worth more than money to Google.
Now clearly the above are generalizations and there are components of each service that slightly contradict them such as SimpleDb being a directory service or Google App Engine's APIs being ported. But the overall the above lays out the philosophy of each company and even the exceptions tend to reflect that (e.g. SimpleDb is proprietary but it can be used from non-Amazon hosts and the Google App Engine port is not sponsored by or officially approved of by Google).
Understanding the difference between these two philosophies should be the first step when deciding which service to use.
* Just to be clear, Google can still use open web services and I wanted to make sure I didn't give the impression that it couldn't. But you can't run your own environment which is the point I was making.