Tuesday, April 08, 2008

Last year Amazon shook up the web development world with EC2, the first Elastic Computing Cloud. Later the addition of S3 for storage and SimpleDB for data fleshed out their platform as a real alternative for web application development. Now Google has launched AppEngine, a virtualized application hosting system that combines some of the features of all the Amazon services for a new take on the hosted application development.

Still an invite-only beta, AppEngine is sure to get a lot of attention just from the Google name alone. I haven't had the opportunity to play with it but just looking through the docs reveals many interesting ideas. The first shock for many developers is that the service is Python only. There will be other languages added soon but I'm already seeing grumbling in the PHP community. Many assume that PHP will be added but I'm not so sure. Python is likely the first choice since it is widely used inside Google but I'd expect the next language to be Ruby because of its similar behind-the-scenes approach to Python. After that, while PHP is possible, I wouldn't be surprised for them to go another direction like Java, a Java scripting language subset or even server side JavaScript.

The second surprise will be the use of CGI as the interface. While most devs associate CGI with old-fashioned, slow apps; it really makes sense in this kind of environment where everything can change between every request.

The biggest shock will be the "No SQL" approach. Data in AppEngine is done through their own datastore, which acts more like an object database. App Engine's infrastructure takes care of all of the distribution, replication and load balancing of data and you use a Django style modeling API. There is also GQL which fulfills the same purpose as SQL for managing data. This is going to be the biggest stumbling block for many developers since 90% of the average developer's work is moving data in and out of SQL Server or MySQL and most people aren't used to being abstracted very far away from that.

It will be interstesting to see how many people jump into Django, the leading Python framework and end up staying there for even non-AppEngine work. This could be the turning point that where Django becomes the next Rails if not even bigger.