yet another blog about computer, technology, programming, and internet

Saturday, June 19, 2010

Pairing Google App Engine with Other(s)

Saturday, June 19, 2010 Posted by Ismail Habib , , , , 19 comments
I discovered Google App Engine (GAE) just a couple months ago and immediately attached to it. The idea of having a web application platform which is easy to use (no sys-admin thingy, just concentrate on developing), scalable, and free (up to a certain limit). Without even realizing (okay, I'm exaggerating), I ended up with a project where I paired up GAE with another server. Well, not necessary a server, but any kind of machine that provides something extra to GAE. At first I wasn't so sure that this is a good idea, however, in the end I was convinced that this is the best solution that I can come up with.

1. GAE's power vs GAE's limitation

With great power comes great responsibility. With cool features come some restrictions. It's a trade-off, ying and yang. I'm a Java programmer so I care mainly about the Java version of GAE. In GAE, not all Java features is available. Things like creating thread and writing to file system are not allowed in GAE. GAE also doesn't have persistent running process and every task should be finished in 30 seconds or less. Despite that, you might still want the GAE power. Why not using both?

2. Scalability is not entirely necessary, but still needed in some part

As I mentioned in the first paragraph. Scalability is one of GAE virtue. We can have a part of our application which requires high scalability to be deployed on GAE. Another part of the application that could not be necessarily scalable may reside on the other server. I could imagine this setting where GAE serves as an interface to outside the system and/or as a storage while the other server responsible to do things that GAE specifically couldn't do due to its restrictions.

3. It will be pure GAE in the future

For one or more reason, we can't have a pure GAE solution. It might be because the application is migrated from other technology and require some more time to be ported, or that the current GAE is not yet capable, but will be in the future (see GAE road map). It might be a good decision to start doing things in GAE if we believe that the future is on GAE, thus investing some resources now instead of doing it later (which will cost more without a doubt).

What do you think?