It’s hard to remember what the IT world was like before the cloud. With its on-demand, pay-as-you-go service model, the cloud started by shaking up the infrastructure world and has gone on to revolutionize how we develop and deploy apps and services.
As cloud operations mature, organizations of all sizes are starting to gravitate toward more diverse cloud infrastructures to match the right resources with the right workloads. According to recent research, 84% of enterprises and 61% of small-and-midsize enterprises (SMEs) are pursuing a multi-cloud strategy.
The number one cloud initiative across all organizations has remained, for the past three years, optimizing cloud usage to contain costs. The first step in gaining control over cloud costs is to understand them. This article, the first in a two-part series, explores the pricing models of public cloud infrastructure resources. We’ll use AWS as a reference, but the fundamentals are consistent across all major cloud service providers.
Cloud resources are the building blocks that you (or your cloud service provider) chain together to develop and deploy apps and services. Typical cloud resources include virtual machine instances, storage buckets, and database instances.
There are some general principles that impact the costs associated with cloud resources. On-demand resources are more expensive than pre-provisioned ones. Similarly, you’ll pay more for higher performance levels, such as faster compute speeds or greater throughput. In addition, the charges for public cloud resources that are dedicated exclusively to you are greater than those of resources delivered by way of shared hosting. All of these levers come together to influence the cost of that resource.
Let’s take a closer look at a couple key infrastructure areas: compute and storage.
Amazon Elastic Compute Cloud (Amazon EC2) is a web service that provides managed elastic computing at scale using virtual server instances as resources. The pricing model is comprised of consumption of EC2 instances (in instance-hours) plus the number of transactions. The price per instance-hour varies according to instance type, Region and Availability Zone, hosting type, and provisioning model.
EC2 instances are defined by the number of vCPUs and EC2 Compute Units (ECUs), as well as on-board memory capacity (in GiB) and on-board storage capacity (in GB). The higher the specs, the higher the instance cost per hour. There are five main EC2 instance categories: general purpose, compute-optimized, GPU instances, memory-optimized, and storage-optimized. The table below shows an example of pricing across three instance types, however, at the time of writing, there are over 100 instance types to choose from, each with unique performance capabilities and price points.
Amazon EC2 is hosted in isolated regions, with multiple availability zones in each region. In most cases, an Amazon EC2 resource must specify a region or availability zone endpoint, and pricing varies accordingly. The instance type pricing examples shown above are for the US East (Ohio) Region. In the Asia Pacific (Tokyo) Region, the equivalent instances would cost 20-25% more per instance-hour, i.e., $0.0304, $0.107, and $0.152 respectively.
Regulatory or other considerations may require a more isolated compute environment. An Amazon EC2 Dedicated Host is a physical server with EC2 instance capacity that’s fully dedicated to a specific user. Each Dedicated Host can run one instance type, but you pay hourly for each active Dedicated Host. Thus, for example, in the US East (Ohio) Region, you can run up to 36 c5.large instances on a c5 Dedicated Host at a fixed hourly cost of $3.366. Note that running 36 c5.large instances for an hour on a shared host would cost $3.06, or 10% less.
These fixed EC2 prices can be lowered by volume discounts, with volume pricing tiers calculated across all of an organization’s accounts as though they were a single account. You can increase savings by moving away from the pure on-demand pricing model to Reserved Instances (RIs), which, if assigned to a specific Availability Zone, also provide a capacity reservation. The cost of RIs varies according to the term (1-year or 3-year), type (standard or convertible, for additional flexibility), and degree of prepayment (all upfront, partial upfront, or no upfront).
For example, in the US East (Ohio) Region, we saw that the on-demand cost for an a1.medium instance is $0.0255 per instance-hour.
As a Standard 1-year RI, the cost would be:
For a Standard 3-year RI, the pricing is:
AWS offers three types of storage for unstructured data:
Pricing for these services is comprised of monthly storage capacity plus data transfer charges. The costs vary depending on the quantity of data stored, the type of block storage volume (SSD or HDD), and the required performance tier for data read/write operations.
Typical Amazon S3 monthly pricing per GB of storage for the US East (Ohio) Region is:
In addition to storage capacity, there are other Amazon S3 costs, including:
Amazon EFS pricing in the US East (Ohio) Region is calculated as follows:
For example, if, in a particular month, you use 300GB of Amazon EFS Standard Storage and 500GB of Infrequent Access Storage that is accessed twice per week, your Amazon EFS charge for that month would be $152.50, calculated as follows:
Further choices are available via the AWS marketplace; for instance for high-performance file storage requirements, you may choose to provision cloud volumes using NetApp® Cloud Volumes Service, with different price points and cost levers.
The pricing for Amazon EBS volumes is determined by the type of storage array (SSD, HDD) and various levels of throughput optimization. The following table shows EBS volume pricing for the US East (Ohio) Region:
AWS provides an example for Provisioned IOPS SSD, assuming a 2000GB volume that is provisioned for 12 hours (43,200 seconds) during a 30-day month, with 1000 IOPS provisioned for the volume. The total cost would be $5.25, calculated as follows:
At this point, we’ve only covered two of the building blocks you can use to architect applications in the cloud. In addition to these bedrock components, there’s a broad selection of database services such as Amazon Aurora, Amazon RDS, Amazon Redshift and Amazon DynamoDB. Similarly, there’s a vast array of network related services for DNS, content delivery, load balancing and other important capabilities.
The AWS portfolio consists of nearly 200 different services across more than 20 categories, each with its own price list and nuances that determine how—and how much—you pay. At this point, you should have a good grasp of how AWS (and other cloud providers) price their compute and storage services, and if you’ve been keeping count of the number of variables that impact the cost, you’ll appreciate that budgeting and controlling this cost in the cloud can become incredibly difficult. That’s especially the case because organizations in the cloud would tend to utilize dozens of different services, in addition to simple compute and storage.
It’s important to understand these fundamentals however, to build a cloud strategy that fully meets your business objectives while optimizing cloud spend.
In the second part of this series, we look at some of the cloud optimization best practices that have emerged, and look at ways we can use NetApp Cloud Insights to quickly identify where you can create savings in your environment.