Within the next two months I'm hoping to launch a product that requires scalable, redundant, and commoditized hosting for a number of geographically distributed nodes. As of today, I don't think I'll be using Microsoft Windows Azure to host my solution.
Windows Azure and the Cloud
After looking around at various cloud-hosting options for my solution, I've considered the notion of deploying my solution on either a Platform as a Service (PaaS) cloud or going a bit deeper down the "stack" and using an Infrastructure as a Service (IaaS), where I'll be looking for full-blown virtual machine (VM) cloud hosting.
I'm no stranger to the cloud. As I discussed in " Amazon's S3 for ASP.NET Web Developers," I've been actively using it for a number of solutions for myself and clients for years now, and I'm sold on the benefits of being able to easily access scalable, redundant, commodity hardware and services as a quick way to decrease development time.
For some reason, I've yet to actually test an Azure solution. Oh, I've tried to test Azure a few times, but some aspect of the service or sign-up always turns me away without actually setting up an account. So, in an effort to try to be helpful, as was my intent in " A Call to Action on .NET Versioning," I thought I'd share some reasons why.
PaaS and Dumbing Down My Apps
When Windows Azure was first released, I had no qualms about being unimpressed. From my perspective, Microsoft was (once again) late to the game while still acting like they'd invented everything.
Even so, I could see the benefit in Microsoft working on Azure. I was quite hopeful and optimistic that Windows Azure and SQL Azure would eventually bring some big things to SQL Server and the .NET Framework. I still believe those big benefits are on the horizon—just as I feel that Microsoft's focus on the cloud is a great move.
When it comes to deploying my .NET applications to Windows Azure, I start running into problems. In my mind, I have to dumb down my apps to get them to work on Windows Azure or SQL Azure. Ironically, I haven't paid enough attention to Windows Azure to know exactly what kind of changes are required to my sites or apps, but I have paid enough attention to know that I will have to make some changes.
What I do know, however, is that the site I'm directed to from Google is Microsoft's Windows Azure site, which is designed to cater to developers. The sad thing is that the introduction to Azure for developers, Introducing Windows Azure, is a page where I can download a whitepaper that happens to have been written over a year ago.
Since I already feel that one of the biggest pains that I have with .NET is jumping through configuration, deployment, framework versioning, and compatibility hurdles, I just can't compel myself to click on a link that's going to give me year-old information on how I have to do that with handcuffs (Azure limitations) on.
Instead, I'm left wondering why there can't be at least an FAQ that makes it easy for me to get a glimpse of what I need to do to get my apps up and running instead of having to download a white paper.
Azure's PaaS Versus My Need for IaaS
The tiny bit of Googling that I did to determine how hard it would be to deploy a Windows service to an Azure host let me know that while Windows Azure offers both web and worker roles. As this blog post " Windows Service in Azure platform" states, you can't deploy both roles to the same machine or hosting slot.
More important, that tiny bit of research let me know that Windows Azure doesn't support Windows Servers. Granted, I'm not at all surprised by the fact that Windows Azure doesn't support services, as they're a special set of operations that are very heavily tied to the OS. So having to modify deployment needs doesn't seem that big of a problem to me if I want to deploy "service-y" solutions.
What did take me back for a second was the fact that if you need worker and web roles, you'll need two distinct instances of Azure to pull that off. The truth is that this is really just a limitation of how Windows Azure is a PaaS, not an entire piece of the infrastructure.
In fairness, a big part of what continues to keep me from using Azure is that it doesn't quite mesh with my needs. It's only fair that I call that out in an article about why I haven't actually tried Azure for a long time now.
In fact, I don't think I would have even bothered with detailing my own weird misgivings about trying Azure if it weren't for the fact that Azure now offers a Virtual Machine Role, an IaaS offering that does meet my needs and speak my language without the need to dumb anything down.
It's the Confusing Marketing, Stupid
What really compelled me to write this article is the fact that I've considered Windows and SQL Azure for a number of different projects over the past year or more. Yet each time I've considered Azure for some need or as a potential solution (which has been quite a bit), I've found myself going out to the Azure site, clicking around for a few minutes, and leaving in disgust at how useless the Azure site is or was.
In fairness, the site has progressed tremendously of late, to the point where I can honestly say that in my latest round of attempting to size up Azure (a few days ago), I was actually able to get a decent sense of how much it might cost to host my solution with Azure. This was a big change over what I had noted in previous visits.
Improvements aside, I still continue to bump into really confusing terms and marketing when working with the Azure site. For example, take what happened when I just went ahead and decided to try the free Windows Azure trial membership.
As it's presently written (see Figure 1), the free trial promises a Small Windows Azure instance along with a bunch of goodies for 90 days. Frankly, this is quite generous and definitely enough to make me start seriously contemplating Azure.
Figure 1: A generous offer for 90 free days of Windows Azure
Only, when I actually took the plunge to get the free trial, I was left completely at a loss. Above and beyond how I was irked about having to use Windows Live, even though it's a solution that absolutely refuses to remember my username, what really threw me for a loop was the fine print (see Figure 2). If I'm not mistaken it says that as of October 1, I'd start getting billed at normal rates.
Figure 2: In actuality, a less-than-90-day free trial of Azure
Not too cool of a prospect when the screenshot for Figure 2 was taken on August 29. Not much of a free trial either.
Instead, I'm left wondering if my credit card will end up getting dinged within just a few days, and whether I'll become another one of those horror stories I see on Twitter where people complain about not being able to make heads or tails of their Azure bills.
Stated differently, I was ready to whip out my credit card and sign up for a free trial that would easily convert to a hosting arrangement if the service was up to snuff, but the Azure site didn't instill me with the confidence needed to continue with the transaction (and if you could see my balance you'd realize I don't need that much confidence).
Consequently, although this last experience with Azure was so much better than previous experiences, I'm left to remember a tweet I heard that joked that "Azure is the color of the sky when there are no clouds."
I Haven't Given Up on Azure... Yet
Maybe I've come off a bit petty or contradictory. I want to try Azure. That's why I keep going to the site. But each time I actually try to evaluate Azure as a solution for clients or for my own projects, I bump into obvious marketing, communication, or other simple problems that prevent me from feeling comfortable about a long-term relationship. So, I give up and go somewhere else.
Still, I feel that this last attempt was almost "there," and that probably means I'll give Azure another stab in the near future. Until then, I've got an Amazon Web Services (AWS) account that remembers my username, and setting up VMs with EC2 is a breeze.