For Rainy Days I needed something to process the weather data that gets sent to the Android device, because some of the processing is simply to much for a mobile device. Since I had played around Google App Engine already I picked it as my PaaS of choice, besides I didn’t feel like mucking around with virtual servers on AWS anyway :)
Because I already had invested in some Java code that I also use on the client, and my python isn’t that fluent yet, I decided to run Java on appengine. My initial app was just a simple servlet, but I soon got fed up with all of the cruft related to that so I used Gaelyk as a lightweight framework. It allows me to code my “servlets” as groovlets, which are just plain groovy scripts, hook up my existing Java code and write new code either as Groovy or Java classes. It also adds some nice shortcuts for appengine, like accessing memcache like a normal map.
The things I like about app engine so far:
- The dashboard is great! It shows statistics on specific urls which is just what I need for my usecase. It has a clear overview of quota’s.
- Logviewer is very nice, although the times could be localized to my timezone (come on Google, you know where I live by now :))
- Deployment from within Eclipse is very smooth, and to be able to run multiple versions of your app is great for testing.
The biggest thing that I don’t like is: start up time for the Java vm. It simply takes too long, and has been blogged about here. Aparently it should get better when my app will get more load on it, but at the moment some requests take up almost 6 seconds just to serve up a “304 not modified” response. This startup time also adds to the total time allowed per request which isn’t helping. The precompilation option does seems to help however and aparently they are working on it at Google.
One other thing to consider is that you should deploy often. The development server doesn’t always emulate the real cloud perfectly and somethings will not work on the cloud while they work perfectly on your local environment and vice versa. This has bitten me a few times already.
All in all it has been a fairly positive experience so far. I might still take the plunge and rewrite my app in python if the start up time keeps being an issue, but I rather not :)