Understanding Google App Engine
Maybe it’s just me but I’ve always been a little thrown off by the name of Google’s cloud computing platform: Google App Engine. I suppose it is an “engine for apps” and I will agree that a name such as “Microsoft Azure” doesn’t exactly describe the intent of that cloud computing platform either. However, AppEngine is more than just a framework or a piece of middleware designed to power apps. Instead, it is a complete cloud computing platform upon which apps can be built and hosted. Its most obvious competitors remain Amazon Web Services (http://aws.amazon.com) and Microsoft Azure (http://www.microsoft.com/azure) and there are quite a few similarities between all three of these, starting with the data storage mechanism provided by each (Azure’s SQL Services, Amazon’s Simple Storage Service and SimpleDB, and Google App Engine’s GQL). As time goes by, it seems like each of these data storage options is branching further apart from the others, setting up clear usage scenarios for each where there is little overlap at this point. For example, Azure’s SQL Services are slowly morphing into a sort of “SQL Server In The Cloud” with full SQL database capabilities, as developers have come to know and love. GQL meanwhile is very much a non-SQL data source allowing developers instead to only retrieve data from single tables and only 1000 records at a time, at that.
Each of these cloud computing platforms also offers a host of other services along with dynamic scaling, seemingly unlimited storage, and a host of APIs for developers to utilize. App Engine also includes first-class language support for Python and Java developers (the only one of the “Big Three” cloud platforms to give Java that first-class language status). App Engine is somewhat unique in that it provides a set of APIs for what seem at first glance to be very rudimentary options: things like Google account access, Mail, URL Fetch, Image retrieval, and In-memory data caching are certainly necessary building blocks for most web applications but there’s not a lot of “sizzle” there to get developers really excited. So what types of apps are the best candidates for hosting on App Engine?
First, any application that truly needs a full relational data model is probably not a good fit. This includes virtually all large-scale applications currently in production today but there are certainly many of these SQL database-based apps that could get by using the “Big Table” approach of GQL. Of course, that means other technologies such as enterprise reporting also fall out. In short, developers building simpler web apps that do want to potentially scale up to an almost unlimited size that do not require true SQL database support would seem to be a good fit for App Engine….the question at this point is: how many applications really fall into that category? Or, better yet, how many application developers will bend their design and requirements to fit to what App Engine is currently offering?