Flickr Badge

Wednesday, April 09, 2008

Google announces App Engine, takes on Amazon?

So Google is getting into scalable web infrastructure with the announcement of Google App Engine, apparently taking on Amazon's EC2 and S3 services. Having taken a deeper view however, it seems like they are addressing completely different spaces.

EC2 and S3 offer a whole lot of flexibility. They are independent of each other for a start, which means you can use S3 alone, or EC2 alone, or in combination with Amazon's Simple Queue Service. Secondly, with EC2 you get complete control over the image. You can put any programs in it and you can configure them however you want. You can even run anything on the instance from serving pages to performing computations.

Google's offering is completely different. You can only run web apps. It has to be in Python. You have to use their APIs for accessing data or fetching URLs. No sockets, no subprocesses, no threading, no filesystem access. So there are a lot of limitations.

BUT, what you get in exchange is extreme simplicity. App Engine is perfect for web app that needs to store some stuff in a database and interact with the user via a web server - and that's most of the apps out there. You've even got an SDK to develop offline and then sync it online.

Another bonus for Django developers: The APIs seem to be heavily influenced by Django. What this means is that if you are a Django developer, it should be relatively straightforward to deploy your applications onto App Engine. In fact, there is even some official documentation for doing just that.

If you design your application well, it shouldn't be too complex to take a Django app and port it to use the App Engine API, and vice-versa, take an App Engine app and move it to Django on another web host. That way you do not have platform dependence to Google and you can still move to another web host in the future.


Anonymous said...

Good post Sid. Django <-> Google App Engine is a very useful insight.

So theoretically someone can set up a Django AMI instance that will automatically take the App Engine code and run it. Interesting, this sets a limit on premium Google might charge beyond the free limit.

LOL, prototype in Google App Engine, port it to Amazon EC2 as needed.

Infrastructure cost is not the controlling factor. But the ability to leverage the infrastructure is. Thus the skill base, code base around the infra will play a critical role in the utilization of the infra to do something useful.

Zero effort scalable distributed computing is the holy grail. Always late to the market MSFT will have something up their sleeve here.

Siddhi said...

django <-> GAE: its not quite to automatic, you do have to make changes, but if you design it well, it will only be a couple of days work rather than the weeks that it could be. Platform switching is usually a very painful task.

The big plus with GAE is that many questions are taken care for you. How to setup the server? Which database to use? How to setup load balancing? How to optimise server and database throughput? All these are taken care of, whereas in AWS you have to make decisions on all these, then install and setup each component. This is usually quite a headache.

I think we'll see web apps on GAE and heavy computation tasks that require sockets or threading on AWS.

Siddhi said...

Spent most of the day porting a few of my tutorial django apps to app engine.

It seems like I misjudged the porting effort.

Not only do you need to port your app, you also need to port every other third party django app that you are using. There is typically a lot of reuse of 3rd party stuff in django, so this is a huge task.

If you are not using 3rd party code, and you are not using auth, admin, sessions and most of the contrib stuff, then its not too hard to do the port :) One of my apps is like this, so hope to port that sometime tomorrow.