At Microsoft's Professional Developer's Conference (PDC) 2008 in Los Angeles from October 27-30, the company trotted out a wealth of new developments and technologies. Windows Azure hit the stage with a bang with a lengthy keynote from Ray Ozzie, lots of detail sessions, an SDK, a Web site and lots more, and it has generated lots of interest and curiosity since then.
Nowhere can you get a better sense of what Windows Azure is, and how it works, than from Manuvir Das' Channel 9 Program "Introducing Windows Azure." In his nearly 40 minute video, Das does an outstanding job of describing the architecture, underpinnings and means of using Windows Azure. It's as good as anything I've encountered in trying to make sense of what Windows Azure is and what it might mean for companies, organizations and developers.
The concept behind Windows Azure is disarmingly simple. Das describes it as a kind of "OS for the cloud" that does for a managed pool of servers somewhere in a datacenter what an operating system like Windows does for desktops everywhere. As you dig down into the details of what Azure is and how it works, you learn the following:
- Windows Azure rests on a simple collection of distributed software components, themselves based on Windows. Among those are a "fabric controller" that handles services registration, scheduling and management, and "agents" that run on individual servers in a pool whose job it is to schedule and run "user code" (cloud-based services) within virtual machines on physical servers.
- The code for a Windows Azure-based service should run in a robust, scalable way on individual servers (VMs, in reality). Developers define "service models" that describe how many load balancers, process managers, and agent-managed code instances need to be instantiated to make the service run.
- What Windows Azure can do on the cloud in production, it can also do on the desktop via simulation. Developers should use simulation to develop, test and debug their service models before they deploy them to the cloud.
- All of the APIs and the SDK for Windows Azure are open and can work with other non-Microsoft services or service components; there's no obvious ploy on Microsoft's part to use Windows Azure to tie customers to its datacenters and interfaces (other than the obvious desire to get more developers using Visual Studio and related tools and SDKs).
- Windows Azure's specific components are built using the general Azure infrastructure, just as your applications are. For example, the Azure storage services are just another Windows Azure-based service (albeit one that runs at elevated privilege within the Azure environment). The same thing goes for process scheduling, polling, management, failover, redundancy and availability elements within the Azure environment itself.
- Windows Azure supports built-in test and deployment mechanisms to ensure seamless, ongoing operation. Test and production service instances use the same underlying environment, including the same DNS and other core services. Only service models and descriptions distinguish one from the other. Likewise, Azure supports a live update model so that services can continue operating even as VMs involved in delivering the service are updated or patched in the background. Enough elements to provide uninterrupted state, management, and service access must be left running at any given moment to maintain continuity, even as individual elements get updated or replaced over time.
Windows Azure promises to be an extremely interesting environment for developers, service providers and companies trying to develop robust, highly available service environments. Check out the Windows Azure SDK to see what it's made of, dig into the platform to see what it can do, and check out the Azure Web site to find tools, information, descriptions, examples and more videos.
Ed Tittel is a full-time writer and trainer whose interests include XML and development topics, along with IT Certification and information security topics. E-mail Ed at email@example.com with comments, questions, or suggested topics or tools to review.
Dig deeper on Cloud development and testing