Search This Blog


Monday, June 23, 2008

Google App Engine and My Thoughts

Google is really impressive. First, it came out with a killer search engine that makes finding information indefinitely easier. Then, it offered a myriad of free services, ranging from the very good, such as Picasaweb, Blogger, Google Reader, to the very bad, which I shall not named.

Since Google came out with Google Office, I've been wondering when Google would build an online IDE. But so far there is no such news, yet. However, Google did roll out Google App Engine, that allows one to run his web application on Google infrastructure. I became one of the beta testers immediately right after this service was made available to all the web developers with Google accounts.

As a beta service, Google App Engine is doing OK. You can only write apps in Python, this I thought was a downside, because I was a Python newbie. But why not take this chance to learn Python? So there you are, a web application for bloggers.

After trying Google App Engine for some time, there are goods and bads to it. Here's a list:

  1. MVC framework. Google App Engine uses Django framework, which is MVC. One thing good about MVC is that it has a clear separation of concern. This definitely is better than other frameworks, especially event-driven framework such as ASP.NET 2.0.
  2. Free hosting. Currently Google allows you to host at most three applications on their web server for free. At least one doesn't have to purchase domain name just to host the applications. The barrier to start a web business is theoretically zero.
  3. No scalability issue. Google handles the web traffic pretty well. So instead of having a less-than-well-known hosting provider scrambling for a solution just in case your apps take off, why not use the try-and-true solution offered by one of the Internet giant?
  4. Integration with Google account. This is very good in that I don't have to handle user authentication and things like that. Good framework should take care of as much low level plumbing detail as possible. User authentication is definitely one of the most common features you see in web app. I'm glad that I don't have to handle it.
  1. Poor unit testing support. There are a few tutorials on the web on how to unit test Google App Engine applications. But Google doesn't support unit testing out of box. This is a kind of huge let down. One of the major benefits of MVC is that is supports unit testing naturally. Having poor unit testing support simply reduces the appeal of MVC.
  2. Lacking of a free WYSIWYG HTML editor. Enough said. OK, this may not be an App Engine problem. Furthermore, a good, free WYSIWYG editor is not a necessary nor a sufficient condition to build an impressive web application, but having such a tool can definitely speed up the front end development.
  3. Support Python only. Google uses Python heavily. So currently only Python is supported. Google promises that in the future other languages may be supported. Yeah, just cross our fingers.
  4. GQL. Google has a good reason to introduce GQL, a SQL-like language that works only on Google App Engine platform. But that's the problem; developers are usually suspicious of such a thing because they don't like to be tied to a particular vendor. What if I want to deploy my apps elsewhere? I can't unless I rewrite all the queries.
You have anything to add? Don't forget to list them in the comments section!


MichaelW said...

Hi I'm looking to build up my incoming links for my blog.
Would you like to exchange blogroll links with me?
If yes, please visit:
and leave your URL for your blog there. I'll link to you within

hours. Thanks.

SDC said...

If you separate yr data layer out well, moving from GQL to SQL needn't be the end of the world.

True it will be extra work. I just enjoy the novelty of breaking out of the SQL grind for a bit.

Anonymous said...

GAE does not use the Django framework, only parts of it, and none of it is required. In particular it does not uses the Django ORM. Other Python frameworks run on GAE as well.

Anonymous said...

Another issue is data migration.
When I host my data on a MySql server i know exactly what I need to do in order to move all the data to another host. What's the case with Google? I did not see any export tools or methodology. This might become a problem if you decide you want to leave.

David Burns said...

Google App Engine is slowly but surely growing in terms of Unit Testing. I have just started using GAEUnit which runs the python unittest framework with GAE and gives you a nice visual of whats passed or failed.