Google App Engine limitations

Let me start saying that Google App Engine is a great Platform as a Service from Google.

That said, this post is mainly an information for those people who are considering using Google App Engine for some purpose.

In our work we came across a scenario and considered using Google App Engine (GAE) as a solution. I was assigned the task to getting started on the task. You have a beautiful getting started Guide here. We have written good amount of code, everything looked fine on the local development GAE Server. After a good amount of locall testing, deployed our code on App Engine.

Now we started realizing various issues. It was truely an awesome experience solving these problems to finally make the code work smoothly.

Lets get into the limitations:

1. URL Fetch request has a maximum deadline of 10 seconds

From GAE Docs:

You can set a deadline for a request, the most amount of time the service will wait for a response. By default, the deadline for a fetch is 5 seconds. The maximum deadline is 10 seconds. When using the URLConnection interface, the service uses the connection timeout (setConnectTimeout()) plus the read timeout (setReadTimeout()) as the deadline.

2. Maximum request time out of 30 seconds

GAE Docs:

A request handler has a limited amount of time to generate and return a response to a request, typically around 30 seconds. Once the deadline has been reached, the request handler is interrupted.

3. No HTTPS Support for Google Apps domains

GAE Docs:

Google Apps domains do not currently support HTTPS. HTTPS support is limited to apps accessed via * domains. Accessing an HTTPS URL on a Google Apps domain will return a “host not found” error, and accessing a URL whose handler only accepts HTTPS (see below) using HTTP will return an HTTP 403 “Forbidden” error. You can link to an HTTPS URL with the * domain for secure features, and use the Apps domain and HTTP for the rest of the site.

From the GAE Road map, it looks like this feature might be available by EOY 2010 – Refer here

These are few of the problems which we faced while working on GAE.

We made use of asynchronous fetch [Fetch Async] calls to solve the issues with timeouts. In fact the app engine logs very much in debugging the issues!

Over all it was great experience working on GAE. I am truely amazed with the kind of services provided by Google.  To know more about Google App Engine visit Google App Engine documentation here

Google interview experience

I once had an opportunity of being interviewed at Google. Though I fear if I can share the questions here, I feel I can share the experience.

After I applied to Google, I got a call from them after about a month time. The HR scheduled telephonic interview and they really went well. Since I have done far better than I have expected (really? :P), I was sure I would get a call for a face to face interview but I was like “Did I really do well?”. After a week time after the telephonic are done the HR got back saying they have some “Good News” for me. I felt wow, they have called me for a face 2 face interview. Now I started feeling a bit nervous and made up my mind saying “Buddy be cool, there is nothing you are gonna loose if you screw it up! give your best shot and don’t worry about the result”. I have revised my basics well, practised a lot (I really mean it!) of coding questions since I heard they test our coding standards a lot.

Now the day has come, Google has arranged a cab for the interview in Bangalore office. I reached there at around 9:45 AM. My first round was a design question. Initially I came up with an idea that “works” in the given case, then they have added some more constraints. As I kept on solving them they further added few more constraints. And let me tell you, the way they catch what you are saying is amazing (Of course that is why they are there). If by any chance they find you are missing the track, they set your path right. That round went well than I thought I would do.

Second Round : This is typical Google style question on algorithmic concepts (complexity and so on) which has a matrix kind of stuff in the question. I was able to relate the question to some of the concepts I have learnt and gave some 3 working approaches, the interviewer asked me to write a code for the best among the 3 solutions. He wanted me to write a proper working code that would compile if its fed to a compiler. I started writing that, but since this one is a bit TUFF, I ended up writing a pseudo-code.

Now I had break, I met my friend there and we went for the lunch. The lunch was pretty awesome. Then he took me around the office and showed me various stuff around. Then I had to go back to my interview room for the other rounds.

Third Round: This one is also a coding round. This time I was able to write a proper code that would surely get compiled/run and give you an answer. The interviewer was quite satisfied. Then I was asked to write test-cases on how would I test my code. I have written some test cases and made him run through my code, how they are handled. He was satisfied :). I think the Lunch had some effect on my mind LOL.

Fourth Round: This too is another algorithmic coding round. (God I think I have written much of coding in one single day on various question just that day </jus kidding>). The first question was on trees which I was able to answer quickly. Then I got a bit tuffer one, this took some time to code and the interviwer (as said above) was directing me to proper path if I was missing track. At the end I was able to finish it up.

At the end, I felt that I have done far far better than I have expected . I felt very happy for getting a chance to visit Google office and a chance to interact with few best minds.

Some thing to learn here:

1. Be thorough with the basics. They can interview you on any subject you want them to ask. If you say you are good at playing poker, they can still ask you questions on that. Note: Dont take POKER too seriously 😛

2. They are really very very smart.

3. The one good thing I found with the Googlers is that they make you feel very comfortable in the interview.

4. What I felt is that, Its not just sufficient to crack all the rounds in the interview, you need to have some strong background.

5. Another good thing is that they are not gonna ask questions on some specific technologies like Java etc. You are free to write code in any language in interview (Be prepared to answer any question in it). I had an experience with a start-up which was more bothered about some specific language than your actual stuff, that start-up guy said something like ” what am I gonna do with algos in the front end?”, I was shocked hearing these words.

Fun Note : If at all you go for a face to face interview don’t miss the food there. Its really (yummy) tasty 🙂

That’s it for now. Any comments invited.