At last year’s Microsoft Professional Developers’ Conference, Windows Azure was the big news. Finally, Microsoft had put its cards on the table and announced their strategy for cloud computing!
But, since Ray Ozzie’s keynote in LA last autumn, it’s seemed pretty quiet on the Windows Azure front. That’s understandable – Azure is still in development and it will be some time before we see mainstream use of this computing platform – even so, I was interested to attend the inaugural meeting of UK Azure User Group (AzureNet – not to be confused with the hosting company by the same name) at Microsoft’s London offices, including a presentation from Microsoft’s James Conard about what Windows Azure really is.
James is a Senior Director of Developer and Platform Evangelism at “corp” (i.e. he works in Redmond, not Reading!) and he looks after the Microsoft.NET Framework, Visual Studio and the Azure Services Platform – all things that I know very little about but, based on his presentation, I think I’ve got a grip on how Windows Azure hangs together.
So what is Windows Azure? James Conard described it as:
“An execution environment in the cloud for your applications.”
Which begs the question of what is the cloud? Conard’s view is that this is being made out to be more complex than it really is – as normally happens with a platform shift. Analysts/reporters/experts [bloggers!] define new terms such as: cloud computing; platform as a service; software as a service; infrastructure as a service – and some of these terms are sticking as vendors snap their marketing onto the terms.
But today’s application challenges are not specifically related to technology or to a platform – they are issues like:
- How many users will an application need to support (after 1 month? 6 months? a year?)?
- What are the bandwidth, storage, server, rackspace requirements?
- How can we handle scalability (up and down)?
- How can we provide high availability?
- How can we quickly go live?
- How can we reduce operational costs?
- How can we move to a service delivery model?
- How can we provision servers for the short term (without buying extra infrastructure)?
Windows Azure is intended to provide three core services: compute, storage and management which are:
- Scalable – with a virtualised hosting environment.
- Flexible – providing storage with blobs, tables, and queues.
- Manageable – with a model-driven service lifecycle management.
- Usable – with a rich local and offline developer experience.
Looking first at the compute service, applications are built (based on role definitions, modelled using an XML service configuration file), deployed to the web and run via a load balancing mechanism. Building the application in Visual Studio 2008 (SP1) with the SDK for Windows Azure and Visual Studio Tools for Azure ensures familiarity for Windows developers and the SDK’s Development Fabric simulates a cloud application whilst running locally for debugging purposes. The publishing process packages the application as a service package including all assemblies and configuration files ready for upload to the Azure Services Platform via the Azure Services Developer Portal. This portal allows the developer to create a hosted service and access production and staging environments. Once initialised according to the applications configuration, the appropriate number of instances (virtual machines) is started and the application deployed. Staging environments use a DNS name in the form of guid.cloudapp.net but friendly names are provided for production environments.
Most applications need to store and manage data, and Azure provides access to tables and blobs, with a queuing mechanism for communications between roles (some of which may run asynchronously, others as batch jobs, with a worker process to handle the interaction).
Management is concerned with ensuring that there are sufficient instances of a running application, monitoring when to bring more computing resources (extra instances) online, and when to take down one or more instances.
In short, Azure provides the infrastructure to run an application in the cloud including the environments upon which to run code and the underlying servers, datacentre services and connectivity. There is no need to directly manage this as the application is abstracted from the infrastructure and Microsoft highlights that, whilst some vendors focusing on the infrastructure (physical and virtual machines up to the operating system layer), over time, Azure will expose more and more capabilities of the Windows Server operating system, Microsoft .NET framework, etc. and the available services will be expanded.
Of course not all applications are as simple as the ones that Microsoft uses to demonstrate Azure. Some applications need additional capabilities in the cloud such as:
- Relational database support.
- Connectivity between on-premise applications and cloud applications (some applications cannot move to the cloud and the data needs to remain local, or the functionality does – hence hybrid applications).
- Single sign on support.
- Federation with existing identity providers.
- Orchestration of several different services.
- Access to user profile and contact data.
Windows Azure is a baseline and there are also additional services within the Azure Services Platform, implemented as building blocks which may be consumed (as required, wholesale or piecemeal) from an application running on Azure, including:
- Live Services, for building user-centric applications that require end user interaction and access to contacts, calendars, folders, etc.
- .NET Services, providing key building blocks required by many cloud-based and cloud-aware applications including access control, a service bus and workflow.
- Microsoft SQL Services, extending Microsoft SQL Server into the cloud for – cloud-based instances of SQL capabilities.
In the future, these initial services will be supplemented with:
- Microsoft SharePoint Services, for workflow, list management and document management.
- Microsoft Dynamics CRM services.
SQL Data Services link applications to SQL Server using SQL’s tabular data stream (TDS) protocol. James Conard’s presentation only mentioned it in passing, but there is a session available online from the MIX09 conference with the detail on SQL Data Services.
(At this point, I’d like to plug Jamie Thomson – SSIS Junkie – and my former rival for the top blogger spot when I worked at Conchango… Jamie was at the AzureNet meeting too – if you want to know about how SQL and .NET services fit together, he’s your man!)
A few paragraphs back, I mentioned the service bus and this could probably do with a little more explanation. Referenced using a URI with a sb:// suffix, this provides a publisher/subscriber model based on service bus queues (queuing messages until a listener is available) and service bus routers (distributing messages according to the routing policy) with a REST-based interface for managing access control (via authorisation rules).
So, what next for Windows Azure? The latest Community Technology Preview (CTP) was issued in March 2009 and includes a number of changes and improvements including:
- Full-trust support for .NET applications, allowing native code to run as part of service package.
- FastCGI support on IIS7 (for running PHP and other extensions).
- A single SDK and tools installation.
Soon, Windows Azure will be available in a second United States datacentre (and developers will be able to select which to run in via the portal) and, as Windows Azure approaches commercial availability, there will be a datacentre in Europe too.
Finally, pricing and service level agreement information is expected during Summer 2009 with commercial availability in the Autumn.
As an infrastructure guy, I might be scared by the idea of all of this infrastructure moving into the cloud, but there are a few things to remember:
- The transition won’t happen overnight.
- Many organisations will still require an extensive local infrastructure (if only for client connectivity to the cloud).
- Someone has to build and run those cloud datacentres!
- Security will be key to the success (or failure) of this brave new world.
Regardless of my future job prospects, I’m looking forward to the day when someone asks me to integrate an on-premise infrastructure with Windows Azure.