Careful with the "or worry about adding capacity" part. I've talked to several people that built products on top of GAE because it would just scale, and all were surprised to discover the opposite. Certain queries would start to take inexplicably long and there was no way to figure out why or how to fix it, etc. Things might have gotten better recently, but about a year ago everyone I talked to that tried to scale on GAE gave up and moved elsewhere.
The datastore is complicated and not what you'd normally expect from a SQL type system. It is a real mental shift when designing your schema to be efficient.
That said, using it is well understood at this point and my co-founder is Jeff Schnitzer who wrote Objectify [1] which is the best way to tie Java to the datastore. Outside of Google, I think he understands the datastore more than anyone else on this planet. Thanks for the warning, but I think we will be ok. =)
Also note, I'm speaking from a Java perspective. Using Python has definitely had MT issues which are being resolved with the new version of Python 2.7 available there now. I'd still recommend using either Go or Java for your app.
I understand that GAE's data store is a different kind of beast, and that's actually one of the things that worries me about investing in GAE. What's the migration strategy for moving away from GAE if things don't work out? Or if Google decides to abandon it at some point?
Sure, the datastore makes you think a bit harder when designing your application. But, I'd rather do that thought upfront than down the line when my MongoDB (or insert your favorite nosql solution here) instance is falling over under the load. In other words, you should probably be doing that anyway regardless of using GAE or not. ;-)
The rest of my app is just a regular .war file, so really it is just the data layer that would need to be ported. Given that the data store is pretty much just a big hashmap, it really won't be that difficult to rewrite the underlying code for another nosql store like MongoDB. The hard part of the original 'schema' design is already done.
As part of GAE leaving beta, Google has given a 3 year EOL commitment. I'm actually glad it has left beta because that means we get something solid from them now. What I mean is that once they declare that they are killing GAE (if they ever announce that), you have 3 years to migrate. I'm ok with that term.
http://code.google.com/appengine/terms.html
7.2.a:
"For a period of 3 years after an announcement (the “Deprecation Period”), Google will use commercially reasonable efforts to continue to operate the Deprecated Version of the Service and to respond to problems with the Deprecated Version of the Service deemed by Google in its discretion to be critical."
Seriously, I've done the research and I've used the different solutions that are available today. GAE is one of the best solutions out there at this time for my type of application, which is pretty much just a straight up webapp. The only difference I have is that I have really bursty traffic as a ton of people all try to register for an event at the same time and then go away. This means, I need something to truly auto scale up and down without requiring me to do work or know my load in advance. No other solution offers the level of PaaS that GAE offers and at the price.