This blog post is a transcript of a Scalr podcast about instance purchasing options for Amazon Web Services, Google GCE and Microsoft Azure.
Amazon Web Services Pricing
AWS has three main types of offerings that you can purchase, and a separate type of “Dedicated” that is a bit different.
AWS’s main offering is “On-Demand”, pay as you go, with no upfront commitments. There are 6-7 different instance type “Families” small, large, performance, etc. These are all billed by the hour and for full hour increments. As soon as you shutdown the instance you will no longer get charged for COMPUTE costs. However, if you shut it down without terminating or deleting storage you will incur storage costs.
The second AWS offering is “Reserved” instances. You may reserve instances for 1 to 3 years with savings of up to a maximum 75% discount on total cost of On-Demand instance of similar type. There are several options for payment and discount structure such as partial up front payment, full up front payment, or pay as you go. Best discount (75%) is offered for 3 year reservation and full payment up front. There are two dedicated instance types: Standard - available any time 24/7, and Scheduled - which you can reserve for specific scheduled time periods. For example, only certain nighttime hours or only weekdays during business hours. These Scheduled Reserved Instances are only available in 1 year increments of contract time.
Reserved instances actually reserve capacity for you. Some very large instances can present “insufficient capacity” errors if there is not enough left in an availability zone. This can cause issues if you are then forced to deploy in a different availability zone. These Reserved instances do reserve capacity so you will never be presented with this type of blocking situation. You are guaranteed to be able to run that reserved instance in that reserved AZ.
Question - If you do not pay up front what does the discount look like?
Answer - You are still committed for the reserved timeline and will have to pay the full contract cost. You will get different discounts based on payment schedule but you will be committed for the full timeframe regardless of your payment schedule and discount.
Question - How does Scalr know what type of instance to deploy to first if you have both reserved and on demand available?
Answer - It depends on what is available. If you have a reserved instance in a different availability zone, you will automatically default to on-demand for any AZ where the reserved instance is not present. And vice versa. No need to change your deployment or config as this will be done automatically.
The third type are “Spot-instances.” These are completely different from on-demand instances.
Here AWS basically says “We have these extra Compute resources available in different areas and, since we have it we'll let customers bid on what they want to pay to use that compute availability.” This causes the price to fluctuate up and down based on availability and demand. If your bid price is ABOVE this point in time pricing you will be able to run that compute at that bid price per hour. When spot instance cost goes above customer max bid due to fluctuations over time, your instance will then be shut down! If you have stateless services you want to run and do not care if they are shut down, you can use this billing format to save significantly on cost, but there is risk due to availability and demand impacting this pricing. There is no time limit on how long you can run spot-instances as long as your bid is above the cost point. Spot instances are NOT available for dedicated hosts.
Question - Can you be “kicked out” of a spot instance by higher bidders?
Answer - No not really. You are never directly kicked by other users but you can in effect be kicked off as demand and availability changes and pushes the price above your bid.
Also keep in mind, API and process for spot instance launch is different. You will have to re-tool your application and API calls for spot-instances.
Dedicated instances are physical EC2 servers with instance-capacity fully dedicated to one customer. You pay more for this host, but you can apply server-bound licences to them (Windows, SQL, SUSE, etc.). You will have the option to specify if other instances can be launched there (multi tenant) or not. This allows you to prevent “Naughty neighbors”. These are typically very large instances, at a higher cost, and are optimized by AWS for ideal placement and usage of physical resources ( so do not worry about wastefulness) Typically these are used by organizations needing compliance or other restrictions to be met with 100% certainty.
Google Cloud Engine Pricing
Every cloud platform does things differently. At Google they have 2 different instance types. Google charges per minute, with a minimum of 10 minutes, where AWS charges hourly. Google charges in one minute increments after the first 10 minutes. There will be a fixed price for each of these types.
1. Pre-defined-machine types
These are very similar to the types of instance in AWS such as Standard, m1large, medium, etc. These are predefined in memory and vcpus etc.
2. Custom Machine Types
These allow you to specify exactly the vcpu and memory that you want.
3. Sustained Use Discounts
Google offers what they call “Sustained Use Discounts.” This means the longer you run an instance during each month the larger discount you will receive. If you run for 25% of a month, you pay 100% of the base machine type rate. If you run between 25-50% you will get a 20% discount on the second quarter. This behaves like Tax Brackets where you pay the full rate for each bracket and receive the discount for the each bracket you qualify for on whatever amount falls within that bracket. Discount schedule available below. This equates to approximately a 30% discount on total price if you run for the full 100% of the month. This is a big marketing advantage that Google has over AWS and Azure in that you do not have to pay up front or make a yearly commitment to receive a discount! You do not have to reserve and commit to a cost up front, but rather you will get the discount just for running for a longer period of time.
Discounts on incremental use during each month:
0-25% - 100% of base rate
25-50% - 80% of base rate
50-75% - 60% of base rate
75-100% - 40% of base rate
4. Inferred Instances
To further their sustained use discounts, Google also offers what are called “Inferred Instances” where you can combine instance run time of multiple instances so that they count as one for sustained usage discount calculation purposes. For example, if you have one instance run for the first 50% of the month and then shut it down and run a new instances for the last 50% of the month then Google will automatically combine these to equal 100% sustained use for one instance over the month. You can even split larger instances to satisfy sustained use uptime on smaller instances as well. For example, you may have a 2 vcpu 2gb instance run for 50% of the month which then combines with half of a 4 vcpu 4gb instance that ran for the remaining 50% of the month to create a 2 vcpu 2gb Inferred Instance with 100% sustained use for the month. The other half of the larger instance would then count on its own or as part of other inferred instances. This is all done automatically for you.
Comment from Scalr -You get best discounts on Google with NO configuration, but you get better discounts in AWS if you manually commit up front. This requires more math and up front cost. It can be difficult to select the right provider to maximize discount depending on your projected needs.
5. Preemptive Instances
Google also offers what are called “Preemptive instances”. This is their competition for AWS Spot-instances, but there are some differences. In AWS where you bid for a price and run as long as your bid price is higher than the running price. Google preemptive is a fixed 30% of the standard cost. It is more predictable, but you can ONLY run for 24 hours max and if demand goes up in that environment the preemptive instances may be shut off at any time. You can re-up every 24 hours but the instance will still shut down and you will start from scratch with a new preemptive instance so no long running processes are possible here.
Microsoft Azure Pricing
This one is easy and straightforward as there are only two ways to purchase.
On demand is priced at a flat cost and is paid per minute increment.
2. 12 Month Pre-pay
Azure also offers 12-month pre payment where you “reserve” instances and are given a 5% discount for a minimum $6000 commitment.
That is it! They have no type similar to Preemptive or Spot instances. Azure is offering deep discounts up front but very little for usage over time.