February 11th, 2010
A summary of App Engine
At Wolfire, we have been using Google App Engine for quite some time. To recap: App Engine is a platform where you can write a web application using a humble set of APIs via Python or Java, and you can deploy this code on Google's infrastructure. I have written about it in more depth here.
This represents the commoditization of App Engine
This is very different from virtual private servers, where you manage the entire operating system, complete with a virtualized hard drive and other virtual hardware. An App Engine app is simply a set of Python or Java files, with a few YAML files for housekeeping. With most hosting services, you can use MySQL, MongoDB, Berkeley DB, a flat text file, or an infinite number of other ways to store data. On App Engine, there is a single API to use called the Datastore. It looks sort of like this:
product = db.StringProperty()
name = db.StringProperty()
o = Order(product='Overgrowth', name='Jeff')
You just write pure Python or Java code according to an open source SDK, and then Google takes this code and puts it on an unknown and variable number of servers in an unknown and variable part of the world.
But App Engine is proprietary...
Many people have criticized App Engine for being proprietary and closed, which causes vendor lock-in. This is fair criticism. It is true that Google's implementation of the App Engine API on their end, using BigTable and other technologies, is totally proprietary. However, App Engine at its core is simply an API. Google even provides an open source implementation of the spec, which is useful for running it locally on your computer -- granted, it is not remotely designed for production use.
In other words, I have all of the code for this very blog on my computer. I have all of my blog posts and other datastore entities backed up in an open format. In fact, I can run a clone of the blog on my local computer using an open source implementation of the App Engine SDK provided by Google. However, the only production ready infrastructure is provided by Google, so I am largely locked in. I would need to write a non-trivial amount of code if I wanted to migrate the Wolfire website and blog to a different platform.
However, this is about to change in a big way. I'd like to draw your attention to a rapidly developed open-source project called AppScale, developed by the RACELab at UC Santa Barbara.
AppScale is an extremely promising open source implementation of the App Engine API. It is designed to run on a number of infrastructures such as Xen, KVM, Eucalyptus, and Amazon EC2. If that doesn't mean much to you, it basically means that you can deploy your App Engine site to a wide variety of platforms, or more interestingly, to competing cloud providers such as Amazon EC2 -- or a private cloud provider.
The commoditization of the cloud
This has huge ramifications for Google App Engine, and the future of web application hosting in general. When AppScale becomes mature enough, this means that Akamai, Rackspace, Linode, and hundreds of other companies with the right infrastructure will be able to host any App Engine app.
This has already been sort of true for general purpose hosting -- e.g. you can write a webapp on Slicehost, and move it to Linode or EC2. However, this is a non-trivial process.
What's so interesting about App Engine and AppScale is that since all of the App Engine applications are created using a very narrowly defined, standard SDK, and the platform is 100% open in terms of data migration, you could theoretically migrate from Google to say, SliceHost, in a single click, completely automatically with zero downtime.
Given this ease of migration, if anyone creates the slightest reason to switch to their infrastructure, you might see thousands of apps moving immediately. Google's massively prized infrastructure has just become commoditized.
The Wolfire Blog could be running on Google in the morning, casually migrate to an Amazon EC2 instance in the afternoon, and then perhaps stroll over to Rackspace in the evening. If one service leapfrogs another, you could press the button again, and seamlessly move to that one. You could even have your app running on many "clouds" simultaneously.
At first glance, this commoditization sounds pretty unfortunate for Google. However, don't feel too sorry -- Google is actually funding the AppScale project (along with research grants from the National Science Foundation).
Why would Google want this to happen?
Google is not really in the business of nickel and diming developers for web hosting. It is really hard to get this sort of information from Google and the App Engine team, but I doubt Google was expecting to ever turn a profit from App Engine, or even come close. I believe App Engine's mission was to ensure that there is a platform available for easily creating web applications and to drive the cost as low as possible. Like Google's massive investments on Chrome, it all comes back to keeping the web as open as possible, so that Google can monetize it using AdSense.
Commoditization is not necessarily cheap
I predict that the emergence of AppScale will not actually drive prices down any further. For all but the largest web apps, Google App Engine's free quota is so generous that many people (including us) don't pay a dime. Actually that is not true: Google charged us 11 cents a few weeks ago when we did nearly half a million visits due to appearing on Digg, Slashdot, Reddit, etc. at the same time!
Quite the contrary: I believe this will create a market for more expensive backends which outperform Google on a given metric, such as running instances of your app worldwide for localized performance, offering beefier, more dedicated hardware to reduce latencies, or perhaps features like not blocking the countries of Cuba, Iran, Iraq, North Korea, Syria, and Sudan from accessing your web app.
The fact that App Engine is virtually free is awesome to attract hobbyists, free hosting is actually not a huge selling point to most companies. If you are running a promotion, or selling a product, often the last thing you care about is a small monthly fee for web hosting. I appreciate the free ride, but I actually am willing to pay for better service, such as having a local instance running in Europe.
Google App Engine is fast, but it is nothing compared to say, Akamai's EdgePlatform. If Akamai runs AppScale on their global network and offers a one click migration path onto it, they will instantly get tens of thousands of apps migrating over, even if it costs several times as much as Google. Likewise, if someone one ups Akamai, all of those apps will instantly move to the new service.
There are going to be a lot of really interesting choices for App Engine developers very soon.