Google App Engine – What I like and what I don’t like

by Mark on August 30, 2008

Working with new ‘toys’ is always fun, and Google App Engine delivers fun by the bucket load. Not to mention the fact that everyone seems to be calling it GAE which, let’s face it, is quite amusing.

For a non python programmer like myself it’s a joyful introduction in to this great language. I’m looking forward to working with python more, both in and out of Google App Engine.

Here’s what I like about GAE so far:

  • The mac client (haven’t tried it on a PC yet) is really simple and a breeze to setup. It makes deployment a 1 click process and allows me to easily work on multiple projects.
  • The getting started documentation is excellent. It shows you some really neat stuff, covers the API enough to get you going and even serves as a great intro in to Python.
  • The admin console is fab! I can see exactly what’s going on, invite new developers, see errors and more.
  • Mapping a domain to an app is a doddle, especially if you’re already familiar with Google Apps for business (which I was as all of our customers use it).

I don’t like to be too negative about GAE because it’s awesome, but here’s a few things that have annoyed me and might cause other developers problems.

  • First and foremost… there is no storage for uploaded assets! Now, you can put them in to the database (such as uploaded images) but there’s one major flaw here, you have a maximum of 1meg in a blob field. This makes storage of things such as music or video impossible. The solution? S3 maybe…. see below.
  • S3 doesn’t work for storage of larger files! Doh! I spent a while getting S3 working and technically, it does work (see this blog post). However, the URL fetch library which you need to use times out really quickly, so you can’t actually post the data over to S3. You kinda see why they wouldn’t want you using S3, and I suspect they are busy working on a competing product to server GAE developers (lol… every time).
  • No unique keys on database fields. It seems, other than a single key, you can’t create a unique constraint for a database field. This means you have to do a lookup to see if the entry is there, which of course could (although unlikely) result in a race condition.
  • You can only send email if it comes from a logged in google user or an app developer. I can see this being a problem if we ever need to use it for a client and send an email from someone such as no-reply@ourclient.com
  • A large percentage of people already seem to be talking about scalability on app engine and ways to improve performance. Surely I shouldn’t have to worry too much about this with Google?

I’m sure they’ll sort these few niggles out shortly though. It seems Amazon are steaming ahead with such things as their Elastic Block Store and I can’t quite see the Google team letting them lead by too much in the innovation stakes.

Google seems to have a strong focus on letting developers drive the success of GAE forward and have just released their Google CookbookI’ve added a very simple entry for shortening URLs using the is.gd service.

There will be a SWIM lib for Google App Engine coming soon!

{ 3 comments… read them below or add one }

mark Panay August 31, 2008 at 7:52 am

Just with the bit of markup and styling that I did after downloading GAE (you’ve killed that for me now lol) for our little stealth project, I have to say it’s pretty awesome.

Python in the XHTML looks pretty straightforward too… Be interesting to see what is possible with a SWiM library.

Mark Panay September 1, 2008 at 4:12 pm

So Tom tells me it’s not Python in the XHTML, DOH. There goes my brief love affair with Python… lol.

Prathapan Sethu October 25, 2008 at 7:28 am

There are no JOINs either. You have to do the join yourself within the application, which could become a performance issue, unless the design is done carefully. BigTable is no MySQL, and it takes a while getting used to the BigTable style of programming.

Leave a Comment

Previous post:

Next post: