Essential Guide

Developing cloud applications in the new IT era

A comprehensive collection of articles, videos and more, hand-picked by our editors
Evaluate Weigh the pros and cons of technologies, products and projects you are considering.

Calculating the true cost of AWS application development

Determining the cost of running apps in the cloud is tricky. Perform cost analyses with online tools to whittle down platform choices.

Continuous price decreases, frictionless setup, low cost of entry, fewer administration headaches and inherent...

scalability can make public cloud very appealing to enterprises. And while cloud infrastructure scale and competition are pushing prices downward, many developers still improperly calculate AWS costs.

According to a study on infrastructure as a service (IaaS) prices , base-level cloud service costs decreased 95% from 2012 to 2015; services that might have cost 35 cents to 70 cents an hour in 2012 are more likely to cost 10 cents to 30 cents today. Another study finds that the hourly cost of AWS Elastic Compute Cloud, or EC2, instances has dropped 56% in the last two years.

But shopping for cloud application platforms is similar to pricing a car with an extensive option sheet and complex lease-financing plans. The base price -- whether in virtual machines (VMs) per hour or gigabytes per month -- is a loss-leader that snags drive-by shoppers. Cloud pricing is complicated; storage is straightforward, but mapping different workloads to the most appropriate server instance isn't a science. Companies can easily get cloud sticker shock after pricing in all the necessary details. There are a few things to keep in mind to avoid nasty surprises when reviewing your first cloud invoice.

AWS has the richest service offering, both in variety of instance types and higher-level AWS application services, so it's a great place to start cloud shopping. And the cloud giant remains the most popular public cloud service, according to a recent Rightscale survey, although Windows Azure is closing the gap (Figure 1). AWS' maturity, mindshare and rich set of application services make it the default choice for many companies, but it's important to build a more accurate model of the underlying application, services and capacity requirements and run them through a complete price analysis before deciding.

Public cloud use
Figure 1. Public cloud use by vendor.

Tracking services from companies such as Cloud Spectator and Strategic Blue typically place AWS instance pricing in the middle of the pack; the cloud cost equation is too complex to pin down to a single number. The Cloud Price Index from 451 Research measures the average hourly price for a typical Web application, including compute, storage, relational and NoSQL databases, as well as network traffic. Its aggregate from more than 10 vendors determines that typical Web application costs $1.70 per hour, or approximately $15,000 a year, a figure that can be cut by nearly half in a best-case scenario with longer-term service commitments, 451 Research shows.

The most accurate, albeit time-consuming way to understand cloud pricing and AWS costs is to model an application's service requirements and run the mix through a spreadsheet using an online price comparison site. A few good third-party tools to assist with cloud price shopping include RightScale PlanForCloud, CloudVertical, Cloudorado and Gocipher .The most sophisticated and automated analysis tool is PlanForCloud; it supports complex application configurations using an arbitrary mix of compute servers, databases, storage and data transfer. The other sites require IT teams to manually build a spreadsheet with the various resource types and then manually plug in pricing information.

Running the numbers for AWS application costs

The effort required to build an accurate cost model is obviously a function of the application's complexity. Developers trying to ballpark a new design should turn to AWS reference architectures, 16 datasheets that include a high-level schematic and basic description of prototypical designs for deployments as varied as legacy batch processing to online gaming.

One problem with using the reference designs for price comparisons is that they use AWS products -- CloudFront, Elastic Load Balancing, DNS or DynamoDB -- that might not be available or don't have close equivalents on other cloud platforms. So, it's best to stick with the core infrastructure when comparing.

To determine cloud application costs, we'll use a simple, three-tier Web app with the following configuration:

  1. Three front-end Web servers (medium Linux)
  2. Two mid-tier application servers (large Linux)
  3. Two SQL databases (large MySQL, multi-zone)
  4. 1 TB object store (S3 on AWS)
  5. 1 TB block store (EBS on AWS)

Start with AWS applications and then duplicate the configuration as close as possible on Windows Azure, Google Cloud Platform and Rackspace (Figure 2).

Web application configuration
Figure 2. Three-tier Web application configuration.

Assuming 24/7 usage and month-to-month pricing (no reserved instances) and adding estimates for data traffic to and from external users and between each tier of the design, we then ran each through the PlanForCloud calculator. Results for a three-year annual price comparison are shown online.;

Going through this exercise demonstrates several things, primarily that cloud services aren't uniform. And that makes it almost impossible to clone a particular configuration from one vendor to another. Second, there are significant price differences for roughly comparable servers. For example, a large SQL database with 100 GB of local storage runs $248 per month on AWS versus $176 per month on Azure. In contrast, a medium Web front end goes for $52 monthly on AWS versus $119 per month on Azure and almost $600 per month on Google Cloud Platform.

The analysis is also overly simplified; assuming hourly pricing for systems operating 24/7 completely neutralizes the dynamic pricing and scalability benefits of the cloud. In addition, anyone in that scenario could save a substantial amount of money (generally 60% or more) by using AWS Reserved Instances with an annual lease, according to CloudVertical comparisons.

To further complicate things, Google offers sub-hour pricing with lower rates for sustained use. For example, using an instance for 100% of the billing cycle nets an automatically applied 30% discount. Google's model is much more attractive for highly variable workloads, while AWS is best for sustained or reserved applications. It's also important to note that PlanForCloud's instance choices and prices aren't always up to date. The site currently includes only a subset of available AWS Relational Database Services instances. Always double-check figures with individual cloud vendors.

About the author:
Kurt Marko is an IT analyst, consultant and author focusing on cloud infrastructure, services and software, mobile devices, and applications. With B.S. and M.S. degrees in electrical engineering from Stanford, Marko developed transistors and fabrication processes before moving to Bell Labs, where he designed integrated circuits. Later he became an IT architect designing systems and networks for HP. 

Next Steps

How to monitor cloud costs with third-party tools

Getting a grasp on cloud storage costs

This was last published in April 2015



Find more PRO+ content and other member only offers, here.

Essential Guide

Developing cloud applications in the new IT era

Join the conversation


Send me notifications when other members comment.

By submitting you agree to receive email from TechTarget and its partners. If you reside outside of the United States, you consent to having your personal data transferred to and processed in the United States. Privacy

Please create a username to comment.

How do you calculate AWS application costs?
You can tag resource and check billing by resource in Bill & Cost Management

As a QA Engineer, I have been occasionally asked to run tests that are not possible from internal infrastructure.  My team and I have used AWS for such needs and found it to work well, albeit with high costs when doing some types of testing. Our most expensive test was when one of my coworkers spun up dozens of different VMs for creating a selenium load test (a load test using actual browsers). While that particular test was expensive, one can spin up smaller amounts of infrastructure for a short time without having to get permanent hardware.  Sometimes the cost of buying hardware that will not be used for long is much higher than using IaaS.

Kurt: You completely missed one of the best tools on the market for predicting the cost and performance of an application; Krystallize Technologies CloudQoS™

This tool lets you create a synthetic workload that mirrors your application but can easily be ported to and run at any cloud provider on any platform or configuration. In this manner you can get a true price/performance index based on your specific application within and across providers.
Another element that can be complicated is bandwidth costs, both for external-facing traffic, but also for inter-region traffic. These aren't consistent from cloud to cloud, and can generate large (and unexpected) costs.