Introduction to cloud computing using Microsoft Azure

Cloud computing is the new buzz word

We’ve noticed a trend in the website requirements we’re getting these days. “We would like our website to be hosted in the cloud”. Cloud storage is not necessary for every project. In fact, unless you expect to get thousands of visitors per day, or are transferring large chunks of data on your website (e.g. YouTube style) or it’s critical for your website to have 100% up-time then there is probably no need for your website to be hosted on the cloud. The costs are more expensive than regular hosting, so cloud storage may be overkill for most projects.

Microsoft Azure

We are working on a project that will be hosted on Azure, which is Microsoft’s version of the cloud. Amazon and Google (to name a few) also offer cloud services.

We initially decided to host this project on a virtual private server (VPS). Midway through the project, we made a decision to host it on Azure instead. Why, you may ask. Well, for one, we are on a Microsoft startup programme called BizSpark. BizSpark gives us access to Azure at very reasonable prices. (On a side note, if you are a startup, I’d highly recommend applying for the BizSpark programme. Online registration is very quick and it gives you free access to Microsoft products for a certain period of time).

Another reason we decided to use Azure is due to its scaling properties. As with most startups, we plan to start small but be ready to scale quickly when necessary. If we went with regular hosting, that would mean starting with a shared hosting package, or a VPS, and then switching to a dedicated server when the time comes. However, with Azure, you can specify how many instances you want your application on; once the time comes, you can quickly increase the number of instances by just making a change to your Azure dashboard settings.

Developing for Azure

Our project, which is an ASP.Net MVC3-based was under development when we made the decision to host it on Azure. We initially expected to have to re-develop portions of the app to make it work with Azure. Luckily, there is little work involved here. Two resources that I highly recommend to any developers looking to get into Azure are:

Database Considerations

One thing that differs significantly is database design. Azure allows you to use regular relational database design via its SQL Azure offering. It also offers the concept of Azure Table Storage, which is a type of NoSQL database design. Here’s a good discussion on StackOverFlow.com about the difference between the two, and which may be more suitable for your application.

As we had already begun the database design using a relational database, we decided to stick with this and so are using SQL Azure. However, a colleague of mine decided to completely re-write his web app to use Table Storage, and he has noticed significant improvements in speed. Table Storage is also recommended for scaling your application, as you can spread it over multiple instances, unlike SQL Azure.

Deploying to Azure

It’s very easy to deploy your app to Azure. You can create a package and upload it via the Azure dashboard. You have a staging environment and a production environment on Azure, so you can deploy your app to staging, then test it and flick a switch to make that your new production environment. It’s extremely user-friendly.

I’d be interested to hear your comments on using Azure. If you’ve used alternatives, such as AppHarbor for Amazon, I’d like to get your opinions too.

Once our Azure project is live, I’ll post a link to it.

2 Responses to "Introduction to cloud computing using Microsoft Azure"

Nayan

- September 4, 2011 at 7:56 pm

Interesting article. I have experienced some problems deploying to Azure. For instance, I noticed issues on the build deployment package which required the bin folder having to be deleted. These negatives don’t outweigh the plus of not having to deal with the other server stuff that the cloud now takes care of for me.

dajo.ie

- September 5, 2011 at 4:35 pm

Hi Nayan, yes, you’ve made a good point. In fact, I spent around 2 hours trying to re-deploy a local site to Azure last night. The reason it took so long? I forgot to set the property CopyLocal to “true” on some dlls I had to add. What I didn’t like about it was that there was no indication from Azure that this was the case. The deployment status just kept cycling between “Initializing, Busy, Aborted, Stopping.” I found a good article here that helped me identify the issue: http://blog.toddysm.com/2010/01/windows-azure-deployment-stuck-in-initializing-busy-stopping-why.html