Sunday, October 24, 2010

Azure Pricing vs Amazon AWS Pricing Comparison

How does Azure stack up against its main rival, Amazon, in pricing?

Compute Instances

The standard compute instances sizes are very similar on both platforms – Small (1 core processor, 1.7GB RAM) , Large (4 core processors, 7GB RAM), Extra Large (8 core processors, 15GB RAM ). The only differences being that Azure offers slightly larger drive space on the Large and Extra Large instances, on the Large instance Azure provides 1TB of space vs 0.85TB on AWS , and on the Extra Large instance Azure offers 2TB vs 1.8TB on AWS. However this is probably a minor issue to most cloud platform users who will be more interested in the persistent storage offered (see below).
Azure includes a Medium instance which provides 2 core processors, 3.5GB RAM, 500GB hard disk and is a useful bridge between the Small and Large instances for growing applications.
In addition, Amazon offers a variety of larger instances. High Memory instances provide 17GB – 64GB of memory and High CPU Instances provide up to 20 ‘compute units’ (which equates to 20 cores of processing power).
Pricing for compute instances is identical on AWS and Azure.
Compute instance pricing on AWS and Azure:Small : $0.12 per hour
Medium : $0.24 per hour  (Azure only)
Large : $0.48 per hour
Extra Large :  $0.96 per hour
(NB : All AWS pricing is based on Windows instances, Linux based instances are typically 30% cheaper)
Amazon is currently running a pilot program to transfer Windows Server licenses to EC2. Under this program, pricing for the EC2 instances drops 30% to the Linux EC2 levels. See full details of the Windows Server Mobility program.
The basic pricing models for both AWS and Azure are very similar, however in addition to the standard pricing model Amazon offers Reserved Instances. A reserved instance involves payment of a one time up-front fee that ‘reserves’ an instance which is then available at a lower hourly cost. Instances can be reserved for one or three year terms and pricing varies according to instance size and length of the reservation.
For an assessment of the pricing impact I have amortized the upfront payment equally over the term of the reservation (assuming 12 months usage at 730 hours per month). For example, the one time fee to reserve a Small Instance is $227.5 and thereafter usage on the instance is charged at $0.05 , thus assuming full utilization of the instance the $227.5 payment is $0.026 over the year (227.5 / 12/ 730) and the total hourly cost of the instance is $0.076 (a saving of 37% over the normal charge of $0.12 per hour). If the instance was reserved for three years the charge would be $350 and the final cost would be $0.0.61 per hour.
Amazon AWS Reserved Instance Pricing (Assuming Full Utilization) :Small : $0.076 (1y term) , $0.061 (3yr term)
Large : $0.304 (1y term) , $0.253 (3yr term)
Extra Large :  $0.608(1y term) , $0.507 (3yr term)
All charges are per hour
Amazon also offers spot pricing, which is hourly updated pricing for instances that cannot be booked for any period longer than an hour which  is essentially live market pricing for instances. This is likely only to have very niche appeal for apps which can be run at any time – large batch processing tasks could conceivably use this pricing service.


Cloud apps need to use persistent storage for files (such as images, videos etc) which are then referenced in the app. Both Amazon’s S3 (Simple Storage S0lution) and Azure Storage price storage at $0.15 per GB, however S3 offers discounts for very large data amounts stored (for example, $0.140 per GB for 50TB – 400TB of storage).
Transactions on both Aaure and AWS are billed at $0.01 per 10,000 transactions, it should be noted there is a slight difference in this as S3 only charges for requests for stored items whereas Azure charges for inward storage transactions as well.
For the Azure CDN versus Amazon’s CloudFront, see our separate article on Azure CDN Pricing .

Data Transfers

Under traditional hosting this would be called bandwidth but the convention for cloud providers is to use the term Data Transfers.
F0r both Azure and AWS, Data Transfer is charged at $0.10 per GB of inbound traffic and $0.15GB per GB for outbound traffic. Azure pricing is constant for all volumes whereas AWS provides discounts for large volumes of outbound traffic – $0.11 per GB for > 40TB ,  $0.09 per GB for >100TB , $0.18 per GB for >150TB.
Prior to June 30, 2010 AWS offers free inbound data transfer and Azure offers free inbound off-peak data transfer.


Database offerings for Azure and AWS are structured very differently and for that reason are not directly comparable. Amazon’s AWS does not offer  per  database plans and fro SQL Server  you can only use a SQL Serve license to install a full instance of SQL Server on an EC2 instance , or you can use the free SQL Server Express. Azure, by contrast, only offers individual databases of the SQL Server based SQL Azure.
Amazon offers relational database (MySQL) instances which are comparable to EC2 instances with a full MySQL instance installed (and can therefore have numerous databases).
SQL Azure databases are priced at $0.014 per hour for a  database with 1GB of storage and $0.14 per hour for a 10GB database. A 50GB database for SQL Azure has been announced and will be available from June 2010.
By contrast, Amazon’s Small Relational Database Instance has 1.7GB RAM and a single core processing unit which is charged at $0.11 per hour. Storage is charged at $0.1 per GB per month and an instance can have between 5GB and 1TB of storage.
AWS database instances can scale all the way up to the Quadruple Extra Large DB Instance which has 64GB RAM ,  with 26 compute units and 1TB storage.
Both Amazon and Azure offer non-relational databases which are considered persistent storage and charged accordingly (see above).

Packaged Pricing

The obvious question any user will have is what will be the total cost to run the app on the cloud. To this end Microsoft has two offerings which provide a package of resources available at a single monthly charge (overages are charged at the standard rates). By contrast Amazon only offers al-la-carte pricing.
The Azure Development Accelerator Core is charged at $59.95 per month for a six month subscription and provides:
  • 1 month of utilization for a Small compute instance
  • 10GB of persistent storage plus  1,000,000 storage transactions
  • Data Transfer – 14GB outward, 7GB inward
A comparable setup on Amazon would be $95 if the EC2  instance is not reserved, $61.5 if the instance is reserved for one year and $52 if the instance is reserved for three years.
The Azure Development Accelerator Extended is charged at $109.95 per month and is identical to  the Accelerator Core package with a 10GB SQL Azure database included, and this package therefore doesn’t lend itself to a comparison with Amazon AWS.


Across all the services the pricing for Azure and Amazon AWS is very similar, however there are three key differences :
  • Databases - Azure only offers a per database pricing, whereas Amazon offers full database instances. As Azure offers the SQL Server based SQL Azure database this is a more full featured and more expensive alternative to Amazon’s MySQL based offering.
  • Reserved Instances – Amazon allows for an upfront payment to reserve an instance for one or three years which results in a substantial (37% – 50%) saving if the instance is used for the full period.
  • Packages - Azure offers a package of services at a single monthly charge which results in a 50% saving of the regular prices.
NB In this review I have ignored services which have no natural equivalent such as the Azure AppFabric services, or the Azure Asian bandwidth charges for Azure instances location in Asia (AWS instances do not have a geolocation feature).

No comments:

Post a Comment