Since its launch ten years ago, Amazon Web Services (AWS) has grown into a rich and very complex offering of cloud services designed to fit almost any need, whether it's a small virtual instance for basic compute work or complex infrastructure integrated with your on-premises services.
When the menu gets as complex as AWS, it can be a challenge to figure out the true cost of the services you need. Amazon offers the AWS Pricing Calculator but unfortunately, that's for comparing the price of its services vs. on-premises pricing, which is a bit self-serving.
With a smorgasbord of choices, it's easy to get overwhelmed. There are a lot of choices, which means a lot of calculations. You might want to leave it up to a reseller that specializes in these features. There is a number of reseller partners that can sort through the complex array of services for you.
Resellers sometimes buy up large pools of reserved instances and will resell instances to customers at a price that's usually between the reserve price and the on-demand price, which allows some cost-savings without the commitment of paying for an expensive Reserved Instance.
Reserved Instances are the most expensive cost of all EC2 pricing, but Amazon routinely negotiates discounts with enterprise customers. That's where a reseller can help.
Should you decide to go it alone, AWS has what it calls Free Tier, where new AWS customers can get their feet wet and decide how they like the service. Once you sign up, you get the following EC2 services free each month for one year:
* 750 hours of EC2 running Linux, RHEL, or SLES t2.micro instance usage
* 750 hours of EC2 running Microsoft Windows Server t2.micro instance usage
* 750 hours of Elastic Load Balancing plus 15 GB data processing
* 30 GB of Amazon Elastic Block Storage in any combination of General Purpose (SSD) or Magnetic, plus 2 million I/Os (with Magnetic) and 1 GB of snapshot storage
* 15 GB of bandwidth out aggregated across all AWS services
* 1 GB of Regional Data Transfer
Should you decide to expand your use beyond the freebies, the basic calculus you need to keep in mind is this: the cost of your EC2 machine plus the costs of block storage, optional software, bandwidth, and optional services.
Next comes a multitude of questions you have to answer before doing any shopping:
* Will the machine be running 24/7 or partially throughout the day, and will it be an on-going use situation or just for a short period with a definite end time?
* Bandwidth issues as relates to data. Will you store your data on Amazon or locally, and how will that impact your bandwidth bill?
* Will the machine be Internet facing so others can access it, or will it just talk to machines within the cluster?
* Do you need additional software on the virtual machine?
Let's begin with pricing for the main compute server. There are three types of instances of EC2 you can purchase:
* Reserved Instance – this machine is available 24/7/365 and is usually on a longer term contract, longer than a year.
* On-Demand Instance – the basic type of virtual machine you pay by the hour that Amazon won't take down, unlike the third option.
* Spot Instances – these instances are much cheaper than On-Demand instance costs and purchased by the hour. The downside is they can be brought down by Amazon at any time with no warning.
The second piece, Block Store, deals with storage. It charges on a rate of per gigabyte per month. It offers two levels of service:
* Instance Level storage is local storage on the machine that is erased when the virtual machine is shut down.
* Elastic Block Store, which is persistent, so it remains available when the VM is shut down and you can reuse it again.
AWS offers three types of object storage, with S3 being the most popular. There are three levels of S3: Standard, Amazon S3 Standard - Infrequent Access for less frequently accessed data, and Amazon Glacier for long-term archive.
Glacier is the cheapest, costing one cent per gigabyte per month. The downside is that it can take several hours to access that data, so it's not readily available. And you have to be careful with Glacier, because its pricing system can come back to bite you, as one individual discovered.
This user lays out a clear warning: Amazon's contracts are often long, complicated, and sometimes sneaky. The true cost of his retrieval was hiding behind a "Read More" link. How often do people follow those links when they think they have the answer they need? So reading everything is important.
If data redundancy is not a primary concern, there's always Reduced Redundancy Storage (RRS), which costs about 20% less and has slightly less redundancy than S3.
A SaaS provider called Cloudyn estimates based on its own research that the compute and block storage components account for 82% of total AWS costs. So these two areas are the ones where you should be most mindful of what services you choose because the costs will add up fastest. Its services help do that, providing analytics into your use and assistance in optimization of your plan.
Your sever is your greatest cost by far, with Cloudyn estimating annual costs as high as $60,000 a year depending on how much system resources you use. Persistent disks are around 4 to 5 cents per GB per month, bandwidth is 14 cents per GB and a loadbalancer, likely the one option you can do without, would be $0.025 per hour plus $0.008 per gigabyte.
Reserved Instances can pay off over the long term. You do have a one-time up-front fee and pay as you go, but you pay 1 cent per hours vs. 2 cents per hour for on-demand instances. Over a three-year term of heavy utilization, that adds up. A light utilization server, used for disaster recovery, can save 56% vs. an on-demand contract. A heavy utilization, for something like heavy use servers, can save as much as 71% over on-demand.
That's why the most important thing you can do as an AWS customer is monitor your use and shut down, turn off, or cancel services you don't need or cut back on provisioning. Don't just provision and forget, keep your virtual machine under constant monitoring. There are many ways to do this:
- Shut off things you aren't using and use pay-as-you-go for short-term things.
- Delete snapshots you no longer need.
- Use reserved instances and spot pricing.
- Experiment to find the optimal instance sizes.
- Monitor everything every day.
- Run non-time-sensitive workloads when it's cheapest to do so.
Amazon does list everything, just not always in one place. Follow all the Read More links and drill down on everything. After you deploy: monitor, monitor, monitor. You should be doing even more maintenance and monitoring of your AWS deployment than internal deployments because they will bill you monthly, and you might get a surprise.
Photo courtesy of Shutterstock.