Top 5 Things Microsoft Should Fix in Azure

It’s been just over a week since Microsoft has started to offer the commercial subscription of Windows Azure. As a Cloud enthusiast, I quickly signed up for the Introductory Special subscription and downloaded the required tools to deploy my first app to the Cloud. I had access to Windows Azure since PDC08 and I deployed quite a few apps to test the functionality and features of the platform. As an independent Cloud Computing Strategist, I also explore Amazon Web Services and Google App Engine. Having worked on a few mature Cloud Computing platforms and tools, I had certain expectations from Windows Azure particularly after it has gone past the beta phase. Honestly, there is no significant difference (except the pricing part) that I could notice in the development and deployment experience on Windows Azure.

Here is a list of top 5 things that I feel Microsoft should fix immediately.

5) Metering and Billing Model – Microsoft would start charging the moment you deploy your app even if it is not running and not consuming any resources. Refer to the FAQ on pricing for more details. I personally find this as a huge entry barrier. Ideally, I wouldn’t want to get charged when my app is in ‘Suspended’ mode and not in ‘Run’ mode. Technically speaking, what resources would my app consume when it is not running? It would only be a few megabytes of storage to keep the package and the configuration files. Amazon doesn’t charge me VM hours for inactive AMIs. They only charge me for the nominal storage cost of storing the AMI on S3. Charging VM hours for an idle application is just not convincing enough. I find it to be counterproductive and a barrier for developers to embrace this platform.

Azure Pricing

Azure Pricing

4) Simpler Pricing and Subscription Plans – Microsoft is at it again! After confusing the consumers with half-a-dozen flavors of Windows Vista and recently with Windows 7, they are doing it to their Online Services subscribers. There are at least 4 types of subscription to choose from – Introductory Special, Development Accelerator Core, Development Accelerator Extended and ‘Pay As You Go’ Consumption. This bouquet of subscription offers is confusing and not a straightforward model. This reflects the classic Microsoft way of packaging and licensing products in the form of Express, Standard, Professional and Enterprise. This doesn’t gel with the online services model. I personally prefer the Amazon way of pricing and the sign up process. Simple and straightforward!

3) Agile Deployment and Faster Change Management – On the commercial version of Windows Azure, it takes more than 7 minutes for the application to be available and accessible. And, I am not talking of an Azure application built to assist NASA launch the Mars Rover. This is a plain and simple Hello World ASP.NET app that doesn’t even have a single line of server side code. Add a Worker Role, few lines of dynamic code and storage access code, it will take a good 10 minutes for your application to take off. Again, comparing this with Google App Engine and Amazon EC2, they are almost instant. Each Linux EC2 AMI takes about 2 min. to boot and I am at the root prompt in no time. Windows Azure is a PaaS offering and I cannot afford to wait for few minutes every time I make a trivial change to my HTML file. I can understand if Amazon forces me to go through this as I may have to bundle the AMI with every change that I make. With EBS now supporting booting AMIs, I need not even worry about bundling the AMI. Windows Azure might also be doing the job of spinning the new VMs for every change that I make to the app or the configuration. But I don’t care and cannot wait for 10 minutes for the simple changes to reflect. This needs to be fixed!

2) Configuration Editor – After you deploy the Cloud application, you may need to change the configuration settings. This includes changing the no. of instances of Web Role / Worker Role or changing a custom configuration setting. Having a plain vanilla textbox to change the sensitive configuration setting is just not acceptable! Microsoft has every reason to put up a better frontend to manage the configuration settings that can be potentially built using Silverlight. At least that will drive more downloads of Silverlight plugin. One look at the Configuration settings textbox makes me feel that I am working on an early CTP release. I consider the EC2 Console from Amazon (and a bunch of 3rd party tools like ElasticFox) and ElasticHosts’ configuration editor to be much better. Though Microsoft may want to encourage partners like RightScale to eventually build such tools, as a paid subscriber I deserve a better tool here!

Azure Configuration Interface

Azure Configuration Interface

AWS Console

AWS Console

ElasticHosts Configuration

ElasticHosts Configuration

1) Windows Azure Integration with Visual Studio – This certainly deserves to be the numero uno. The biggest USP of Microsoft is its integrated platform and tools approach. Whether it is core .NET Development, Microsoft Office Development, BizTalk Adapter Development or SharePoint Development, it has always been the ‘Better Together’ story for the developers by putting Visual Studio in the center. When it comes to Azure, I had a lot of expectations from Microsoft on the Visual Studio integration. The reason for that is Azure is logically an extended development platform on the Cloud and the developers should be able to seamlessly deploy their new breed of applications. To my surprise, Windows Azure Tools for Visual Studio 2008 1.1 has little to no integration with the real Azure platform. When I right click on the Cloud Service project and select Publish, I expected Visual Studio to prompt me for my Windows Live ID to enumerate the Hosted Service project to seamlessly deploy the app onto Azure and then take me to the Development Portal to let me decide between staging and production. The approach of opening an Explorer window with the folder containing the .cspkg and .cscfg files and launching the browser with the Azure development portal appears to be so broken! Compare this with the Eclipse and the Google plugin integration. Two independent entities coming from different companies offer a better experience to the developers than Azure Tools for VS. When I click on the GAE button on Eclipse toolbar, it just does the deployment after prompting me for the Google ID and the Application ID. I am not sure if this would get fixed in Visual Studio 2010. But as of now, on the currently available Visual Studio 2008 SP1, it is not in place. I want Visual Studio to fully support me end to end during my Cloud application design, development, testing and deployment. I also expect an integrated Azure Storage tool within Visual Studio. I should be able to browse and manipulate the Tables, Blob metadata and the Queues. Today I have to rely on 3rd party tools for this which doesn’t make the developer productive. Overall, Visual Studio and Azure integration has a long way to go!

Google App Engine Deployment

Google App Engine Deployment

Google App Engine Deployment

Google App Engine Deployment

Visual Studio Publish

Visual Studio Publish


Related Posts

Top 5 Articles

Download The eBook - Demystifying The Cloud

I wanted to write a technical book for a long time. Though some of the well known publishers approached me, I never mustered enough courage to sign up and commit to them. With a full time job and a busy schedule, I am not sure if I would be able ...

Read More

Data on the Cloud - Amazon S3

Storage is one of the key resources offered as a Cloud Service. By moving data to the Cloud, there are quite a few benefits. Some of them include: 1. Illusion of unlimited storage - Unlike hosting, Cloud storage will virtually give you access to unlimited storage. You will never run out ...

Read More

Cloud Personas and Their Concerns

As one of the stakeholders of the Cloud ecosystem, I persuade, motivate and encourage decision makers in my circle to take a serious look at the Cloud. I want to share my experiences of having these conversations with the audiences. Off late, I came across a few IT Managers and technology ...

Read More

Top 10 Myths of Cloud Computing

As we step into the new year of 2010, I want to discuss the top 10 myths of Cloud Computing. Quite a few experts tried to debunk the myths earlier. My attempt is based on what I have seen or heard in my community. The concepts that I am bringing ...

Read More

Who Will Win The Cloud Computing Battle in India?

Till now I have discussed various technical aspects of the Cloud. Going forward I will also cover certain business aspects related to the Cloud. In this article, I want to analyze the opportunity for the Cloud vendors in India. We will first take a look at the ecosystem, the opportunity ...

Read More


  • I am student and new to Azure. What suprised me the most was that when I wanted to subscribe to a plan, it wouldn't take any of my debit cards. Does Azure have a "only credit card" policy. I tried it with several debit cards bt still the same problem :(
  • Yes! You need a Visa/Master/Amex Credit Card to sign up with Azure. That is an entry barrier especially for the Indian audience.
  • Brent
    I sadly disagree with many of your points.

    5) The reason you're billed is that once a VM within the Azure fabric has been allocated for your application, the CPU core and memory for that application can no longer be used by any other application. So it makes sense to bill for it immediately, even when the application is not running. However, there are supposedly future Azure deployment options that may not have this dedicated model could presumably bill differently.

    4) There are different methods to creating a subscription on the platform. But once you're in, the billing methods are pretty straight forward. Any user can hit the MCOP portal and sign up for a subscription just by using a credit card. The only hidden details have to do with fine line regarding what is considered a billable bandwidth and a 'transaction'.

    3) I can't and wouldn't argue about this one. Deployment is the least stable aspect of the Azure platform. Hopefully this will be cleaned up sooner rather than later and integration points for deployment will increase. There's also the issue you don't mentioned about H&A monitoring and integration with on-premise systems.

    2) this is actually in the works I've been told. Expect to see it soon. But is this really a big enough issue to be on a top 5 list? I'd much rather have greater reporting on individual instances and the ability to restart them on command.

    1) kind of a repeat of aspects of #3. And while one-click deployments are nice, they don't really work in enterprise environments. So I'm ok with the current mechnism or using any of the powershell scripts already in place to handle my deployments. There's also folks that are automating TFS deployments to the cloud using these approaches.
  • Hi Brent,
    Thanks for taking time to share your feedback. Below is my response.

    5) The reason you're billed is that once a VM within the Azure fabric has been allocated for your application, the CPU core and memory for that application can no longer be used by any other application. So it makes sense to bill for it immediately, even when the application is not running. However, there are supposedly future Azure deployment options that may not have this dedicated model could presumably bill differently.

    >>I agree with you on the technical explanation. But as a PaaS consumer, I don’t worry about VM’s. Like Google App Engine, why can’t Azure virtualize CLR and make it multi-tenant than allocating a dedicated VM? I am very sure that CLR virtualization will offer more agility and flexibility.

    4) There are different methods to creating a subscription on the platform. But once you're in, the billing methods are pretty straight forward. Any user can hit the MCOP portal and sign up for a subscription just by using a credit card. The only hidden details have to do with fine line regarding what is considered a billable bandwidth and a 'transaction'.

    >>I feel the subscription model can be much simpler that what it is today. If MS wants to offer specialized packages to partners and academia, they can do it offline by providing redeemable coupons. But the pricing landing page is not subscriber friendly.

    3) I can't and wouldn't argue about this one. Deployment is the least stable aspect of the Azure platform. Hopefully this will be cleaned up sooner rather than later and integration points for deployment will increase. There's also the issue you don't mentioned about H&A monitoring and integration with on-premise systems.

    >>I agree that the deployment is stable but it is just not agile. If I have to consider moving my ASP.NET application hosted by a hoster to Azure to exploit the native code execution and full trust, The experience and agility should at least match the hosting experience. I am willing to take the hit if I get into heavy native code because of which Azure may have to dedicate a VM. But for plain vanilla web apps, the current latency is way too much!

    2) this is actually in the works I've been told. Expect to see it soon. But is this really a big enough issue to be on a top 5 list? I'd much rather have greater reporting on individual instances and the ability to restart them on command.

    >>This matters to paid subscribers because the configuration file is a sensitive thingy to handle. The experience and reliability are important factors.

    1) kind of a repeat of aspects of #3. And while one-click deployments are nice, they don't really work in enterprise environments. So I'm ok with the current mechnism or using any of the powershell scripts already in place to handle my deployments. There's also folks that are automating TFS deployments to the cloud using these approaches.

    >>I strongly feel that MS can do better on this front. After all, they own the platform and tools and can provide a stable, productive way of deploying apps. Visual Studio should be the best tool and front end for Azure.
blog comments powered by Disqus

Previous post:

Next post: