Wednesday, July 8, 2009

Using Google App Engine for MyWebBrain

One thing that I have known for a while about the MyWebBrain project is that I want to use Google App Engine. Google App Engine is a service from Google that allows web application developers to publish applications to a Google managed environment.

There are a number of positives from putting your application in Google's hands. The alternatives are: hosting the web application yourself, using a hosting provider or using another cloud infrastructure such as Amazon EC2 services.

Some positives are:
  1. You do not need to worry about your server side infrastructure
  2. Google's infrastructure scales a lot better. In so much as they can, the available APIs force you to use that scalable infrastructure.
  3. Only pay for bandwidth, CPU and storage when your website is successful. And not a lot even then. You get a lot of resources without spending a cent, and therefore by the time you need to pay you know your website is being successful.
  4. Plug in to a excellent application infrastructure. Google takes care or your monitoring, logging , data storage (using an Object Relational Model) and even authentication/log in system (if you wish, you can roll your own). Google provides a neat web application framework of their own as well, but you can use Django if that is your thing.
  5. The downloadable SDK is excellent, automatically updates and is a pretty impressive attempt to provide a local environment to mimic the production environment.
Some possible negatives:
  1. You do not have control of your infrastructure. But all I want my infrastructure to do is work and I would trust Google's infrastructure over my own or a hosting server account anywhere.
  2. Google App Engine applications need to 'play fair' with the environment and are restricted to limited request timeouts of 30 seconds. I'm pretty sure if you did anything that might undermine other applications in whatever datacenter(s) your application is being hosted from, your application would be penalised.
  3. The available API reflects the limitation above, and still requires some maturation. There are some things you could do on your own server that Google has not (and may never) release the APIs to achieve. Managing files, or opening sockets, for example, are not allowed. Some of these restrictions reflect 'play safe' rules, others to limit possible abuses (such as using the service to send spam), and others I am sure simply have not been completed yet.
On balance, assuming the Google App Engine can implement the functionality you want, it seems like a very good service. Currently I am a one-man band; If I can pass off my infrastructure and server-side concerns and focus on writing a good application I am sure I will make much better progress.

Why does Google provide this service at such a low cost? Google says it is trying to promote innovation on the net by providing an application hosting service with a low barrier to entry. It certainly has. Perhaps:
  • Google is trying to monetise their spare datacenter capacity (which would otherwise be wasted), or
  • Reuse the software environment (with many additional limitations) that their own staff need to use to write applications for their complex infrastructure. What better way to test it than throw it open to the world?
It is hard to predict Google making tremendous amounts of money for Google App Engine. I have no insight into the mind of Google but while they are prepared to offer a good deal, I am quite prepared to take it.

MyWebBrain will therefore live on Google App Engine. Let me know if you have any comments or thoughts on Google App Engine or anything else related to hosting (in the cloud especially).

No comments:

Post a Comment