Understanding Microsoft Azure: The Fight for the Platform of the Future
During the Microsoft’s PDC 2008 conference, a new technology platform was unveiled by Microsoft dubbed Microsoft Azure.
Unsurprisingly, there was a lot of confusion surrounding Microsoft Azure. The sheer variety of features, interfaces and details that are part of Microsoft’s Azure made things hard to grok. But in the end, I think the core concept is actually simple and it actually is a fundamental building block for software applications of the future. Here’s my take.
So what is Microsoft Azure?
Azure is a software development kit (SDK) as well as the runtime environment for building and running highly scalable applications for the cloud.
How is it different from normal frameworks?
From a developers perspective, Azure is no different from the .NET runtime or from the C++ runtime or the Java runtime. Instead of the application being executed on your local machine, the application actually runs on the “Cloud” (in this case Microsoft’s Datacenters).
Why do we need Azure?
If you read my previous post(The future of software applications), clearly the trend is towards migration of software apps from the desktop to the cloud, running via the web browser. The desktop is becoming more and more irrelevant today and the OS that powers the desktop matters even less. The next big thing is already mostly upon us and it is web-based applications. The good news with web-based applications is that you don’t need to worry about a lot of things that you needed to worry about when developing desktop applications. The bad news is that you now need to worry about a whole host of other things, security, scalability, infrastructure management, bandwidth costs etc. And building these kinds of applications correctly is difficult, not to say sometimes almost impossible.
That is where Microsoft’s Azure comes in. By building applications for the Azure platform, which abstracts these problems away from you, it promises to make developing scalable web-applications as easy as developing desktop applications.
How is it different from Amazon’s EC2 or Google’s App Engine?
As a general concept, it is not wholly different, but the whole integration of various services + the advantage and productivity of using Visual Studio to build apps appears to make the Azure development platform attractive to legions of developers who work with .NET. Amazon’s EC2 allows any kind of technology to be used within the virtual machines that are deployed, while Google’s AppEngine currently requires applications to be written in Python.
What does this mean for the future?
In one way, Microsoft’s Azure platform actually tells you that Microsoft realizes that a lot of applications are going to migrate over to the web. This means that their traditional dominance of the desktop is going to wane as the desktop OS matters less. However, they have also correctly realized that by providing a development platform for the web, they can be dominant in the emerging software platform of tomorrow. In my opinion this is a brilliant move. A lot of companies today are trying to get market and mindshare by writing the web applications (Google Apps, Photoshop Express and others etc). Meanwhile Microsoft skipped that and wrote the platform *for* writing web applications. It remains to be seen how easy the Azure development environment is to use, but if it is even only 10x as hard as writing a .NET applications there will be a lot of applications running on Microsoft Azure.
However, I think that the other big companies are not going to keep still. Microsoft’s Azure is the opening gambit for the fight for the platform of the future. It is now clear to all the big players what the fight is about. Even if Azure is not successful, I think that this is an important turning point in the history of software applications.