This article originally appeared in the Winter 2011 issue of HardCopy magazine.
Cloud computing is entering a new phase, moving beyond simple ‘servers in the sky’ to something rather more sophisticated and even more useful. Microsoft has thrown huge resources into this new arena and come up with Windows Azure.
Of course cloud computing itself is not new. It has long been common for small and even medium-sized businesses to host their Web sites externally, paying a monthly fee to an Internet Service Provider (ISP) for access to a Web server and perhaps a database on which they can run their Web applications. This could be an ASP.NET application talking to SQL Server, or something written in PHP or Perl that interacts with MySQL. The ISP looks after the operating system and the hardware, keeping it updated and properly backed up, leaving the customer to look after the application.
What is new, and quite genuinely changing the landscape, is the application of virtual machine technology to such services. Microsoft Hyper-V, for example, allows a customer’s installation to run in a virtual machine that can be scaled in terms of memory and virtual processor cores according to demand, or seamlessly moved between servers or even data centres for the purposes of load-balancing and maintenance. This is cloud computing in a more literal sense in that the physical location of the server is less well defined and can change moment-to-moment. This is what Microsoft is using to deliver Windows Azure.
The first thing that strikes you about Windows Azure is its sheer size – and the magnitude of the investment it represents for Microsoft. The service is currently delivered from six data centres: two in North America (Chicago and San Antonio), two in Asia (Hong Kong and Singapore) and two in Europe (Amsterdam and Dublin). The Chicago centre alone cost $500 million and occupies 700,000 square feet. The servers themselves are housed in shipping containers, each containing around 2,000 Dell machines. The Chicago centre currently houses 56 such containers, and is scheduled for a second phase which will add another 56, amounting to some 224,000 servers in all. The Dublin centre represents a similar investment, although it is smaller at 300,000 square feet. It is expected to contain 100,000 servers by the end of 2011.
In addition to this are the 24 nodes used by the Content Delivery Network (CDN), with eight in the US, nine in Europe (including one in London), and seven serving Asia, Australia and South America. CDN is an additional service, incurring a small charge per gigabyte transferred, that allows you to enhance performance by caching suitable application components nearer to your users.
That said, Windows Azure is not specifically aimed at large-scale applications serving millions of users across the globe; it is also cost-effective at a small scale. A solution involving one virtual machine (single virtual core, 768MB memory and 20GB storage) working with a 1GB relational database hosted on SQL Azure would cost around £30 a month under a ‘Pay-As-You-Go’ scheme, with the added bonus that you can scale up as the need arises, and pay for the additional capacity on an hourly basis.
Such a business model can also be attractive to larger organisations. Dan Scarfe of Dot Net Solutions, which has helped a lot of companies move to Windows Azure, cites the online fashion retailer ASOS.com which was attracted to Azure because it allowed them to scale up their infrastructure to handle the high volume of transactions in the run-up to Christmas, without having to pay for idle resources through the summer months.
A major benefit of any cloud-based system is its negation of the need for capital expenditure on in-house systems, and the associated running cost. Azure specialist two10 degrees has been working with Temenos, which provides software for use by customer-facing bank tellers, to move its solution to Azure. As Jeremy Barnes explains, this is a codebase that goes back to the 1980s with some components written in BASIC, others in C and the more recent in Java. It is served up by Apache Tomcat, so it’s about as far from a Microsoft .NET application as you can get. By moving the application to Azure, Temenos has been able to sell into smaller organisations across the world that would not normally be able to afford the in-house installation required: “Customers can be anywhere in the world, and the software can be deployed within hours rather than months.” The system has now been rolled out to some 12 banks in Mexico.
Degrees of abstraction
Windows Azure is sometimes described as Platform-as-a-Service (PaaS) to distinguish it from the Infrastructure-as-a-Service (IaaS) offered by most providers. The distinction is not obvious but comes down to the degree of involvement that the user needs to have with the underlying platform.
Imagine that you are looking to deploy a high-volume Web application to eight virtual machines, four in a UK-based data centre and four overseas. If you are using a conventional IaaS provider you would need to log on to each virtual machine in turn, installing and configuring your application on each one. Now imagine you need to patch the application once or twice a month. You would need to schedule downtime so that you can log in and update each installation. You can be confident that your providers will keep the underlying platform up to date, and the virtual machines backed up, but the actual mechanics of deploying and patching your application are left to you.
Windows Azure works at a higher level of abstraction. Under Azure, you only need to upload one instance of the update. Behind the scenes, Azure will take down each virtual machine in turn, install the update, start the server up again and check that everything is OK before moving on to the next instance. Furthermore, Azure has considerably more understanding of the application that you are running. In the case of a Web application it knows that it is meant to respond to requests, and periodically tests that each installation is working properly. If it detects a problem Azure will automatically provision a new installation for you, take down the problematic installation and seamlessly insert the new one into the mix.
And if you decide to add more virtual machines, in order to handle increased traffic, Azure will automatically provision the new installations and ensure they are properly load-balanced within the data centre. As Dan Scarfe puts it, “It’s all completely seamless. You don’t have to worry about servers any more: you just think about services and the number of users who are going to be accessing them. You don’t need IT operations staff anymore – you don’t even need people who know what IIS is.”
Under the cover
The Windows Azure Platform comprises three main components. The first is the underlying operating system which is based on Windows Server 2008 R2 and a customised version of Hyper-V. Your application runs in an abstraction called Windows Azure Compute, and you rent Compute Instances by the hour. A Compute Instance comes in five sizes ranging from Extra Small (described earlier) to Extra Large which gets you a machine with eight virtual cores, 14GB of memory and 2,040GB of storage. Your application is installed as one or more components that each run either in a Web Role, for front-end Web applications that require IIS7, or in a Worker Role for background processing or non-Web applications.
Accompanying Compute is Windows Azure Storage which gives you persistent storage in the form of BLOBs (Binary Large Objects), Tables or Queues. Storage elements are replicated between two data centres on the same continent, and can take advantage of the CDN for faster delivery. Storage can also be accessed through REST APIs, or directly from any application that can send an HTTP or HTTPS request.
Barnes has been working with a company that develops software for manufacturing and design processing. This is a thick client that is capable of some quite intensive graphics so, as Barnes explains, “It’s not about wrapping it all up and loading it into a virtual machine.” Instead they are saving to Windows Azure Storage which takes away any backup concerns and opens up possibilities for collaboration. Barnes adds, “Storage is a trivial fee – it’s pennies per month per gigabyte.”
The second component is SQL Azure. Unlike most such offerings, SQL Azure is effectively one enormous SQL Server 2008 R2 cluster distributed across the world; and you pay by size of database, rather than edition. This makes it very cost efficient: most Web sites probably operate with a database of less than 1GB, which costs just £6 a month, but because it is running on a cluster it is highly available, fault tolerant and automatically backed up. Currently available as Community Technology Previews are SQL Azure Reporting and SQL Azure Data Sync (for synchronising an in-house installation with SQL Azure).
The final component is Windows Azure AppFabric and, as Scarfe explains, “There is no equivalent to AppFabric from any of the other vendors.” AppFabric itself breaks down into three main services. First is AppFabric Service Bus which is effectively a distributed messaging system, allowing you to connect Azure applications to in-house applications and so create hybrid solutions, or to any kind of external device.
AppFabric Service Bus gets around the need to configure firewalls and routers to accept incoming connections by using a technique known as NAT traversal. Effectively, both ends of the connection make calls out to AppFabric Service Bus which acts as a broker to facilitate communication. Services are discovered using standard Internet protocols, and support SOAP, Web Services and REST. Applications can publish multiple endpoints that can each serve multiple subscribers, and it all comes together to make for an extremely flexible solution.
Hitachi Consulting made good use of the Service Bus for the departure control application it built for easyJet, which runs from Windows Azure. This application needs to service the handheld devices used by easyJet staff, but airports are naturally reluctant to open ports on their firewalls. AppFabric Service Bus allows the application to communicate with these devices through the firewall without compromising security.
Then there is AppFabric Access Control which handles log-in credentials. Access Control integrates with a wide range of identity services from Active Directory Federation Services to Windows Live, Google, Yahoo! and Facebook. With Access Control you can let people log in to your application from Facebook with just one line of code, and from Active Directory with another line of code.
Dot Net Solutions worked with The Body Shop to build a global customer loyalty Web site using Windows Azure. The Body Shop was particularly keen on Access Control as it would give them access to the Facebook accounts of their customers.
The other important component is AppFabric Caching which facilitates the caching of state information across a multi-server solution. This is a distributed in-memory cache that works with both Windows Azure and SQL Azure, and transparently with .NET applications. AppFabric Caching is priced on a daily basis depending on the size of cache you use, starting at just over £27 a month for 128MB.
Working with Azure
As you would expect, Microsoft provides comprehensive support for those using its development tools. The Windows Azure SDK is a free download and includes Windows Azure Tools for Visual Studio which allows you to build and debug Azure applications offline; the free Visual Web Developer 2010, if you do not have Visual Studio; and SDKs for Windows Azure itself and for Windows Azure AppFabric. You can also download SDKs for working with Azure from Java, PHP and Ruby, and Microsoft has announced the Windows Azure Toolkit for iOS, Windows Azure Tools for Eclipse, Windows Azure Toolkit for Windows Phone 7 and Windows Azure Toolkit for Social Games.
Then there is AzureRunMe which was created by Barne’s colleague, Rob Blackwell. This is a free bootstrap program that you upload to Windows Azure Compute for the purpose of running programs written in the likes of Java, Ruby or Python. It could, for example, be used to run a Tomcat-hosted Web application, a JBOSS application or a legacy C or C++ application.
And Microsoft is adding features to Windows Azure. Up and running now is Windows Azure Marketplace where you can buy and sell both Azure-hosted applications and specialist datasets. This already includes over 500 applications covering a wide range of industries, and over 100 datasets ranging from average house prices by borough as supplied by the Greater London Authority, to historical daily observations from all WeatherBug tracking stations going back to 1993.
Coming soon is the Windows Azure Platform Appliance which gives you all you need to deploy Windows Azure in your own data centre. This is currently in Limited Production Release, but so far Dell, eBay, Fujitsu and Hewlett Packard have stated their intention to offer cloud services based on Azure.
However the immediate benefit for many companies, and particularly Independent Software Vendors (ISVs), is the ability to take an existing application and deploy it to Azure. This can be a relatively painless exercise and bring immediate benefits in terms of extending the reach of their software to clients who have not been prepared to make the capital investment required for more traditional deployments.
With this in mind, Barnes’ company has been running three-day Acceleration Labs, bringing together three or four non-competing ISVs with the aim of getting their application up and running in Azure by the time they finish. So far they have put 25 to 30 ISVs through this process, and Barnes is claiming a 100 per cent success rate. He admits, “That’s perhaps not something that on Day Four you’d want to put out to a customer, but you can go into the boardroom on Monday morning and state that, after three days, you now have your application running on the Windows Azure platform.”
Barnes adds, “We are seeing a bit of the old 1980s IBM effect here. If you’re betting your business on a cloud model then you want to put the responsibility for delivering it on someone you trust, and people can see the level of investment that’s going into Windows Azure.”
There are a number of companies that compete with Windows Azure, however the most significant (if only by size) are Amazon Web Services and Google App Engine.
Amazon Web Services is a collection of hosted services of which the most relevant in this context is Amazon Elastic Compute Cloud (EC2). Amazon EC2 is more of an IaaS provider, requiring you to become involved in some of the mechanics of load balancing and scaling. Initially based on Linux, EC2 now supports Windows Server 2008 R2 and SQL Server 2008 R2.
Google App Engine operates at quite a high level of abstraction – you don’t need to worry about the number of servers you are using, for example. It comes with runtimes for both Python and Java, and there is a Java implementation of PHP available. It is free for small scale applications that use up to 1GB of storage and up to 5 million page views a month. There are no facilities for relational databases, although there is a data store that responds to a syntax similar to SQL.
An interesting project that is currently in Beta is Cloud Foundry, operated and managed by VMware and billed as the “world’s first open PaaS offering” for Java-based applications.
Do bear in mind that all these services, including Windows Azure, are operated by American companies and so are subject to American law when it comes to data protection. You may need to make your users aware of this.
Find out more…
Dot Net Solutions is at www.dotnetsolutions.co.uk
two10 degrees is at www.two10degrees.com
AzureRunMe is at http://github.com/RobBlackwell/AzureRunMe
Find out what Grey Matter can offer at www.greymatter.com/mcm/azure-product-page
.Microsoft is currently offering 90 days free trial of a Small Windows Azure instance with 1GB SQL Azure database.