Is Google App Engine Ready for Prime Time?

I recently took the time to build a web application on Google App Engine and wanted to share my thoughts on the experience and the pros and cons of Google App Engine as a web development platform.

TuneChimp

tunechimp screenshot

The app I developed is TuneChimp, a music mashup that was recently named ProgrammableWeb's Mashup of the Day and a finalist in Mashable's Y! BOSS Challenge. TuneChimp makes it easy for you to discover the very best music, videos, photos, and more for an artist by mashing up content from imeem, YouTube, Flickr, Yahoo, Last.FM, Google News, and more. TuneChimp takes advantage of the dozens of music-related APIs that are now available on the web to auto-generate an artist profile to quickly discover new artists or play music from your favorites. The most useful feature is that it takes the top tracks from an artist based on robust Last.FM audio-scrobbling data and creates a playable playlist using imeem's on-demand music streaming platform.

The core of the application calls 11 different APIs, appropriately caches the datasets, and cross-links the various dataset to put together a meaningful artist profile. The APIs are all accessible through REST endpoints in either JSON or XML formats.

Pros
The single greatest advantage of Google App Engine is speed to market of an application. TuneChimp was designed as a small weekend project to let me perform competitive analysis on the most popular music-related APIs (I manage the imeem Media Platform and wanted to see how we fared against other offerings). The beauty of GAE was that the same day I started coding I had a basic site up that pulled data from several APIs. Since GAE only supports a narrow web app scenario, it makes it extremely simple to setup, develop, and deploy an app. No need to install an OS, configure apache, nor optimize mysql.

While some complain the datastore APIs are limiting because you can't perform classic relational join operations, anyone who has been involved in a large web app built on an open source stack knows that those operations don't scale anyway. GAE forces you to design for scale from the beginning, but its an easy mental model to learn and super-fast to get up and running. The dbmodel objects are similar to any web framework, like RoR and others, so its also very easy to pick up. And the immediate scalability benefit makes it so you don't have to worry how you are going to handle extra load.

Currently GAE is limited to Python and that has put off a lot of people from trying it. I decided to bite the bullet and learn Python and I have been so happy that I have. I see Python as a great compromise between PHP and Ruby on Rails in that python is more explicit like PHP but cleaner in code and still has many of the productivity benefits of RoR with the GAE framework (or Django framework if you choose).

Cons
Unfortunately I encountered some serious bugs in GAE during my development. One bug prevented any web request in production from returning multiple cookies. Unfortunately many APIs use cookies for authentication and it was impossible to read from certain APIs without implementing hacks. I filed the bug, complained to my contacts at Google, and it still took months for this issue to be addressed. GAE is still clearly a work in progress and the bleeding edge developers who are willing to engage with it now will have to continuously invent hacks to get around these kinds of bugs for some time to come.

In addition the restrictive exceeding high CPU quotas and inflexibly short time-outs make it VERY difficult to reliably build on top of third party APIs with varying response times. I ended up having to build in retry logic and significant caching to try to work around these time-outs. At the same time, without the ability to run long run processes and cron jobs, a developer is forced to continue to host a server outside of the GAE environment to perform batch processing and more.

Probably the greatest detractor from Google App Engine though is the propriety stack that it is built on and the resulting lock-in. This creates significant technology risk for a startup to build on top of GAE since its going to be extremely costly to move to a different infrastructure if necessary. Hopefully some of the projects third parties are working on to port the GAE web framework and datastore will mitigate some of the issues associated with this lock-in.

Overall
While Google App Engine has become my web development platform of choice for all my weekend projects, I would not yet take the risk of running a production web business on top of GAE. The platform though is very promising and I hope to see my concerns addressed over time as well as large web app success stories built on top of this cloud platform.
Enjoyed this essay?
Get my weekly essays on product management & entrepreneurship delivered to your inbox.