As of today, my site is officially on the Google App Engine (GAE). The switch was rather painless considering the GAE is largely python/Django-based. The main difference in the GAE versus using straight-up Django is that GAE has it's own ORM.
Limitations:
- Performing complex queries is somewhat difficult to do. When using Google Query Language (GQL) or the filter query method, sorting becomes an issue. For example, lets pretend that we would like to filter blog posts based on their category. We would filter using the category foreign key. Simple enough, what's wrong with that? Well nothing, but according to the documentation, there is an ordering limitation. A query can only be ordered by the item that it was being filtered on. In our case we are filtering on a category FK. If we wanted to order by date instead, according to the docs, that is not possible.
- Read-only access to the file system is another limitation. If you need to upload an image, you're out of luck. However, storing file data in the database as a blob is an option (although not a good one) but you are limited to 1MB. In most cases, this will not be an issue but when dealing with large images or videos consider you might consider YouTube or Picasa which can easily be integrated.
- Domain configuration documentation is lacking on how to point to a project. I actually had to find the solution on a non-google forum. Since the google app engine works by using sub-domains, I also have to use the ugly www prefix which is not a big deal but I prefer not to take a step back to 1995. I prefer non www domains, they look nicer!
Advantages
- Apps are super easy to setup and deploy.
- No need to spend to time being a sys-admin. Google takes care of that.
- All the great tools and applications that Google has Docs, Picasa, YouTube, gmail, etc.. can either be integrated into your app or setup on a sub-domain.
- Perhaps the best feature that I am befitting from is the fact that I am saving $10/month in hosting fees. The likely hood of my site ever exceeding the quota for free accounts is very slim.
Overall, I feel that the advantages outweigh the disadvantages at this time and I plan on making more apps on the GAE. One feature I wished that the GAE offered is access to the gmail spam filter through an API. How awesome would it be if you could filter comments or any type of text for spam? I would totally implement that. Speaking of which, I finally turned my comment system back on.
Previously, I had no solution for combating comment spam. I spent some time playing around with akismet but could never get it to function correctly so I ditched that solution. Next, I stumbled upon recaptchas.net, But I didn't like having an ugly badge that didn't flow with my site just to validate that a user is human. Finally, I found captchas.net, a very light weight captchas system. So I hope this will help combating my spam issues. In the event that spam gets through, I have an easy way of disabling spam as soon as it comes in. Maybe Google will implement my feature request then I can avoid captchas altogether.
I am still in the process of adding my gallery back. It's completed, I need to spend some time migrating the data over. Since GAE is using Django components I felt that I could keep the Django badge on my site. That's about it. I hope you like my subtle design changes!