What Microsoft "Azure" really is...

      This morning I awoke to some very interesting news, straight from the get-go of PDC, Microsoft announced "Azure." I was very much interested in what exactly this service is, what it does, etc. so started reading some of the news stories about it, wow, people are confused. I partially blame Microsoft for clearly not giving people a good enough idea about what exactly Azure does and does not do. At the same time I also blame journalists who dont seem to really know whats going on (yet dont seem to mind). What is really going on? Lets talk about it.

      Today, at PDC, Microsoft announced Azure, its cloud computing platform. Just so it is clear, Azure is also the name of the operating system that the Azure platform will run on (previously dubbed Windows Cloud by Ballmer). I will address the "Why does the cloud need another OS" question in the next post, for now lets just stick to the platform. For those of you unfamiliar with the cloud, it effectively breaks down into three different levels of services which can be provided (see this Tim O'Rielly article for a full definition of the three layers). Azure falls into the platform layer, which is the middle of the three layer hierarchy. As the title suggests, this layer provides a “platform” which developers can utilize to write and run their application. For example, lets say that I want to create a web application which allows users to input their contacts and access them from anywhere. If I were to do this using a framework like Rails (with Ruby) or Django (with Python) then after designing the application itself, I would also have to set up a database which would be used by the application to store the data like user login information and the actual contacts themselves. Using the platform layer, instead of running a database myself, they (the service provider) run the database for me, and I just access it though the provided interface. I still determine what tables I want, how I want them to be laid out, its just that instead of actually writing the SELECT statement, I call a SELECT method. It is up to the provider to figure out how they should host the database and make it scale. Similarly, I as the user dont have to set up the platform and the underlying operating system, this is handled by the provider, note how this is different from the infrastructure services (a la Amazon EC2). Basically, I would write the contact application, making sure that the database interaction would go through their API, once I'm done (with this release) I then hand it over to the provider. It is up to them to figure out how to deploy it and scale it up and down as necessary. Again, very different from EC2 which requires the user to determine how to deploy it and manually scale up and down the number of machines (or use a third-party service like RightScale).
      Ok, now that you have a better understanding of what a platform and platform service is, it should be clear that Azure's main competitor is Google App Engine. Many people will lump Azure and Google App Engine together with EC2 but in fact they provide very different levels of service. Think about it in terms of a car. Amazon EC2 is really the infrastructure, its as if someone gave you the frame of a car, it is up to you as the car-builder to find the appropriate engine, tires, and seats depending on what you intend on doing with it (drive on the freeway vs entering in a monster truck rally). With platform services its as if you were given the frame of the car, with the engine, and tires already installed (and you cant remove them). The key parts of the car are there, its up to you to put in things like the seats and gas in. Notice however that you dont have a choice on what engine and tires were provided, so they may fit your needs, but they may not. You have less control of the infrastructure in the sense that it is provided for you and you cant change it, but you also save yourself the complexity of having to figure out what engine would fit in your car, how many cylinders etc.

Got it?

1 comments:

The Phantom said...

Nice article...

Its true that they (Microsoft) dont give enough real information about what it does and does not do...

So, you say that its like making a contact list but the database is 'already sort of' done for you? You just pick the 'SELECT' that you need? Will if its bits and pieces like this, is it (Azure) really that necessary?

Is it a 'golorified' ASP.NET platform / web host ?? What really new things do we get on Azure that can't be found on a really good ASP.NET???

(I'm really confused about the whole thing, so, someone please make it clearer for me?! :-)

Post a Comment