Lesson 3, "Behind The Scenes in Determining the Costs of Cloud Computing" continues with this discussion of a method of allocating cloud computing resources to customers in adjustable, granular chunks. Please see the overview in Lesson 3.1 if you have not already read it.
Some cloud vendors have chosen to solve the problems of fixed instance allocation by creating a build-to-order service, where customers can order instances based on their actual needs, with some restrictions. To make this packing strategy efficient, customers are only given the option of choosing either CPU or memory size in fixed increments, with the other being set by the vendor based on a formula. In our analogy, this is the equivalent of the builder of a housing development offering custom-built homes, in which you may choose any number of bedrooms, and you then get a proportional number of bathrooms, like for example ½ bath for every two bedrooms. An example of a provider that uses quantized instance allocation is GoGrid. This is a variation on fixed instance size allocation.
In effect, this packing strategy is like the fixed instance size strategy, but with many more options. However, because there are more possible instance sizes, they don't fit into the vendor's servers as efficiently as a smaller set of instance sizes, increasing fragmentation. Many new cloud computing services coming into the market use quantized instance allocation, perhaps to resolve some of the issues with fixed instance allocation as used by Amazon so that the new vendors can compete effectively.
Advantages of Quantized Instance Allocation
- Flexibility. Customers are offered more options for instance sizes so that they can choose the right ones for their needs, saving on costs.
- Efficiency. Packing is still relatively efficient if the cloud system does some optimization, so resource savings from this packing strategy can be passed on to customers.
- Somewhat easy to understand. Though not as simple to understand as Fixed Instance Size Allocation, customers generally understand this model well, and like the idea of sizing instances to their needs.
- Cost. Because vendors often offer more choice in instance sizes, customers may potentially save over fixed instance allocation because they don't need to order as many unused resources.
Disadvantages of Quantized Instance Allocation
- Customers' needs not exactly met. Limited and fixed selection of ratios between CPU and memory allocation means that customers' needs are not exactly met, resulting in overpayment to get the necessary resources, or inadequate performance.
- Inflexibility. Again, due to current technology limitations, and limitations of this packing strategy, instance sizes cannot generally be changed while the customers' application is running. To solve this problem, customers have to use the same scaling methods as for fixed instance packing strategies. Some cloud vendors assist with the necessary instance moves or load distribution, somewhat circumventing this problem. However, the application software generally must be written so that it understands the scaling method, or it will fail if it is moved or duplicated. Also, because of the fixed ratio between CPU and memory, customers have to buy more of the selectable resource than they need, if they need more of the dependent one.
- Complexity. Customers may have difficulty understanding the fixed relationship between CPU and memory that this allocation strategy requires, leading to potential frustration with the cloud vendor.
- Cost. Inefficiencies in the packing strategy as well as potential fees for services designed to mitigate its inefficiency and inflexibility can raise the cost of this type of service. Calculating TCD is difficult.
Best Customer Match for Quantized Instance Allocation
- Customers who need more flexibility than fixed instance allocation, or want to optimize their internal fragmentation.
- Customers who are highly technical and want to administer their own instances and take responsibility for instance size management.
- Customers who don't have applications that vary significantly in their resource usage over time.
