Cloud Economics – A Platform Comparison

Any new technology adoption happens because of one of the three reasons:

  1. Capability: It allows us to do something which was not feasible earlier
  2. Convenience: It simplifies
  3. Cost: It significantly reduces cost of doing something

What is our expectation from cloud computing? As I had stated earlier, it is all about cost saving … (1) through elastic capacity and (2) through economy of scale. So, for any CIO who is interested in moving to cloud, it is very important to understand what the cost elements are for different cloud solutions. I am going to look at 3 platforms: Amazon EC2, Google App Engine and Microsoft Azure. They are sufficiently different from each other and each of these companies is following a different cloud strategy – so we need to understand their pricing model.

(A word of caution: this analysis is as per the published data on 20th January, 2010 and texts in green italics are my interpretation)

[Update on Amazon offering as on June, 2011]

Quick Read: Market forces seem to have ensured that all the prices are similar – for quick rule of thumb calculation to look at viability, use the following numbers irrespective of the provider. You will not go too much off the mark.

  • Base machine = $0.1 per hour (for 1.5 GHz Intel Processor)
  • Storage = $0.15 per GB per month
  • I/O = $0.01 for 1,000 write and $0.001 for 1,000 read
  • Bandwidth = $0.1 per GB for incoming traffic and $0.15 per GB for outgoing traffic

However, if you have time, you can go through the detail analysis given below.


  • Overview: You can create one or more instances of a virtual machine for processing and for storage
    • You pay based on time the instances are running and not on how much they are used – if an instance is idle, you still pay for it
    • There are three physically different locations where the facility is available (called availability zones) – US(N. Virginia, N. California) and EU(Ireland)
    • When you either shutdown the machine instance or it crashes for whatever reason you lose all your data – to preserve your data you need to opt for one of the 4 possible data persistence mechanisms
    • It is possible to have a reserve instance (for 1 year or 3 years) for an initial payment and discounted rate of usage – however, I do not think it provides any guarantee against data loss because of machine crash
    • Data storage can be both relational and non-relational
  • Machine Instance: Virtual machine can be of different capacity – Standard(Small, Large, Extra Large), High-Memory(Double Extra Large, Quadruple Extra Large), High-CPU(Medium, Extra Large)
    • Charge for Machine Usage: You are charged for the time you keep the instance of the machine running – the time is calculated in hours, any fraction of hour is taken as full hour
      • Hourly charge vary from $0.085 (Small – Linux – N. Virginia) to $3.16 (Quadruple Extra Large – Windows – N. California)
      • Both Linux and Windows machine instances are supported – Windows machines are about 40% more expensive – other software charges are extra
    • There are separate charges for mapping IP addresses, for monitoring & auto scaling ($0.015 per instance per hour) and load balancing
    • A message queue is available (Simple Queue Service – SQS) but again it has a separate charge – $0.1 to $0.17 per GB depending on the total monthly volume
  • Data Persistence: To persistent data storage you can one of the 4 alternatives – Elastic Block Store (EBS) Simple DB, Simple Storage Service (S3) or Relational Database Service (RDS)
    • EBS behaves like a mountable hard drive and is automatically replicated. You can use it in any way you want.
    • Simple DB and S3 storage mechanism is not RDBMS – that is you do not have tables therefore you cannot retrieve records through using JOIN
    • RDS is an instance of MySQL – so you can use it like a normal RDBMS
    • Charges for EBS: you pay for allocated storage and I/O
      • Storage charge are $0.10 per allocated GB per month
      • I/O requests are charged separately at $0.10 per million I/O
    • Charges for Simple DB: you pay separately for CPU, disk space and data transfer – though up to a limit they are free (25 CPU hours, 1GB data transfer, 1GB of storage)
      • CPU usage calculation is normalized to 1.7 GHz Xeon (2007) processor and works out to $0.14 to $0.154 per hour depending on location
      • Data transfer In is free till June 2010 and charge for transfer Out is between $0.1 to $0.17
        per GB depending on the total monthly volume
      • Actual storage is charger at $0.25 to $0.275 per GB per month – it includes 45 bytes of overhead for each item uploaded
    • Charges for S3: You are charged for disk space, data transfer and number of request made instead of CPU usage – data transfer charges are the same
      • Storage charge varies from $.055 to $0.165 per GB per month making it slightly cheaper than Simple DB but at a higher level of usage (more than 1000 TB)
      • I/O requests are charged separately – you pay between $0.01 to $0.011 per 1,000 write requests and $0.01 to $0.011 per 10,000 read requests – deletes are free
    • Charge for RDS: You pay for storage, I/O request, data transfer and machine instance (Small, Large, Extra Large, Double Extra Large, Quadruple Extra Large) based on usage
      • You pay for RDS instance – charges vary from $0.11 to $3.10 per hour depending on the instance size
      • The storage charge is not pay as you use – you have to decide in advance (5 GB to 1 TB) and the charges are $0.10 per GB per month
      • The is no charge for backup up to the amount of storage you have chosen but you have to pay $0.15 per GB per month for extra backup
      • You pay separately for I/O at $0.10 per 1 million I/O requests


  • Overview: Application written in Python or Java can directly be deployed – the implementation is a subset
    • No need to instantiate any virtual machine
    • You are charged on the actual normalized CPU cycles used
    • Storage is only non-relational
    • Charge is calculated on these parameters – bandwidth, CPU, storage, emails send
    • You have free quota for each of these parameters – it is enough for development, testing and small deployment
    • There are limits imposed for peak usage on many different parameters – with daily limits & limits on usage in a burst
    • You will need to rewrite your application to work on Google App Engine – see this
    • Charge for CPU usage: It is calculated in CPU seconds equivalent to 1.2 GHz Intel x86 processor
      • You pay $0.10 per hour of CPU usage for processing requests
      • 6.5 hours of CPU time is free
      • You do not pay for CPU idle time
    • Charge for storage: Only non-relational storage is available
      • You pay $0.15 per GB per month – the size includes overhead, metadata and storage required for indexes
      • It includes data stored in the datastore, memcache, blobstore
      • You pay for CPU usages for data I/O at $0.10 per hour
      • 60 hours of CPU time for data I/O is free
      • Up to 1 GB of storage is freeFAQ page says that it is 500 MB
      • You are charged every day at $0.005 GB per day after subtracting your free quota
    • Charge for bandwidth usage: Inward and outward bandwidth usage is charged at different rate
      • You pay $0.10 per GB for incoming traffic
      • You pay $0.12 per GB for outgoing traffic
      • 1 GB of incoming traffic and 1 GB of outgoing traffic is free


  • Overview: Offering has 3 main parts – Windows Azure, SQL Azure and App Fabric
    • Details available on the Microsoft site is more about the vision of the product than about what is implemented here and now.
    • However this document “Introducing Windows Azure” is good
    • It uses Hyper-V for virtualization – it works more like Amazon than like Google
    • There is an introductory offer where the service can be avail for free
    • The development environment is Visual Studio through an SDK
    • The emphasis of creating applications which partly runs in premise
      and partly on cloud
    • Microsoft wants to keep the programming model as much unaltered as possible – see this
    • Charge for CPU usage: It is calculated in CPU seconds equivalent to 1.2 GHz Intel x86 processor
      • You pay $0.12 per hour of CPU usage for processing requests
    • Charge for storage: Only relational storage is available in form of SQL Azure
      • You pay $0.15 per GB per month
      • Storage transactions are charged separately at $0.01 per 10,000 transactions
    • Charge for bandwidth usage: Inward and outward bandwidth usage is charged at different rate
      • You pay $0.10 per GB for incoming traffic – rates for Asia are different $0.30 per GB
      • You pay $0.15 per GB for outgoing traffic – rates for Asia are different $0.45 per GB

Looking at the complexity of pricing I see great prospect for anybody who specializes in optimizing application for cloud – unlike traditional applications – any improvement in cloud application and directly be measured in $$$ saved.