I recently attempted to use Google Appengine to host my very simple personalwebsite.This was something of an experiment to learn about cloud hosting. These aremy initialthoughts on Google Appengine. They should be taken with a pinch of salt as Ihaven’t yethosted a high bandwidth, or high availability site or application.
Google Appengine is a software platformfor hostingweb based applications developed in either Java or Python.
The SDK is super simple. It installed cleanly and easily, and contains adevelopmentweb server, database and sandboxed Python environment. Its genuinely apleasure.
Setting up is easy. Signing up for Google Appengine and creating a firstapp isstraightforward. One doesn’t have to do anything dull like set-up Apache,MySQL,memcached or Ubuntu.
The Python runtime provides flexibility. Google Appengine uses a fairlystandardPython 2.5 runtime with most of the batteries included. This made me feelfairly athome and means that you can use a number of Python web developmentlibraries.
The Appengine is moderately Django friendly. Version 0.96 is available bydefaultbut more recent versions can be used instead. The documentation isexplicit abouthow to do this. There is an official Google project for making it easy toport Django applicationsand an alternative based on Django non-rel.
The Appengine specific API’s are well documented and thought out. Thereare a fewproprietary API’s for task management, datastore access and mailing. TheonesI tried worked very well.
The Admin console is awesome. It is easy to search and add data to thedatastore.There are good views of site traffic, and error logs. Its just generallyuseful.All without any setup.
Appengine isn’t Django. Its not even close. The important part is thatGoogleAppengine doesn’t provide any SQL database. This makes Django modelsincompatiblewith Appengine. Any existing Django application will require a decentamount ofported code to work properly. Djangoappengine from allbuttonspressed issupposedto get around this by providing a Django Model implementation on-top ofGoogleBigtable. For me it wasn’t without its flaws and probably isn’tproduction ready.
Domain setup is ugly. To set up domain hosting for Appengine you need touse aGoogle Appsaccount.This is confusing enough but while the Appengine Admin site is a joy theAppsconsole is clunky confusing and poor. It sullies an otherwise greatexperience.Besides, these are two fairly separate products, one is called GoogleAppengineand the other Google Apps. What went wrong in the naming department?
Google Appengine has no support for naked urls. These are of the form ‘foobar.com’.This is related to integration with Google Apps. Apps are deployed as an‘App’ on your Google Apps domain. This might be a dealbreaker for some.Forme it was just a great annoyance.
- Google Appengine does not provide a SQL server and its Bigtable datastore isa proprietary Google interface. This means that once your site is writtenanddeployed you may be locked-in to Googles servers for a very long time.
I have mixed feelings about Google Appengine. On the one hand it has servedto convinceme that cloud hosting is probably the best bet for future applicationdeployment. On theother hand I don’t believe I would choose Google to do so.
It probably isn’t suited for people who want to base their business aroundthe success of a large web application. More flexible hosting such as thatprovided by Rackspace and Amazonis a better bet. On the other hand its lack of an SQL server makes it fairlyuseless for existing Django or Java application deployment.
Its closely linked with Google Apps, probably theApps Marketplace, and hasAPI’s for using Google Accounts for authentication. If you want to hitchyourbusiness wagon eternally to Google it might be a good idea.
Perhaps the best use of Google Appengine would be for development of newbusiness centric, or intranet applications. There is some sort of by-userpricing available that might be great. The ease of setup and developmentwouldbe a help and the proprietary nature of the thing might not besuch a party killer.