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.
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:
- Azure in Action book: excellent book that covers the theory well
- Official Azure Developer site: great examples
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.