On Launching A New Server App in 2009
The story of setting up this blog was an interesting little vignette of software use in 2009.
I knew that I wanted to run the publishing software myself, since I wanted to experiment with adding some features. I had previously used blogspot and, while it worked great, it wasn't really possible to change it. So I downloaded Wordpress and started tinkering.
It's 2009, and nobody owns their own servers anymore, right? I immediately headed off to Amazon to set up an EC2 instance, which couldn't have been easier, and within five minutes I was SSH'ed into my very own Fedora Core 8 system. Unfortunately, there was no PHP, no GCC, no mysql, no libxml-devel, and a dynamic-object-unfriendly Apache instance on that box already. A quick search through the AMI community repository turned up a JumpBox image that claimed to provide WordPress support but when I instantiated it it never seemed to finish the boot -- the readme suggests that it was waiting for a configuration prompt that I never could provide.
Well, all of that was a bigger pain than I had counted on, and $72 a month was pretty steep in any case, so I headed over to my SliceHost instance to see if I could have more luck there. I was about halfway through tickling the Ubuntu installation on that box into usable shape when I paused to consider what I was doing.
Suppose it works, I thought. I'm going to be responsible for the care and feeding of this thing forever. Keeping a Unix server running is not really all that interesting -- it's one of those digital hygiene things, like flossing. Surely I could find a publishing platform that wouldn't tie me to an Ubuntu kernel, an Apache process tree, a PHP module, and a mysql daemon for the rest of my publishing life?
I briefly considered taking the ongoing approach, and rendering the whole blessed thing as HTML. But then I thought of the Google App Engine. I've been impressed by how quickly I'd brought small projects up on it before. Somebody must have written a self-publishing platform for it already!
A quick Google search turned up the GAE-hosted blog of none other than my old co-worker Bret Taylor, with source code. After 30 minutes, mostly of cutting and pasting HTML, the site was up and running, with Google admin authentication and Disqus comment threads. I have full control of the source and was able to add some features that Bret's little app was missing. After paying ten bucks for the hostname and filling in a couple forms, I had my own domain name linked to the site, which is quite likely going to be free unless I experience a huge spike in popularity.
The experience repeated, in miniature, the three "utility computing" concepts that are out in the marketplace right now. These terms are already well down the "tired" slope, but they do provide useful buckets for thinking about these products.
- Blogspot, or Wordpress.com, are instances of Software as a Service (SaaS). The product is easy to consume, difficult to customize, and can be reasonably expected to have no major downtime. Ownership and control of my personal data (e.g. the articles I publish here) is in somewhat murky territory, but one that seems to strike a reasonable balance for many users.
- Amazon EC2 and Slicehost are examples of Infrastructure as a Service (IaaS). In many cases, they provide the infrastructure that we're already used to, in a mass-produced, standardized package.
- Google App Engine and Microsoft's Azure are examples of a Platform as a Service. By coding to a more restrictive API, which essentially commits to a single development framework, the application "inherits" much more behavior from the platform. In the case of Google App Engine, I got web serving, URL resolution, data persistence, a modern scripting language runtime, and automatic scaling and load balancing.
Many cloud computing product companies are selling directly to enterprise IT, which necessarily means that they are focused on cost reduction. As is often the case during platform revolutions, it's harder to see the growth centers -- the new applications that will be created by the ease of development and deploying on platforms with novel characteristics.