Google App Engine for Java Case Study - source enthusiasm

Saturday, October 24, 2009

Google App Engine for Java Case Study

In my company I was involved in Cloud Computing Competition. The challenge was to understand the oportunity of cloud computing and what company can delivere to our customers. For the company we decide use Amazon EC2.
But this story not about Amazon. I decide to create my simple project on Google App Engine. The first and major plus it's free. Actually when I see what the service is free I fill disappointed. But not in case of Google.
I decide to write project witch is log restaurant, coffee bars and entertainment places. It's quite easy task from first look. Also I would like fill my application with lot of Google services maps, youtoube, picasa ... My thinking was what Google App Engine can help me. Also it's support Java.
From technical point of view I as Java Enterprise developer select Spring DI/MVC and GWT. It's quite easy and in this technologies I am expert.
Lets begin. In google groups you can find information witch framework works on Google App. My application is has few of Ajax. That is why I decide didn't remove GWT. Basically the application has add place screen and find place screen.
I start with add new place functionality. The information what I wont get from application should not have only text information, also images. What was first trouble. I spend one week to develop add image to place functionality. Google app doesn't support file access. Files could not be uploaded to service. You can store them to DB. But it has limitations. Here can help you picasa service. But stop Google App has also request timeout limitation. And it failed each request with exceptions. But fails are uploaded. Most of enterprise developers don't like exceptions I also. So I should wait when google create filesystem or create some hacks. At this time I remove add image functionality.
When I start developing find functionality I found that queries not support "not equals" operation. Also have limitations for >, >=, <, <= if you use it in one query.
Technically all environment configuration is easy. I add tiles support and configure it with Spring MVC. Add dependency injection and controllers scan. For service injection in RCP service you should use hacks.
Also you should know what Google App Engine for Java have only on thread. If you than create multi threading application you can use queues and for them tasks.
It's the troubles of cheap scalable hosting. If you select Google App engine for you application you should be ready for a problems. But it's still quite good for start ups.

1 comment:

Konstantin Galileyev said...

Kiril, I think that you should pay more attention to English spelling and grammar.