Google this week anounced that it was going to let outside developers host their applications on Google infrastructure through a new product: Google App Engine. This is the latest in a long list of products from Google who are most probably the world's leading Internet company and may well become the most important IT company, if they aren't already. The offering from Google does not work in the same way as conventional web hosting, instead you must devise a solution that will work with their infrastructure, but in return the promise that your solution will be able to scale to keep up with demand with such things as load balancing taken care of automatically. This probably won't be a problem for most developers who are used to devising solutions that work with in-house IT requirements anyway.
At the moment only the Python language is supported as a development language for this platform, but according to Google support for other languages may be added in the future potentially making it possible to port existing applications to run on their platform. The other major difference is that the product does not have a traditional SQL database backend but instead a object datastore, where items have types and properties, queries that then be executed against these properties. The platform is currently a preview and as such only 10,000 accounts have been released on it so far. I missed out, but instead downloaded an SDK which includes a self contained web server that gives a good sense of what is involved in developing for the platform. Using their Getting Started guide it is possible to experiment with such things as the DataStore and user authentication. Running the web server on my Kubuntu machine was very simple, all I had to do was extract it and run it from the shell, there was no need to run it as root. You do need Python 2.5 installed on your machine (check with python --version) if you are using Linux. The download was also quite small.
The announcement raises a very appealing prospect of running applications on a reliable, robust and scalable architecture, traditionally something that takes a lot of skill and expense to build. However I would say here a small note of caution: infrastructure does not in itself make for a reliable scalable application! A poorly coded application will be a disappointment everywhere, there are no magic solutions in IT, only very helpful ones. A well developed application though might perform very well on this platform and be very useful to cope with demand for a successful product. Another noticeable attribute is the presence of Python, a programming language that is starting to make an appearance all over the place. If you have a Linux system it is probably already installed (and that includes the Asus EEE PC, just hold down Alt+T to get a terminal and type in python). I've decided to learn this language as it is a gateway to being able to develop solutions for many scenarios including desktop applications and web applications. Given its ability to work at both client and server level really well, maybe it would make a good basis for a true convergence technology between the web and desktop? The availability of Python on the Google App Engine just might raise its profile further, making it a must have skill for a developer in the next decade.
It is impossible here though to ignore the potential for vendor lock-in. As you have to develop specifically for the platform, this may make it costly to switch to another provider. With standard LAMP style hosting switching means just moving the code to another host, with this and similar solutions it may mean rewriting portions of code. This is particularly an issue with data storage. In practical terms this translates as a requirement to be extra careful with the design, perhaps to treat data storage as an abstract concept and wrap vendor specific functions in code that will be local and stay the same. A few of my colleagues at The Open University have been reflecting on this issue in the context of institutional systems, Martin Weller has enthusiastically adopted Google products, Niall Scaler isn't so sure this is a good idea, Martin responded to Niall's post and finally Will Woods has had a look at some of the issues. It is good to see a discussion taking place around this issue, I just hope that it does not become too entrenched a discussion and the real advantages and disadvantages can be discussed. My own opinion on this is that you need to think through the potential gains and risks for yourself. Make sure you are reasonably happy that your vendor isn't going to suddenly change their pricing structure in a way that causes you problems, and always think about an exit strategy, even if you don't ever intend to use it. What would you do without that particular vendor? Opportunities like this should not be automatically turned down because of the risk of vendor lock in, but that risk should be carefully assessed.
I'm looking forward to experimenting more with the Google App Engine, and hopefully I won't be too long on the waiting list for an account. So far it looks very promising. It is an interesting way to learn about scalable infrastructure and I'm sure it will become a significant host of web applications.