Tuesday, March 16, 2010

Google App Engine is the Best Web Application Platform

It's a great time to be a web engineer. It's never been easier or quicker to go from idea to execution. Gone are the days when you had to provision hardware, configure operating systems, setup firewalls, or debug system components. Today it's as simple as pushing your latest code to source control or running a single command line script. I'm a software developer first, and a systems engineer second, so anything that can abstract the systems part is OK with me.

Shopping around for a cloud based web application platform can be a bit challenging, as the field itself is so new and it's sometimes difficult to compare offers as apples to apples. A vibrant and young ecosystem needs this sort of wild and varied experiments, and I hope to see more players enter the field of Web Application Platform as a Service.

I've searched for a long time, comparing offers and services, and it's my opinion that Google App Engine is the best web application platform on the market today. I make these claims as an experienced Web Application Engineer, having developed and deployment many different web applications over 14 years.

There are many solid choices for Web Application Platforms, and certainly shop around before you choose.  There are many factors to consider, and I'll list what I think are the most important aspects to consider below.

Abstraction

App Engine does a fantastic job of abstracting the system components, ensuring the developer is well shielded from the particulars of the platform.  Frankly, I don't care what particular version of memcached is running on the platform, as long as it conforms to the specification and the implementation is well documented.  App Engine encourages developers to not think about or be worried about platform implementation specifics.  Ideally, the Platform should be a utility.

Feature Complete

App Engine provides a wide array of services, supporting most use cases for web applications.  Included in App Engine are Request/Response handling, image manipulation, URL fetching, mail services, caching, cron jobs, task queues, blog storage, and a scalable data store.  It's clear that App Engine is more than a simple web server or CGI runner, but instead is a full featured web platform.

Language Agnostic

App Engine supports Python and the JVM.  Notice how I didn't say it supports Java (which it does), but instead supports the JVM and it implies.  App Engine will happily run JRuby, Scala, Clojure, or numerous other JVM based languages.  Yes, App Engine runs Rails.

Free for Most Applications

All of App Engine's services are free to use, and Google provides a generous quota for each component. It's quite possible that your application will never incur a charge.  App Engine's freemium model enables anyone to build, deploy, and host a full featured web application for free.  I'm unaware of another web application platform that offers all of its components for free.  This means there are no barriers to building a real world web application on App Engine, complete with cron jobs, queues, and email support.

Truly Scalable, Pay-as-you-go Data Store

This is quite possibly the biggest deciding factor for me when choosing a web application platform.  A lot of service providers have solved scaling your request/responses or offer a caching layer.  However, no other web application platform service that I am aware of offers a truly pay-as-you-go scalable data strore.  App Engine's Datastore means that I can write my application and know that response time for my requests scales with the size of the data query response size, and not the size of the data store.  This is very important when building web applications!  Scaling the data service is always a pain point for any successful web application, and using App Engine means I never have to worry about it at all.

Simple Deploys

Deploying my application onto App Engine couldn't be easier.  A simple command line script is all it takes to bundle up the application and post it up to the service.  Many other web application platforms have one button deploys, and I'm happy that deployment is a solved problem!

Things to Look Out For

Note that App Engine is currently in Preview mode, which means that Google hasn't finished adding all of the functionality they envision for a 1.0 release or that some APIs are still receiving feedback from the user community.  There are commercial applications running on App Engine, and Google appears to be investing heavily in App Engine.

It's also important to note that App Engine's Datastore requires you to relearn how to store and retrieve data for a scalable web application.  This is a Very Good Thing, as it forces the developer to acknowledge that data access patterns are different for scalable web apps.  However, it may take a bit to let go of the potential relational database baggage (which I think is a good thing, anyway :)

Summary

I could go on and on, but you should be the final judge.  I encourage you to download the App Engine SDK, sign up for an account, and give it a shot.  The App Engine documentation is quite good, too.

If you are a web application engineer, looking to for a free, easy to use, and simply to scale platform, I can highly recommend Google App Engine!
Post a Comment

Disclaimer

I'm probably required to say that the views expressed in this blog are my own, and do not necessarily reflect those of my employer. Also, except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 3.0 License, and code samples are licensed under the BSD License.