I was having a chat with one of the guys in the office today and was wondering about the considerations you would make when deciding between a web/worker role and a VM in Azure.
To give an example we have a solution which runs some web services and ASP.net pages in a web role component which has 2 small instances and also some background processes which run in a worker role which has 2 small instances.
This configuration gives us enough scalability at this stage and gives us a basic high availability scenario.
The costs we would expect to see for this set up would be around $350 per month based on the Azure list prices (we actually have an enterprise agreement but for the sake of a simple example lets just go with the list prices).
If you consider this to a traditional model you might run these services on the same server if you werent in the cloud. EG host the web services in IIS and the worker role as a windows service. So we could potentially get away with just 2 servers in the above scenario because our 4 roles have spare capacity. If we transfer that to the cloud and considering hosting in IAAS instead we could use VM Roles and get away with 2 VM's and host like I described earlier as if they were on premise.
Now obviously VM is in preview at present so the costing is likely to change but the difference could be significant if the prices are similar between the roles when VM goes into general availability.
So coming back to my original thoughts which were along the lines of what considerations you would make and what would be the tipping point between deciding to choose between a VM role co-hosting multiple of your services versus a Web/Worker Role. I guess one of the most obvious considerations would be the cost of managing the server myself and patching etc. I think one of the others would be the auto-scaling benefits of the web/worker role which is probably a lot simpler than in the VM role in terms of application deployment.
Im quite interested to see what other people think in this area, particularly based on real-world examples