App Engine: Webapps for the Masses

A photo of my Harley and I taken by my friend Katie.
Disclaimer: This article is more technical and nerdy that my usual posts.

Before starting at Google the only real web development I had done was with the Microsoft technology stack. This consisted primarily of .NET, and it wasn't exactly fun.  As part of my curriculum at UW the Foster School of Business taught a lot with Visual Studio.  The curriculum didn't teach students how to become good developers. Rather, it taught us how to build and implement Microsoft solutions.  Upon graduating, I didn't know anything about web standards. Heck, why bother learning Cascading Style Sheets when you can just manipulate that stuff in Visual Studio visually anyway. It'll look great in Internet Explorer and that's consumers use anyway! (heavy sarcasm).

Fast-forward a few years and my approach to web development has done a full 180 degree turn.  I've moved away from Microsoft almost entirely as both a consumer and a developer (my friends at Liberty Mutual will love that one). Honestly, I couldn't be happier with that choice.  Most of the code I write now is either in Python or Java and my platform of choice is Google App Engine.

The premise of App Engine is simple.  Developers want to spend time writing code.  They want that code to be scalable, and they want an easy way to deploy and monitor the applications they are building.  Enter App Engine (GAE).  GAE allows a developer to do just that.  Rather than spending a disproportionate amount of time optimizing an application to work across multiple machines at scale, the role of a typical Systems Administrator, this task is automated in the background automatically.  As a developer writing for GAE, you write code and deploy it to Google's cloud infrastructure with the click of a button.

Looking to create apps that utilize either a DataStore (non-relational db) or CloudSQL (relational)? No problem. Or what about monitoring visually the data-usage of your application across a given time period? Hey, that's build into the Administrator Console right out of the box.

Essentially, what App Engine does in practice is what Visual Studio attempted to do in principle.  Visual Studio's approach to development is that anyone can be a developer.  Rather than having to code HTML, CSS, and the backends that power applications on the open-web, Microsoft elected to make a WYSIWYG development environment that lowers the barriers to entry for creating applications.  Where this approach falls short is that deploying .NET applications, let alone making them scalable isn't easy (Case Study: Orkut).  One has to go about procuring hosting, modifying configs, plugging in an external SQL Server. The process is a mess and a needless one at that.

The App Engine approach shuns the proprietary standards Microsoft has built their business on in favor of open-source ones.  GAE allows for development in Python, Java, and Go. It also loses the WYSIWYG development environment in favor of some excellent Eclipse plugins.

I'm not saying that App Engine is perfect, because it isn't.  In fact, what you gain in automatic scalability you lose in the ability to specifically tailor and optimize your applications serving infrastructure.  It's really a matter of how much hand holding a developer actually needs, and this is line that is hard to walk.  I use App Engine quite a bit internally at work and I use it personally as well. In fact, the blog you are reading at this very moment is being served via App Engine!  All said and done, I love that platform and have seen it improve dramatically in the short year or so I have been using it.

Labels: , , , , ,

A photo of my Harley and I taken by my friend Katie.