Azure versus Amazon - weighing up the options

David Cartwright Advice
23 Mar, 2011

When it comes to cloud platforms, two names dominate: Microsoft and Amazon. We assess their pros and cons.

The two biggest names in the market for general access cloud computing at present are Microsoft and Amazon. In this feature we'll look at what you get in each of these offerings.

Microsoft Azure

It will come as no surprise that the Azure offering is based heavily upon Windows and the Microsoft product set. This isn't necessarily a bad thing, of course – it is, after all, Microsoft's core competence and focus breeds stability and tight integration.

Windows Azure

Windows Azure is the hosted server platform of the Azure family. There are two key components - "Compute” and “Storage”.


The Compute component is for application hosting, and the hosting service itself split into six localities around the world: North Central and South Central USA, North and West Europe, and East and South East Asia. You select the “role” of the server, which can be a “Web” (IIS7) system, a “Worker” back-end black-box processing system, or a less abstract “Virtual Machine”. There are five sizes of Compute instances, from “extra small” (1GHz CPU with 768MB RAM and 20GB native storage) to “extra large” (8 x 1.6GHz CPU with 14GB RAM and 2TB native storage); unsurprisingly costs increase with instance size.


The purpose of this component is self-explanatory. Storage is available in four forms: the BLOB, or “Binary Large OBject” service (for general data storage), “Table” service (for structured data), “Queue” service (a messaging service for Web and Worker Compute instances) and Windows Azure Drive (for mounting the store as a virtual disk). The cost calculation for storage is slightly complicated, but in its basic form it's based on an average over each month, calculated and metered by the hour.

In order to exploit the capabilities of the core technologies, there are three ancillary components: the CDN, Virtual Network, AppFabric. There's also the Marketplace, where you can publish your home-built components and download others' code, to avoid reinvention of the wheel.


The Content Delivery Network addresses the fact that the users of a Cloud application may well be geographically highly distributed – which means that those closer to the physical location of the application will experience better performance than those the other side of the planet. CDN addresses this by placing the entities people are accessing close to those users, hence reducing the lag of accessing them. There are 24 CDN nodes, spanning Australasia, North and South America, Asia and Europe.

Virtual Network

Cloud offerings are fine as stand-alone entities, but it's typical for a client organisation to need interaction and integration between the Cloud element and its own locally held applications and data. The Virtual Network component of Azure is the gateway to this connectivity – so, for instance, your in-house development servers can communicate seamlessly with your Azure-hosted back-end systems.


AppFabric is a sizeable beast that probably deserves an entire feature of its own. In short, though, it's a collection of middleware functionality providing features such as application messaging, access control, caching and application deployment/management.

SQL Azure

Few applications are complete without a database component, and this is the gap that SQL Azure fills. It's based on SQL Server, and as such you deal with it programmatically and management-wise in precisely the same way. Applications can use native .Net data connectors or generic ODBC, you can use either the custom management portal or good old SQL Server Management Studio for management, and the Visual Studio developer tools integrate natively with it just as they do with a locally-hosted SQL Server database. Think of it as a SQL Server installation that just happens to be managed and kept running by someone else, but which you access in the same way as an on-site one.

Control Centre

Signing up with Azure is very simple: complete a four-page wizard and within a few minutes you're up and running. All the components can be configured through a portal-based Web site, and although it's not trivial to use (it's a pretty extensive suite of tools) anyone with some technical nous will soon get to grips with it. Configuring the various services is largely wizard-based, so you can very quickly define a basic set of components to try out.

What does it cost?

The Azure platform is available in two financial models: pay-as-you-go and subscription-based. The “Standard” PAYG model for Windows Azure starts at five cents per hour for an “extra small” compute instance, with storage charged at 15 cents per gigabyte per month. SQL Azure starts at $9.99 per database per month for the Web edition and a 1GB database limit. There are additional charges for ancillary services, which we won't bore you with now as they're varied and are described in detail on Microsoft's Web site. For subscription services prices start at $59.95 for a six-month Windows Azure service and $74.95 for SQL Azure; note that if you use more than the defined limit for a given service, “overage” charges will be levied at the going rate.

There's a free trial of Azure available until the end of June 2011, which gives you a couple of the lower-end compute instances and a 1GB Web Edition database; note that you'll have to provide a valid credit payment number when you sign up, though, in case you go over the limits of the free offer and into chargeable territory.

Amazon EC2

Amazon's Elastic Compute Cloud is commonly known as “EC2”, and is part of the Amazon Web Services (“AWS”) product suite. Although you can implement your service on Windows-based virtual servers, there are numerous Linux offerings too including Red Hat, SuSE, Ubuntu and Debian, plus OpenSolaris if you so desire.

Signing up for EC2 is a little surreal. Once you've completed your details and entered your payment details (as with the Microsoft option it's a simple Web wizard, though in my case Amazon needed far less persuasion than Microsoft before comprehending that my Visa card's address is in the Channel Islands) you need to authenticate your registration. You achieve this by providing a phone number; a four-digit PIN is displayed on the browser screen and an automated voice calls your phone; you can either speak your PIN or enter it on the keypad.

Once you're set up, the Web GUI is nice and simple and setting up a new virtual machine is a very simple case of hitting “Launch Instance” and walking through the wizard – which among other things allows you to choose the geographical region of the world in which you want the virtual server to live. Although you can start with a basic system and customise it to meet your needs, most of us generally want to start with at least some element of pre-configuration. To this end there's a boatload of Amazon Machine Images (AMIs) that let you quickly get to the setup you need without having to install everything from the ground up. If, as I did, you decide to use a Linux-based VM you can then fire up your SSL client, connect to the VM and log in, though before you do so you'll need to generate and download an SSL key file to provide to the SSL client.

EC2 in its own right is roughly equivalent to Microsoft's Windows Azure platform, in that it's simply a computing platform. While you could install a database server or some other application on the server, you would generally wish to exploit the other components of the AWS suite.

S3 Service

The Simple Storage Service is Amazon's cloud storage offering, and the EC2 service works happily in conjunction with it. S3 volumes can be mounted from your EC2 virtual machines, which also have their own native storage that you select when setting up the machine. As with the EC2 service, your “buckets” of storage can be configured with a geographic location should you wish to do so.


RDS is the Relational Database Service, and as it sounds it provides a hosted virtual database service which can, as with S3, be used both from within an EC2 server and externally from an application or other client in your own premises. It's a little irritating that to use each service for the first time you have to sign up for it, but in reality it only takes a minute or two and it's a one-off activity.


To enable you to organise your virtualised services, you use the Virtual Private Cloud functionality to define how things are interconnected and what can talk to what. This includes the ability to define your own IP addresses, subnets and routing tables, as well as providing VPN functionality that lets you hook the virtual world securely into your own on-premises network for application integration and management.


Simple Notification Services is the Amazon approach to inter-process communication. It's a push-based system, as one would expect from a messaging system of this type, and can deliver messages in a variety of ways from the non-interactive (notably email) to the instant (e.g. HTTP).


Just as you would wish to add resilience to a self-hosted application using a load balancer, so you'd be mad not to do the same with your hosted application. Elastic Load Balancing provides the functionality that you would expect from any decent commercial load balancer, and of course it's a very simple-to-configure mechanism for distributing the load across your servers and preventing delivery of requests to servers that have for some reason stopped responding.


This is the final component we'll cover in any detail, and it's the tool you use to ensure that your content is delivered to the consuming client via the most convenient server – so content is cached on one or more servers “close” to the consumer in order to reduce the latency and response times of your hosted applications.

Pricing of the Amazon service

The cost model for EC2 is split between Windows and Linux/Unix, and it's no surprise that the latter tends to be cheaper than the former. So the entry level for an on-demand Linux system is 8.5 cents per hour, where as a Windows one is 12 cents. For RDS the basic on-demand price is 11 cents per hour, though as with Azure there are longer-term subscription offerings available too. Pricing of the ancillary components are many and varied, and are laid out in gory detail on Amazon's Web site. Amazon's free introductory service (the “Free Usage Tier”) gives you 750 hours of a “micro” size Linux/Unix instance, 750 hours of ELB, 10GB of Elastic Block Storage, and 15GB of incoming/outgoing data transfer; as with the Microsoft offering this should be more than enough to allow you to get to grips with the system and evaluate its suitability for your application without costing you the earth.


It should come as no surprise that there is a huge overlap in the nature of the services provided by Microsoft's Azure platform and Amazon's AWS. After all, any given application requires a number of fundamental underpinning services – servers, storage, a network and an IP address structure – and it's common to wish to back-end the application with a database and to front-end it with load balancing functionality. One of the key problems with moving in-house applications out to the Cloud is that they're no longer in-house and are thus potentially a long way, geographically and electronically, from the consuming client systems; hence the addition of caching and “close to client” presentation of services that allow latency to be kept as low as possible. Finally, because your organisation lives physically outside the Cloud, you need a mechanism that lets you manage and monitor your services from afar; thus the ability to create secure VPN tunnels between the Cloud-hosted components and the non-Cloud aspects of your world is absolutely essential.

One interesting factor that affects me all the time in my day job is the issue of the USA's Export Control laws. To a reasonable extent EC is used as a scare tactic by lawyers and it's often not an issue, but it can't be denied that there are plenty of companies out there that do have to care deeply about it because they do in fact store information that is subject to EC laws. As we've seen, though, both companies' cloud suites provide the ability to define where the data is to live, which provides the first step along the path to EC compliance (though of course you then have to be careful about how you configure the caching options, and what happens to the data once you've set up VPN connectivity into your company and have started accessing data from outside the cloud).

Management's also key to a virtualised solution, and both companies provide excellent GUI-based portals that provide a single point of management for their entire suites. It takes a little while to get your head around Amazon's plethora of abbreviations and acronyms, but I found that I got the hang of it within half an hour or so, at least from the components I was using the most. Integration between components is very well thought out in most cases, and the help functionality's also pretty usable and comprehensive; both have a decent monitoring/alerting service too, which is essential in a service that's hosted outside your control. A key aspect of your day-to-day management tasks will clearly be keeping an eye on the financial side of the system, particularly if you're using the pay-as-you-go financial model, but at least both companies are extremely transparent about the costs of the service, particularly noting the cost of "overages” in a subscription-based model.

Which would we go for? Well, each has its own benefits and neither leaps out and screams: “I'm rubbish”. My feeling is that if you're determined to go for a Windows-based approach, you ought to lean toward the Azure option since as well as it being likely that Microsoft's fairly able to make the most of a Windows service, the Amazon offering makes Windows feel like a little bit of a second-class citizen among a huge forest of Linux/Unix offerings. And of course if you're hankering after a Linux/Unix offering, then of course the Amazon product is the way to jump.



David Cartwright has worked in the IT industry for over 20 years in a number of fields, primarily networking and security, and has a particular interest in distributed, non-sequential computing. He is presently global head of networks and telecoms for a multi-national legal services company whose server and storage infrastructure is heavily virtualised and which is actively exploring the potential of Cloud computing.
David is a Chartered Engineer and a Fellow of the British Computer Society.

Sign up for our free newsletter