Head in the Clouds
A few weeks ago, I had quite the technical scare at home. A hard drive on my network file server failed and I nearly lost several months worth of family photos (like this one). The ironic thing about the whole event was that I had my network server configured to back up to a service running in the cloud. All I had to do, I thought, was store all files on that server and I would never have to worry about losing data again. What I failed to consider, though, was that my backup service had a limit of 150GB, and once I started adding family videos to my list of data that required backup, I quickly surpassed this limit.
Fortunateley, I was able to work some magic on the drive and get it back to a workable state long enough to replicate the data onto another drive. However, the experience left me quite motivated to ensure that I had not just a good backup strategy in place, but a good overall data management strategy. What this meant for me was going through all of the data that I store on my network and making a deliberate decision about what needed to happen with it. For example, I left music and photos on the network server because those are shared between multiple members of my family. However, I took all of my programming projects off of my server—in fact, off of my network entirely—and moved them to a hosted version control system running in the cloud.
Forwarding to the present day, I've been spending a fair amount of time researching the current releases of Microsoft's cloud computing technologies, and my early experiences in working with the technology samples remind me of one of the main takeaways from my recent almost data loss. Simply put, moving to the cloud is not something that should be done blindly. Sure, you could probably take your existing Web applications and services and deploy them directly to Windows Azure, and they would likely run fine—just as they likely run fine on your current hardware. However, to look at the cloud like this—as simply the further commoditization of hardware—is, I believe, to miss out on some real opportunities to look critically at our existing application architectures and find the places where we can make changes to make better use of the platform.
For example, I was listening to a talk recently on how to leverage Windows Azure queues and how this technology should impact the overall application architecture. The result is something that should not look foreign in principle—asynchronous services receive a message and put it into a worker queue, where it will later be read and processed by a different service. However, in the reality of the elastic-scale cloud platform, taking advantage of this platform component can enable one to create more independently scalable units of work and by doing so, scale much more efficiently than an application partitioned in a more "all-or-nothing" style. From the business perspective, when your cost is based on the resources your application requires, architectural shifts like this are more than just an academic exercise.
Another major theme of mine that has reemerged from my recent research foray into the cloud computing technologies is that if you're a developer these days, there is simply an overwhelming volume of information to absorb and apply. Additionally, these kinds of technologies are meaningless unless you can apply them in your current projects. Therefore, I'm happy to announce we are launching the first of what I hope will be many "brownfield development" series. The first series will start in May and will run weekly at MSDN Magazine online, focusing on taking an existing ASP.NET application and making it into a Rich Internet Application (RIA). I hope to take this same model and use it to create further series on a host of topics, one being the refactoring of applications to efficiently leverage the cloud.
Thanks to the following Microsoft technical experts for their help with this issue: Paul Andrew, Arkadi Brjazovski, Pablo Castro, Sandu Chirica, Fred Chong, Andy Conrad, Mike Flasko, Phil Haak, David Hill, Jason Hogg, Nataraja Koduru, Bertrand LeRoy, Steve Marx, Eugenio Pace, and Chester Smith.