Having read quite a bit of commentary on Goole App Engine (GAE) launched last week, in general the reaction has been quite positive, and I’m sure GAE will enable lower the bar for many developers looking for a cheap solution for storage and a potential solution to their scalability needs. What is striking is a the lack of concern over a few fundamental issues however:
1) Lock in: if you go down the GAE route, you are totally locked in to staying with Google for the lifetime of your application. You have to develop using their choice of language and their APIs. If you want to leave, you can’t take exactly take Googles proprietary BigTable and GFS technology with you, so where exactly are you going to find a new home for your system? It’s interesting that new technologies like AppDrop have already started to appear to address this issue (AppDrop just address portability however, it doesn’t provide an alternative scaling mechanism to BigTable, but I’m sure that will come..)
You’d have the same problem if you go with Amazon, although not to the same degree: EC2 is open, the new persistent storage should also be portable, but if you use S3 for storage, SimpleDB, or SQS, you can’t exactly take them with you either (admittedly you can abstract the API’s for these services, but the alternative implementations may not match the desired functionality/scalability requirements exactly). In short, until there are Open Standards for the Clouds, tread carefully unless you don’t care about being at the mercy of a 6 ton gorilla! In this day and age, I can’t see how any business would lock themselves into a proprietary solution only available from one vendor, didn’t ‘Open’ win some time ago?
2) Scalability: GAE primarily addresses the eternal detractors question of ‘does it scale?’. I can imagine many naive develops and VC’s alike breathing a sigh of relief when the answer is ‘we run on GAE’. Idiots. There is no one size fits all solution for scaling any software system. BigTable and GFS are a solution for specific scalability requirements (most notably search!). You are effectively locked in to Googles scaling solution, regardless of how appropriate it is for your application, with no leverage for even testing alternative scaling approaches (as your development is so tied into Googles language/APIs). Scalability is complex, usually involving both hardware and software, but its solvable on an application by application basis - once your happy with the ‘do what degree doesn’t it scale?’ question yourself (nothing scales infinitely without cost), there are well know techniques/patterns to address most scalability requirements. So, unless your absolutely sure that BigTable and GFS suit your application scalability requirements, why would you use GAE?
3) Pigeon-holed hosting: the odd thing about GAE is that you can only develop applications from scratch on it. You can’t use many of the open source tools and technologies that can play an important part in your overall application/service. Want to use an open source CMS, like Drupal, for some basic content management on GAE? Nope. Want to use Wordpress as the blogging tool on your site? Nope. Want to use a non-python open source library for PDF processing for example? Nope, just not an option. So, your overall application is restricted to what ever open source applications/libraries that run in GAE’s sandbox, of which they’re aren’t many (how many useful open source python projects don’t use the full standard library?). At the end of the day, I’m just more comfortable with a shell to a real server on which I can install anything that helps our business, regardless of what it was developed in. (None of this is an issue with Amazon obviously)
So in summary, unless you know all your requirements upfront (waterfall development model anyone?) think long and hard about committing to GAE.