-
Notifications
You must be signed in to change notification settings - Fork 41
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
93199b7
commit 133b2f9
Showing
2 changed files
with
177 additions
and
0 deletions.
There are no files selected for viewing
File renamed without changes.
177 changes: 177 additions & 0 deletions
177
specification/appendix/commitment_discounts/size_flexibility.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,177 @@ | ||
# Size Flexibility | ||
|
||
A usage-based commitment discount commits a customer to a usage amount for one or more related SKUs in return for reduced rates. For example, when a customer purchases a usage-based commitment discount to cover a specific database SKU, this commitment will cover every hour over the term where at least one instance of this SKU is running. It can also cover eligible resources wholly where 1 hour is covered by 1 resource or partially where 1 committed hour can be split across multiple resources or 1 resource can be fully covered with unused commitment discount costs. These latter two examples are commonly known as *size-flexibility*. | ||
|
||
Since providers do not uniformly enable size flexibility based on the same SKU characteristics, the following, made-up SKU and SKU pricing attributes will be used in each example. Each example will also specify if a commitment discount does or does not have size-flexibility enabled. | ||
|
||
## SKUs & Rates | ||
|
||
The following, made-up SKU and SKU pricing attributes show that this provider has 1 service (i.e. Compute) that offers 1 virtual machine family with only 4 related, virtual machine SKUs at various list rates, committed rates, and normalization factors. Each SKUs normalization factor determines classifies it's relative size to its rate. Usage-based commitment discounts with size-flexibility can fully cover any combination of 1 or more SKUs where the sum of their normalization factor equals the normalization factor of the commitment discount. More on this later. | ||
|
||
| Service | SkuFamily | SkuId | ListUnitPrice | CommittedUnitPrice | NormalizationFactor | | ||
| ------- | --------- | --------- | ------------- | ------------------ | ------------------- | | ||
| Compute | VM | VM_Small | $0.50 | $0.25 | 1 | | ||
| Compute | VM | VM_Medium | $1.00 | $0.50 | 2 | | ||
| Compute | VM | VM_Large | $2.00 | $1.00 | 4 | | ||
| Compute | VM | VM_XLarge | $4.00 | $2.00 | 8 | | ||
|
||
### Scenarios *without* size-flexibility | ||
|
||
#### Scenario #1: 100% utilization with matching resources | ||
|
||
Purchase: 1 commitment discount purchased for 1 year for 1 VM_Large. | ||
Usage: 1 VM_Large resource runs from 2023-01-01 00:00:00 to 2023-01-01 01:00:00. | ||
|
||
The commitment discount covers the first charge period for 1 VM_Large resource (i.e. <my-vm-id>) resulting in a $1 amortized cost. | ||
|
||
```json | ||
[ | ||
{ | ||
"BillingPeriodStartDate": "2023-01-01 00:00:00Z", | ||
"BillingPeriodEndDate": "2023-02-01 00:00:00Z", | ||
"ChargePeriodStartDate": "2023-01-01 00:00:00Z", | ||
"ChargePeriodEndDate": "2023-01-01 01:00:00Z", | ||
"ChargeCategory": "Usage", | ||
"ChargeFrequency": "Usage-Based", | ||
"PricingCategory": "Committed", | ||
"ResourceId": "<my-large-vm-id>", | ||
"BilledCost": 0.00, | ||
"EffectiveCost": 1.00, | ||
"SkuId": "VM_Large", | ||
"CommitmentDiscountId": "<commitment-discount-id>", | ||
"CommitmentDiscountStatus": "Used", | ||
"CommitmentDiscountQuantity": 1, | ||
"CommitmentDiscountUnit": "Hour" | ||
} | ||
] | ||
``` | ||
|
||
#### Scenario #2: 0% utilization with a non-matching resource | ||
|
||
Purchase: 1 commitment discount purchased for 1 year for 1 VM_Large. | ||
Usage: 1 VM_Medium resource runs from 2023-01-01 00:00:00 to 2023-01-01 01:00:00. | ||
|
||
The VM_Large commitment discount is unused since no VM_Large resources are running. Additionally, 1 hour of on-demand usage was incurred by the running VM_Medium resource. This unused commitment discount cost and on-demand cost results in a $2 amortized cost. | ||
|
||
```json | ||
[ | ||
{ | ||
"BillingPeriodStartDate": "2023-01-01 00:00:00Z", | ||
"BillingPeriodEndDate": "2023-02-01 00:00:00Z", | ||
"ChargePeriodStartDate": "2023-01-01 00:00:00Z", | ||
"ChargePeriodEndDate": "2023-01-01 01:00:00Z", | ||
"ChargeCategory": "Usage", | ||
"ChargeFrequency": "Usage-Based", | ||
"PricingCategory": "Committed", | ||
"ResourceId": "<my-large-vm-id>", | ||
"BilledCost": 0.00, | ||
"EffectiveCost": 1.00, | ||
"SkuId": "VM_Large", | ||
"CommitmentDiscountId": "<commitment-discount-id>", | ||
"CommitmentDiscountStatus": "Unused", | ||
"CommitmentDiscountQuantity": 1, | ||
"CommitmentDiscountUnit": "Hour" | ||
}, | ||
{ | ||
"BillingPeriodStartDate": "2023-01-01 00:00:00Z", | ||
"BillingPeriodEndDate": "2023-02-01 00:00:00Z", | ||
"ChargePeriodStartDate": "2023-01-01 00:00:00Z", | ||
"ChargePeriodEndDate": "2023-01-01 01:00:00Z", | ||
"ChargeCategory": "Usage", | ||
"ChargeFrequency": "Usage-Based", | ||
"PricingCategory": "Standard", | ||
"ResourceId": "<my-medium-vm-id>", | ||
"BilledCost": 1.00, | ||
"EffectiveCost": 0.00, | ||
"SkuId": "VM_Medium" | ||
} | ||
] | ||
``` | ||
|
||
### Scenarios *with* size-flexibility | ||
|
||
#### Scenario #1: 100% utilization with 2 VM_medium resources | ||
|
||
Purchase: 1 commitment discount purchased for 1 year for 1 VM_XLarge with a normalization factor or 8. | ||
Usage: 2 VM_Medium resources run from 2023-01-01 00:00:00 to 2023-01-01 01:00:00 with a normalization factor of 4 for each resource. | ||
|
||
The VM_XLarge commitment discount fully covered 2 VM_Medium resources resulting in a $2 amortized cost. | ||
|
||
1 commitment discount for a VM_XLarge has a normalization factor of 8, and 2 VM_Medium resources have a normalization factor of 4, each. Therefore, with size flexibility, 1 VM_XLarge commitment discount can fully cover 2 VM_Medium resources. | ||
|
||
```json | ||
[ | ||
{ | ||
"BillingPeriodStartDate": "2023-01-01 00:00:00Z", | ||
"BillingPeriodEndDate": "2023-02-01 00:00:00Z", | ||
"ChargePeriodStartDate": "2023-01-01 00:00:00Z", | ||
"ChargePeriodEndDate": "2023-01-01 01:00:00Z", | ||
"ChargeCategory": "Usage", | ||
"ChargeFrequency": "Usage-Based", | ||
"PricingCategory": "Committed", | ||
"ResourceId": "<my-large-vm-id>", | ||
"BilledCost": 0.00, | ||
"EffectiveCost": 1.00, | ||
"SkuId": "VM_Large", | ||
"CommitmentDiscountId": "<commitment-discount-id>", | ||
"CommitmentDiscountStatus": "Used", | ||
"CommitmentDiscountQuantity": 1, | ||
"CommitmentDiscountUnit": "Hour" | ||
}, | ||
{ | ||
"BillingPeriodStartDate": "2023-01-01 00:00:00Z", | ||
"BillingPeriodEndDate": "2023-02-01 00:00:00Z", | ||
"ChargePeriodStartDate": "2023-01-01 00:00:00Z", | ||
"ChargePeriodEndDate": "2023-01-01 01:00:00Z", | ||
"ChargeCategory": "Usage", | ||
"ChargeFrequency": "Usage-Based", | ||
"PricingCategory": "Standard", | ||
"ResourceId": "<my-medium-vm-id>", | ||
"BilledCost": 1.00, | ||
"EffectiveCost": 0.00, | ||
"SkuId": "VM_Medium" | ||
} | ||
] | ||
``` | ||
|
||
#### Scenario #2: 100% utilization with 1 VM_Large resource | ||
|
||
Purchase: 1 commitment discount purchased for 1 year for 1 VM_Small with a normalization factor of 1. | ||
Usage: 1 VM_Large resource runs from 2023-01-01 00:00:00 to 2023-01-01 01:00:00 with a noramlization factor of 4. | ||
|
||
The VM_Small commitment discount was fully utilizated but still only covered 25% of the VM_Large resource, so the rest of the VM incurred on-demand cost of $1.50, and the amortized cost for this resource is $1.75. | ||
|
||
```json | ||
[ | ||
{ | ||
"BillingPeriodStartDate": "2023-01-01 00:00:00Z", | ||
"BillingPeriodEndDate": "2023-02-01 00:00:00Z", | ||
"ChargePeriodStartDate": "2023-01-01 00:00:00Z", | ||
"ChargePeriodEndDate": "2023-01-01 01:00:00Z", | ||
"ChargeCategory": "Usage", | ||
"ChargeFrequency": "Usage-Based", | ||
"PricingCategory": "Committed", | ||
"ResourceId": "<my-large-vm-id>", | ||
"BilledCost": 0.00, | ||
"EffectiveCost": 0.25, | ||
"SkuId": "VM_Large", | ||
"CommitmentDiscountId": "<commitment-discount-id>", | ||
"CommitmentDiscountStatus": "Used", | ||
"CommitmentDiscountQuantity": 1, | ||
"CommitmentDiscountUnit": "Hour" | ||
}, | ||
{ | ||
"BillingPeriodStartDate": "2023-01-01 00:00:00Z", | ||
"BillingPeriodEndDate": "2023-02-01 00:00:00Z", | ||
"ChargePeriodStartDate": "2023-01-01 00:00:00Z", | ||
"ChargePeriodEndDate": "2023-01-01 01:00:00Z", | ||
"ChargeCategory": "Usage", | ||
"ChargeFrequency": "Usage-Based", | ||
"PricingCategory": "Standard", | ||
"ResourceId": "<my-large-vm-id>", | ||
"BilledCost": 1.50, | ||
"EffectiveCost": 0.00, | ||
"SkuId": "VM_Medium" | ||
} | ||
] | ||
``` |