Don't get caught making poor assumptions on server utilizations.
The first line of questioning should relate to the type of computing intended to run atop Amazon EC2. Three general types are available, each with their own pricing plan. The most obvious of the three is called an On-Demand Instance. Much like the typical Windows or Linux server you'd see in your data center, an On-Demand Instance is just that -- except hosted elsewhere. What's different with On-Demand Instances is that you pay only for the amount of time the server's in use (up to the maximum as per its resource limitations).
For example, as of this writing a "small" Windows instance at 100% utilization will cost $87.84 per month. That instance represents the logical equivalent of a single-processor x86 server with 1.7 GB of memory and 160 GB of storage space.
What's particularly refreshing about this dollar value is that it represents a total cost-per-month under the assumption that the server is fully burdened during that entire period of use. Rare is the server that's operational all the time, so your actual bill is likely to be considerably less.
The $87.84 end-of-month cost is the summation of the Standard On-Demand Instance's $0.12-per-hour cost for a Windows server. Multiplying this value by the server's actual burden will equal its monthly cost. Caution here is important: Approximating the per-hour usage is a difficult activity without monitoring data. Technicians should not be expected to estimate value ahead of time without metrics to base their assumptions.
Assisting this task is basic monitoring of server instances, which is provided at no extra cost. Statistics are gathered at a five-minute frequency, and they can be used to approximate costs (but only in arrears). For an upcharge, detailed monitoring is available at a one-minute frequency.
Other available Amazon instances
Reserved Instances can be purchased when computing resources are expected to operate for long periods of time. These instances trade an initial one-time payment for a lower per-hour usage rate. As an example, the same small server noted above incurs a $36.60-per-month charge when purchased as a Reserved Instance over three years. This cost also assumes the server operates fully burdened all the time. $350 of this option's resulting $386.60 first-year cost corresponds to a one-time payment for a three-year term of service. When you need long-term cloud services, the savings associated with this option make sense: the per-hour cost is significantly reduced from $0.12 to $0.05 per hour.
As one can imagine, a flexible system like EC2 will always have its low-use periods. Amazon has monetized those low-use periods via what are termed Spot Instances. These instances enable workloads that do not require always-on access to operate during periods of low system-wide utilization and are priced on a dynamic basis.
Spot Instance requests are submitted with a maximum price per instance hour. When a request exceeds the current Spot Instance price, the request is fulfilled and instances will run until either terminated or the Spot Price increases above the request's maximum price.
While Spot Instances are unlikely to be used in always-on, single-server scenarios, they are useful when excess capacity is needed for distributed systems. The bid model here enables your business to internally determine its service valuation, elastically augmenting those services with additional instances only when pricing drops below that valuation.
Services that take advantage of the irregular nature of Spot Instances will obviously need to be constructed, but their far-lower cost basis makes them the option of choice after appropriate technical compensations are made.
Two other Amazon cloud services to consider
While additional services such as IP addresses and address management -- as well as server load balancing -- are available, two other services merit additional attention. The first is Amazon Elastic Block Store (EBS), which is essentially a block-based SAN that enables distributed systems to operate against a single view of data.
Pricing for Amazon EBS volumes (again, as of this writing) is $0.10 per GB per month of provisioned storage, plus $0.10 per one million I/O requests. This pricing model means that high-capacity and highly used storage will increase storage cost; the GB-sized increments, however, mean that provisioned storage can be nearly directly aligned with used storage. Snapshots to that storage are also available for added cost.
The second service involves transferring data into and out of EC2. Creating any new service or gathering data from an existing service requires moving data out of the EC2 system. That data is priced on a per-GB basis, with a fixed price for data transferred into the system and a tiered price for data transferred out. All data transferred within the EC2 system is completed at no cost. Pay careful attention to the inbound/outbound data requirements for any system you build, as this cost is not bounded by virtual hardware maximums and can grow unwieldy.
Amazon provides a calculator to help estimate costs; caution must be made, however, with any unverified assertions in terms of usage that might inappropriately reduce anticipated costs. Pricing for Amazon's EC2 cloud services may be complicated, but the rules are fair. Don't get caught making poor assumptions on server utilizations, and you won't find yourself with a hefty bill at month's end.
ABOUT THE AUTHOR:
Greg Shields, Microsoft MVP, is a partner at Concentrated Technology. Get more of Greg's Jack-of-all-trades tips and tricks at www.ConcentratedTech.com.
This was first published in May 2011