I have a new found interest in Cloud Computing, and the first attack is on the Google App Engine. Didn’t exactly get off to a flyer:
1) Limited beta – they are going to send me a mail on my GMail account on when I can start using it. But I can start right away by using the SDK.
2) Downloaded the SDK and ran the installer – damn! Requires Python – go download separately!! This is ridiculous – why can’t they bundle it with the installer?
3) Now I am on the Python site and see a set of versions – do I install the latest version? Not sure, let me run the installer again … ok, it requires 2.5 from Python.org or from activestate. Would 2.5.2 work? Not sure. Wish they could have given a page with a link rather than a modal dialog!
4) Downloading Python-2.5.2.msi from http://www.python.org/download/ – it is 10 MB. Went to ActiveState and after 10 odd clicks, I now have to fill up a form… I think I am going to download the python.org version – AppEngine cannot be using ActiveState specific extensions.
5) Download started – need to learn Python now … next step, download the documentation from http://docs.python.org/download.
6) Python compiler installed. Now running the installer .. it is Vista ready, but not signed yet .. makes sense, bits are in beta. Installed smoothly.
7) Ok, now to figuring out what this stuff is. http://code.google.com/appengine/docs/ talks about a Python runtime, a datastore, users API, URL Fetch (sounds like a REST consumer) and a mail API – not bad, got this piece.
Finally, how to work with this – http://code.google.com/appengine/docs/gettingstarted/ basically says that there is a dev web-server which I think will run locally and a utility to upload code to the Google cloud. The web-server seems interesting – it is an emulation environment for the cloud infra. Can I use it without the invite? Seems I can!
9) Now reading http://code.google.com/appengine/docs/gettingstarted/helloworld.html – so the idea is that you write your code in python, describe the app environment using app.yaml (that obviously uses the YAML syntax) and then start the dev web-server with the path to your code. Pretty simple, eh? The URL – http://localhost:8080 is hardcoded, but that’s ok.
10) My next question – where is the web framework – is answered in http://code.google.com/appengine/docs/gettingstarted/usingwebapp.html. So any CGI targeting framework written in pure Python would work. You got to upload the framework along with the app … hmm, that keeps things simple for AppEngine while giving a choice to Python toting devs. The other choice is to use the AppEngine supplied framework called webapp. Since I do not know any Python based framework, I think I am going to use this. Not sure of what Python devs would typically use. I have heard of Django and Zope.
11) Finally went thru the links in http://code.google.com/appengine/docs/python/ and this gives me a decent idea of what this environment is like. It is a simple programming model and I think that is a strength, though having to learn Python may dishearten your average dev.
So I think what I am going to do next is to maybe write a bunch of simple apps on the local dev-server and pick up Python while I wait for my AppEngine invite. This is cool – I wanted to learn a new language anyway and AppEngine forces me to learn Python which I can also use for SL 2 demos!