Windows Azure is Microsoft's platform for building cloud-based applications. Since its first appearance, Windows Azure has offered a wide range of software services beyond pure computation, including storage, service bus, and access control. The APIs for these services enable companies to create ad hoc applications and host them in some Microsoft data centers using a pricing model that best suits their business needs. According to the classic taxonomy of cloud computing, Windows Azure falls in the category of Platform-as-a-Service (PaaS) cloud solutions.
White PapersMore >>
From a business perspective, PaaS is just one side of the matter. A PaaS service binds you to some operating system and runtime environment. You can exert a limited degree of control over the runtime environment.
But what happens if you want to maintain total control over the software runtime environment (as you would in a traditional on-premise scenario) and just rent the infrastructure (such as equipment and virtual machine)? For a long time, such an Infrastructure-as-a-Service (IaaS) scenario hasn't been an option in Windows Azure, and companies couldn't buy cloud space from Microsoft just to host a LAMP application. The only way to deploy a solution on Windows Azure was to build a new application using the .NET Framework and cloud-specific services, storage solutions, and frameworks.
Recently, however, Microsoft extended Windows Azure by adding a few loudly requested services on top of the platform virtual machines and websites. In doing so, Microsoft made its platform a lot more flexible and gave cloud architects the ability to build solutions that combine infrastructure and platform services. As a result, you can now bring an existing LAMP or Node.js web solution to the Windows Azure cloud and even build hybrid solutions that are partly on-premise and partly cloud-based and that use a variety of server technologies.
Windows Azure Virtual Machines
Windows Azure Virtual Machines (WAVM) allow you to create a virtual machine on a cloud host and move an existing virtual hard disk (VHD) there. You can pick up an existing disk image from a Microsoft provided gallery or deliver your own customized image. You have full admin rights and can remotely manage your virtual machines at will. Virtual machines can be equipped with a variety of operating systems, including Windows Server and a few Linux builds, based on versions of OpenSUSE, Ubuntu and a few others.
Without beating around the bush, the real breakthrough here is the opportunity to deploy a Linux-based image on the Microsoft cloud. I have personally helped a few customers assess how to integrate cloud storage and services in their applications and, in a few cases, we had to quickly and ruthlessly rule out Windows Azure because the client's application was half done (or just finished) and there was no time and/or budget to adjust or rewrite it for the PaaS requirements of Windows Azure. In my opinion, opening the Windows Azure cloud to Linux and to user-defined virtual machines represents a smart move that adds more credibility to the platform as a whole. With WAVM, you can now consider Windows Azure a full-fledged cloud platform and evaluate it with a focus on the benefits it can bring to your business rather than first checking whether it can even serve your own business needs.
Windows Azure Websites
In some circumstances, you may not need to create and deploy your own virtual machine in the cloud. Sometimes, all you need is the ability to quickly create a website based on the Microsoft web server stack and quickly deploy it to the cloud, where it just works and is easy to manage and scale. Windows Azure Web Sites (WAWS) makes it easy to create such websites from Visual Studio 2012, then deploy them automatically to the Windows Azure cloud in a variety of ways. In particular, you can deploy from Git, TFS, or even via FTP. Likewise, you can access log files for your website via FTP or through a provided command-line tool.
WAWS doesn't end there, though. More and more Web applications result from a mix of server-side frameworks such as Node.js, PHP or perhaps WordPress, Umbraco, or DotNetNuke. You need to set up all these frameworks when you deploy. If you are going to deploy to the cloud, either you create a virtual HDD (or VHD) or you use the WAWS services. WAWS, in fact, comes with ready-made templates in an extensible gallery that work for popular CMS tools, a variety of server frameworks, and databases including MySQL.
However you build your website, regardless of the technologies and server applications you employ, you can likely deploy it to the Windows Azure cloud in a greatly simplified way and in the context of guided procedures.
There are many ways to approach the cloud. One is building from the ground up (or significantly restructuring) an application to live and operate in the cloud. In this regard, Windows Azure works well because it tightly integrates with the rest of the Microsoft stack. In many other cases, though, you just need a high-scale environment, elastic enough to fit your frequently changing needs. This IaaS approach to the cloud has been the first form of cloud computing to appear. And it wasn't addressed by Microsoft for years. Instead, customers with a classic ASP.NET or Linux-based application they wanted to "cloud-ify" had to look to other vendors such as Amazon.
The Windows Azure Virtual Machines addition is more of a necessary step to stay in the market than a way to offer more development power to customers. The bottom line is that Microsoft is catching up and recovering from a vision of the cloud that has been too partial for too long.
In other areas, Microsoft is moving bigger pieces of flagship products to the cloud such as TFS and Office. And the SkyDrive file system is boldly gaining ground and development support. It seems that a clear company-wide strategy is taking shape at Microsoft: Offering everything through the Windows Azure cloud except those few things that just need an "old-fashioned" desktop application running locally. This is what's really new with Windows Azure.
Dino Esposito specializes in Microsoft technologies and contributes frequently to Dr. Dobb's.