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.
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.
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.
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.
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 :)
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!
Popular posts from this blog
By Seth Ladd – September 02, 2011Sponsor: Register today for New Game, the conference for HTML5 game developers . Learn from Mozilla, Opera, Google, Spil, Bocoup, Mandreel, Subsonic, Gamesalad, EA, Zynga, and others at this intimate and technically rich conference. Join us for two days of content from developers building HTML5 games today. Nov 1-2, 2011 in San Francisco. Register now ! This is the second article in a Box2D series, following the Box2D Orientation article. The Box2DWeb port of Box2D contains a nice example to show off the basics of integrating physics simulations into your web app. This post will provide a walkthrough of the example, explaining the high level concepts and code. First, let's see the example in action. The code for the above is open source and available on GitHub. It was adapted from Box2DWeb's example . Animating Before we look at Box2D, it's important to understand how the above simulation is animated. You might think setInterval or setTimeout is
By Seth Ladd – February 05, 2014Angular and Polymer, sitting in a DOM tree, B-i-n-d-i-n-g. First comes components, Then comes elements, Then comes the interop with the node dot bind. Angular , a super heroic MVC framework, and Polymer , polyfills and enhancements for custom elements built on top of Web Components, can live harmoniously in the same app. This post shows you how to connect Angular-controlled components to Polymer-controlled elements via data binding. And we do it all in Dart . Angular and Polymer I get asked "Should I use Angular or Polymer?" a lot. My answer is, "Yes". That is, both libraries have distinct strengths, and you can use both in the same app. Polymer excels at creating encapsulated custom elements. You can use those custom elements in any web app or web page, regardless if that app is built with Angular, Ember, etc. Angular excels at application engineering, with dependency injection, end-to-end testability, routing, and services. Here are som