Windows

Microsoft's Azure cloud computing platform: An overview for developers

Justin James explains what Microsoft's Azure is and the basic concepts behind developing for the cloud computing platform and why it's an interesting choice for .NET developers.

When Microsoft first announced its Azure cloud computing platform, I wasn't sure what to make of it. Was Microsoft just trying to jump on a buzzword bandwagon, or is the cloud computing paradigm really enterprise ready?

Once Azure was released in a ready-to-use form, I read some information about it, but very little of it was aimed at someone like me who did not know the fundamentals. And unfortunately, Microsoft has formed a really bad habit of putting useful information into online videos... as if anyone who works for a living has time to sit through three or four hour-long videos without even being sure if the video really contains the information that they need. All the same, I was able to wade through enough of the available information to find out what Windows Azure is and the basic concepts behind developing for it.

Azure is a platform

The first thing to understand is that Azure is not a product name per se, but rather it encompasses a variety of services that form a platform. The services that have been announced so far include the following:

  • Windows Azure is a service that allows you to deploy code on Microsoft's servers. This code has access to local storage resources (blobs, queues, and tables).
  • SQL Azure is a cloud-located database offering. While it uses T-SQL like SQL Server, it is not a full SQL Server instance (for example, not all of the SQL Server built-in stored procedures are available). It can integrate with SQL Server, though.
  • Azure AppFabric is a service bus that allows applications within your LAN to communicate with Azure clouds; it handles things like authentication, security, etc.
  • "Dallas" is a marketplace for applications and services deployed on Windows Azure.

Windows Azure and SQL Azure are billed on a metered, usage basis, and Azure AppFabric is billed per connection. All three have additional charges for data transfer (full billing information here). Also, there is an SLA, but to be blunt, the SLA is unacceptable for mission-critical applications (99.9% uptime guarantee). Yes, "five nines" is expensive, but the promised "three nines" comes out to about 40 minutes of downtime a month. Can your business afford for the application to be down for that period of time? If not, you may very well want to pass on the Azure platform.

Windows Azure

Writing code for Windows Azure uses the .NET environment; however, the code runs in Full Trust, so you can work with unmanaged code if needed. Instead of writing an application, you put your code in a Web Role or a Worker Role.

  • A Web Role provides a single HTTP and HTTPS endpoint to your code, and it is very similar to an ASP.NET application. Like working in ASP.NET, you can hook into global event handlers.
  • A Worker Role is a piece of code that can run in the background, and can expose a wide variety of networking endpoints as needed, much like a WCF Service can. Your code communicates with the Windows Azure system using either .NET libraries or a REST interface. This allows you to run non-.NET code on Windows Azure, as well as access resources on Windows Azure from non-.NET applications. When you deploy your code, you need to package it up and upload it to Windows Azure. You can also deploy it internally for testing purposes.
SQL Azure

With SQL Azure, you can put your database in the cloud. This will require careful architectural considerations on your part; an application that is very "chatty" with the database will suffer greatly with the latency imposed (unless the application is also running on Azure). You can communicate with SQL Azure through an ODBC connection or ADO.NET, and there is a connector for PHP as well. You can work with your existing tools to connect to SQL Azure, and the expected capabilities like stored procedures, views, transactions, and so on are available.

Azure AppFabric

Azure AppFabric acts as a gateway and a router between items on the Azure platform and items within your LAN, while also dealing with things like Active Directory federation, authentication, certificates, and so on. Azure AppFabric can expose HTTP and REST endpoints, so non-.NET applications can work with it as needed. It can also allow anonymous users to access the applications it protects. It supports a variety of networking architectures including unicast and multicast one-way communications, and full-duplex bi-directional connections. AppFabric feels more like a wrapper that requires a bit of configuration than a service where you will need to significantly rewrite code to work with.

"Dallas"

"Dallas" is currently a CTP and is subject to change. It is a marketplace to buy and sell access to services running on the Windows Azure platform. You can provide .NET proxy classes to the customers, so they don't have to deal with XML. In some regards, that feels like a step backwards. I think the idea is solid, but in all honestly, similar service marketplaces have not done well in the past (remember UDDI?).

Summary

The Azure platform looks like an interesting choice if you're a .NET developer, although I don't know how the pricing stacks up compared to other services. I think that Azure would definitely be a good choice for things like batch processing (say, running reports, unit tests, integration tests, etc.) where it can be put under a heavy load and scaled down, and the SLA concerns are not a major issue.

Before considering Azure, you'll definitely need to ensure that your application's architecture works well with the cloud model and that means things like security, latency, network "chattiness," and more. And anything mission critical that must function even if external connectivity is down is a no-go. It looks like moving to SQL Azure does not require a tricky migration or code rewrite, while putting existing code onto Azure will require some amount of effort to do so.

For more on this topic, read the TechRepublic column 10 reasons to use Azure for your cloud apps.

J.Ja

Disclosure of Justin's industry affiliations: Justin James has a contract with Spiceworks to write product buying guides; he has a contract with OpenAmplify, which is owned by Hapax, to write a series of blogs, tutorials, and articles; and he has a contract with OutSystems to write articles, sample code, etc.

---------------------------------------------------------------------------------------

Get weekly development tips in your inbox Keep your developer skills sharp by signing up for TechRepublic's free Web Developer newsletter, delivered each Tuesday. Automatically subscribe today!

About

Justin James is the Lead Architect for Conigent.

18 comments
Jaqui
Jaqui

followed the link to the microsoft website Justin. :D " XML Parsing Error: mismatched tag. Expected: < / META >. Location: http://www.microsoft.com/windowsazure/ Line Number 133, Column 11:</style></head> ----------^ " rotflmao trust Microsoft to have errors in website code. :D must have been done with dreamweaver and to use windowsazure ;) edit to display tag error properly

TryingToBeGood
TryingToBeGood

At the ESRI Developer Summit this past March, David Chappell provided an excellent overview of the cloud platform and some of the major players in this space (Microsoft, Google, Amazon, etc). The slides for his talk are available via this link: http://tinyurl.com/27u9wwk Hope you find this useful.

sysop-dr
sysop-dr

Thanks Justin, everything I needed to know.

oldbaritone
oldbaritone

"Windows Azure and SQL Azure are billed on a metered, usage basis, and Azure AppFabric is billed per connection. All three have additional charges for data transfer..." Anybody who has been hit with overage charges on a data plan knows those "additional charges for data transfer" can really add up!

arvind soni
arvind soni

realy amazing , it will definitely change our way of working.

philmeeks
philmeeks

Still a few sessions left. Get a free Azure account and a two-hour training session, and contribute to the good of mankind. I did one session early on and signed up for another. A great way to learn how to use Azure.

CloudNinja
CloudNinja

Thank you for the overview as there is alot of thrashing in this space and it is hard to determine which Cloud to goto as everyone is doing something a little different ? its hard to compare Cloud 2 Cloud. A similar diagnosis is by David Chappell: "If I ruled the world?, says David Chappell, ?I would make the phrase ?private cloud? illegal?. In conversation with David Gristwood, David Chappell, during his recent world tour, discusses Windows Azure, its importance and role in the partner ecosystem, and other cloud players, such as Google, Amazon, Salesforce.com, VMware and more. You can see his Cloud2Cloud comparison in brief here: http://www.youtube.com/watch?v=e7NHQdh8_uo A more recent talk with David Chappell on this topic where he covers others issues such as: - IaaS vs PaaS - Private vs Public Cloud - Applications that are not a great fit for the Cloud and those which are. - The threat of Public Cloud to IT departments see: http://channel9.msdn.com/posts/David+Gristwood/Conversations-with-David-Chappell-about-Windows-Azure-and-Cloud-Computing/ thoughts? hope that helps, -cn

Justin James
Justin James

I have some ideas of where I might use Azure on a project, now that I have learned more about it. Have you looked into Azure at all? What do you think about it? J.Ja

Justin James
Justin James

Thanks for giving me a smile on an otherwise bleh ending to a long day. :) J.Ja

irozenberg
irozenberg

I would highly recommend those books: * Cloud Computing with the Windows? Azure? Platform by Roger Jennings, Wiley Publishing - 2009. and * Windows Azure Platform by TEJASWI REDKAR, Apress - 2009.

Justin James
Justin James

One thing that really stood out to me about the Azure pricing (and really, it is true for any "on demand" or "cloud" offering that I have seen) is that if you do not have a way of collecting money from your app on a metered basis, DON'T USE THESE SERVICES. You will go broke. It's not that they are too expensive or way overpriced or whatever. It's that if you cannot translate every GB of data transferred or MB of data stored or DB transaction used or compute hour burnt into revenue, then you are taking a loss. You really can't afford to be doing "branding" or "awareness" or whatever at these prices unless you have some deep pockets. J.Ja

mcswan454
mcswan454

Yes. Thanks! I've also registered. This should be good. (And maybe MS will stop pooh-poohing me for not signing up for all these things so often - grin.) M.

anthonyegarza
anthonyegarza

Thanks! I just registered. I think getting some real hands-on beyond "hello world" will answer a lot of questions.

Tony Hopkinson
Tony Hopkinson

A refreshingly honest one as well. The platform is fairly impressive, though I can't see much it can do for the products I currently work on. The concerns I have are the products are traditional CRUD to SQL Server and you do not want to pay for that in Azure, it's well expensive. The software is not geared for the platform and moving to an OODBMS you could store in Azure's blob space is a huge amount of work. More of a solution looking for a problem for us at the moment, and suspect for many others. If you didn't refactor towards OODBMS, SaaS and on line and still have a basic legacy CRUD design, moving any non trivial application is effectively a total rewrite. Any other option will run like a dog and cost an absolute fortune, if it will work at all. The thing that MS did and the industry must emphasise is Azure is not only a different platform, it's a very different one to that an inhouse business applicaton was designed for.

mattohare
mattohare

The javascript isn't working today in the browser, so I'll have to put it in the subject. All the features you described look good, but I'm not sure how I'd use them. Maybe at some point I'll have collaberators where this can come in handy. Another thing you mentioned, the videos on Microsoft. I watched one that was meant to teach Infopath. A quarter of the hour video was the guy on technical support waiting for something to get fixed. Could they not edit that bit out? LOL

CloudNinja
CloudNinja

James - see which scenarios NOT to Use Windows Azure @ 5:07; then it discusses ideas & scenarios when to use Windows Azure see: http://channel9.msdn.com/posts/David+Gristwood/Conversations-with-David-Chappell-about-Windows-Azure-and-Cloud-Computing/ not bad for a 10min video :) thoughts? hope that helps, -cn

Jaqui
Jaqui

I'm not a big fan of the cloud computing concept for most purposes. nor am I huge fan of .net or MS. or even code generators. so the poke in fun was easy. :D the sad truth, 99% of the time when you get something like error 500, internal server error on a website, a wee bit of research shows it's MS Server and asp.net pages. it really causes me to wonder why ANY organization would want to have their website crippled by using these technologies. and yeah, throwing errors just following links on your site is crippled.

Justin James
Justin James

... but nothing particularly Azure specific in there (in terms of the use cases), other than saying that you aren't going to pick up existing apps and move them to Azure. Nothing really new in there, unfortunately. It's why I avoid video usually... I could have scanned a document with the same content in 60 seconds, and saved a lot of time. :( J.Ja

Editor's Picks