AWS News Blog
New Spot Fleet Option – Distribute Your Fleet Across Multiple Capacity Pools
Last week I spoke to a technically-oriented audience at the Pacific Northwest PHP Conference. As part of my talk, I described cloud computing as a mix of technology and business, and made my point by talking about Spot instances. The audience looked somewhat puzzled at first, but as I explained further I could see their eyes light up as they started to think about the ways that they could save money for their companies by way of creative coding!
Earlier this year I wrote about the Spot Fleet API, and showed you how to use it to manage thousands of Spot instances with a single call to the RequestSpotFleet
function. Today we are introducing a new “allocation strategy” option for that API. This option will allow you to create a Spot fleet that contains instances drawn from multiple capacity pools (a set of instances of a given type, within a particular region and Availability Zone).
As part of your call to RequestSpotFleet
, you can include up to 20 launch specifications. If you make an untargeted request (by not specifying an Availability Zone or a subnet), you can target multiple capacity pools within an AWS region. This gives you access to a lot of EC2 capacity, and allows you to set up fleets that are a good match for your application.
You can set the allocation strategy to either of the following values:
- lowestPrice – This is the default strategy. It will result in a Spot fleet that contains instances drawn from the lowest priced pool(s) specified in your request.
- diversified – This is the new strategy, and it must be specified as part of your request. It will result in a Spot fleet that contains instances drawn from all of the pools specified in your request, with the exception of those where the current Spot price is above the On-Demand price.
This option allows you to choose the strategy that most closely matches your goals for each Spot fleet. The following table can be used as a guide:
lowestPrice | diversified | |
Fleet Size | Fine for modest-sized fleets. However, a request for a large fleet can affect pricing in the pool with the lowest price. | Works well with larger fleets. |
Total Fleet Operating Cost | Can be unexpectedly high if pricing in the pool spikes. | Should average 70%-80% off of On-Demand over time. |
Consequence of Capacity Fluctuation in a Pool | Entire fleet subject to possible interruption and subsequent replenishment. | Fraction of fleet (1/Nth of total capacity) subject to possible interruption and subsequent replenishment. |
Application Characteristics | Short-running. Not time sensitive. |
Long-running. Time sensitive. |
Typical Applications | Scientific simulations, research computations. | Transcoding, customer-facing web servers, HPC, CI/CD. |
If you create a fleet using the diversified strategy and use it to host your web servers, it is a good idea to select multiple pools and to have a fallback option in case all of them become unavailable.
Diversified allocation works really well in conjunction with the new resource-oriented bidding feature that we launched last month. When you use resource-oriented bidding and specify diversified allocation, each of the capacity pools in your launch specification will include the same number of capacity units.
To make use of this new strategy, simply include it in your CLI or API-driven request. If you are using the CLI, simply add the following entry to your configuration file:
"AllocationStrategy": "diversified"
If you are using the API, specify the same value in your SpotFleetRequestConfigData.
This option is available now and you can start using it today.
— Jeff;