A few days back, I received an invitation to create an application on Google App Engine (GAE). I was impressed with the ease with which I was able to create a quick CRUD application. Even though I am not very knowledgeable in Python, it took only a few hours from downloading the framework to creating a usable application (different from the example app), and that time would have been shorter, if it hadn’t been for some minor troubleshooting with configuration issues.
Google markets GAE as providing you with the ability to “build web applications on the same scalable systems that power Google applications.” The High Scalability site has some good advice on how to leverage the framework to build a scalable solution. However, I think GAE may be more attractive to those building small-scale web sites that do not need a whole lot of programming.
Consider the web sites of typical small businesses. Many of them have a few pages describing the company and their products with a few email forms for sales or support. GAE can be used to create and host such web sites. Those sites have been pre-dominantly built with plain HTML with PHP or Perl for the web forms. Now, they could be created on or moved to GAE which has free hosting and an arguably better programming infrastructure.
Personal web sites hosted on web sites like Geocities can also be moved to GAE. While Geocities charges for programming in PHP and mySQL, GAE provides a free option to program with Python and the GAE Datastore. Most of these web sites (business or personal) will never come close to consuming the 500 MB and 5 million page views that would require additional cost. And so, the value proposition of GAE is very high.
For large-scale web applications, I feel that GAE may serve more as an incubator rather than a long-term hosting solution. During the initial stages of building an application, GAE provides a convenient programming environment at zero or low cost. However if the application becomes popular, the developers require greater control over the programming environment (hardware and software). Presently, GAE does not provide scheduled processes or database export, two features that would be essential for a large consumer application.
The most important barrier, though, is the lock-in to the Google infrastructure. Being tied to GAE will keep you hostage to Google’s pricing, infrastructure and service. Porting to a different infrastructure might require time-consuming changes to your application. The longer you wait, the larger your risks. So, using GAE for creating an initial version of your application may make sense from a cost and prototyping-ease perspective, but if you have a much larger vision for your application, you may want to examine other platforms too.
Google now has a few services that are separate, but would seem to belong together: Blogger, Google Pages, Google Sites and App Engine. Let us call the amalgamation of these services as, say, Google SiteBuilder. It would provide the ability to create dynamic pages in Python (and other languages). You could create static pages and edit them visually. You could perhaps edit the dynamic pages along with the static ones in an administrative interface. You could change the site layout through pre-built or custom templates.
Google SiteBuilder could allow you to add different blogs and feeds to your website. You can also create a wiki or more for different people to collaborate. This last feature is an extension of the function of editing static pages: You are allowing other people to edit the static pages and upload documents, while maintaining the history. With all these features, Google SiteBuilder perhaps becomes more like an online Visual Studio for web applications.
I suspect that we will not see such a consolidated product from Google soon because of the possible administrative complexity for end users, many of whom are not programmers. For example, a user of Blogger simply wants a good-looking layout and the ability to add and edit posts, and may dislike seeing an interface showing the various files for the application. What may happen is these applications will start converging towards each other and co-opt each other’s features.