Warakorn - Fotolia


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

Dig Deeper on AWS pricing, cost and ROI