Last night (UK time) I tuned in to the Meet Windows Azure event. This is by far the most exciting release of Windows Azure to date. For those of you that missed it, you can watch Scott Guthrie deliver the keynote here.
The feature I was most excited about was Azure Web sites and their improved deployment scenario. From the Windows Azure site:
Build highly scalable web sites on Windows AzureQuickly and easily deploy sites to a highly scalable cloud environment that allows you to start small and scale as traffic grows.Use the languages and open source apps of your choice then deploy with FTP, Git and TFS. Easily integrate Windows Azure services like SQL Database, Caching, CDN and Storage.
This is what I had been waiting for!
My biggest issue with Azure up to now has been deployment. Previously it took upwards of 15 minutes to deploy changes to a web role running in Windows Azure. Now we can achieve the same thing in seconds using FTP, Git or Web Deploy.
So this means I don't need to use Web Roles anymore right?
I don't want to be too critical here, Microsoft have done an amazing job; But to come so close to offering us the web hosting solution we've always wanted and then fall down at the last hurdle is just plain frustrating.
I'm going to go out on a limb here and say most web developers do not work for large software companies with million dollar budgets. This means when it comes to hosting web sites/applications you have to achieve the right balance of reliability, control and most importantly cost.
I personally believe this is why many developers have shyed away from Azure in the past; Because in many people's eyes:
(1 web role == a dedicated VM instance for 1 website) == a very costly solution.
Yes it is possible to host multiple websites on a web role, but this is not exactly made easy for you - and then there's the 15 minute deployment time.
The point is, most web sites do not use a lot of resources. So where does this leave the average web developer? Probably in a position like me. I host around 40 websites for my customers. I have 30 or so in shared hosting (some in the UK, some in the US), a few higher profile sites on a VPS and a couple of sites in Azure (although I'm using the now depreciated WAARW for faster deployments).
I spend around £1000 ($1540) a year on hosting.
For $500 less a year, I can host 100 websites on a reserved instance in Windows Azure; and I will probably get better performance, reliability and management tools than I do with my current hosting solutions. Sweet!
But here's the issue:
Having a reserved instance for your Azure web sites is not the equivalent of having your own virtual server running IIS. As it stands, you do not have the level of control or configuration that you would otherwise have in IIS. If you need a static IP address or to install an SSL certificate then you would have to use a Web Role.
It seems bizarre that we are given the option to scale web sites yet we don't have full management capabilities.
Of course if you don't need these things then Azure web sites are a great solution for you. Unfortunately for me, it looks like I'll have to carry on using Web roles.
What about worker roles?
Why on earth would I pay $87.60 a month for a worker role, when I can pay $83.95 a month and get a full virtual machine.
I believe this will be an opinion shared by a lot of people.
I'll throw caching into the mix because it relates to my point above about worker roles.
According to Microsoft, we can use the new Windows Azure Caching services with Azure web sites. However, I highly expect this requires us to have a dedicated caching role since it doesn't look possible to configure shared caching on a non web role project.
It would cost more to do this than purchasing a virtual machine and installing Memcached.
A message to Microsoft
Microsoft, this latest release is fantastic, but please think of the little guy!
You're missing a real opportunity here. If you can offer us the level of control that we have in most IIS based shared hosting I can guarantee that you will see smaller dev shops (of all platforms) flocking to Azure.
Please do away with web/worker roles and offer shared or reserved workers (similar to how web sites work). With the introduction of virtual machines these roles are just not cost effective (perhaps you're planning to phase them out?).