返回文章列表

雲端服務承諾式折扣方案解析

本文深入比較 AWS、Azure 和 Google Cloud 的承諾式折扣方案,包括保留例項(RI)、節省計劃(SP)和承諾使用折扣(CUD),分析其運作機制、帳戶關聯性、例項大小彈性以及不同方案的優缺點,並提供程式碼範例輔助理解與應用,幫助企業選擇最適合的雲端成本最佳化策略。

雲端運算 成本最佳化

雲端服務供應商提供多種承諾式折扣方案,例如保留例項(RI)、節省計劃(SP)和承諾使用折扣(CUD),以鼓勵長期使用並降低成本。這些方案各有不同的特性和適用場景,需要根據實際需求選擇。AWS 的 RI 提供根據例項的折扣,而 SP 則提供根據支出承諾的折扣,更具彈性。Azure 的 RI 和 SP 與 AWS 的方案類別似,但折扣比例和付款方式略有不同。Google Cloud 的 CUD 則提供根據資源型別的折扣,適用於整個區域。選擇合適的方案需要考量例項型別、區域、使用量預測以及靈活性需求等因素。

AWS 預留例項(Reserved Instances)折扣應用解析

AWS 預留例項(Reserved Instances, RI)是一種能夠為使用者帶來顯著成本文省的承諾性折扣方案。然而,其折扣應用邏輯與帳戶結構息息相關,許多使用者對此存在誤解。本文將探討 RI 的運作機制、帳戶關聯性以及不同型別 RI 的區別。

帳戶關聯性對 RI 折扣應用的影響

在 AWS Organizations 中,帳戶結構對於 RI 的折扣應用至關重要。當在管理帳戶或成員帳戶中購買 RI 時,RI 的折扣會優先應用於該帳戶內的匹配資源。如果該帳戶內沒有匹配的資源使用,則折扣會透過 RI 共用功能應用於同一個 AWS Organizations 中的其他帳戶。

RI 共用功能

RI 共用功能預設為啟用狀態,但可以針對個別 AWS 帳戶停用。如果停用 RI 共用,則該帳戶內的 RI 折扣不會應用於其他帳戶,同時其他帳戶的 RI 折扣也不會應用於該帳戶。這種設定可能會導致 RI 資源浪費,因此需要謹慎組態。

RI 折扣應用範例解析

圖表翻譯:

此圖示展示了一個典型的 AWS Organizations 帳戶結構,其中管理帳戶與多個成員帳戶相連。管理帳戶中的 RI 可以透過 RI 共用功能將折扣應用於成員帳戶 A 和 B。然而,成員帳戶 C 和 D 由於停用了 RI 共用,因此無法享受到其他帳戶 RI 的折扣,同時其自身的 RI 也無法應用於其他帳戶。

標準型與可轉換型 RI 的比較

AWS 提供兩種主要的 RI 型別:標準型 RI(Standard RI, SRI)和可轉換型 RI(Convertible RI, CRI)。SRI 提供較高的折扣比率,但其引數調整能力有限,一旦購買就無法更改大部分設定,如例項系列、作業系統等。相對地,CRI 提供了更大的靈活性,允許在租期內更換 RI 的部分引數,但其折扣比率略低。

SRI 與 CRI 的主要區別

  • SRI

    • 可修改部分引數,如可用區、範圍等。
    • 無法更改租期、例項系列等關鍵引數。
    • 提供較高的折扣比率。
  • CRI

    • 可在租期內更換部分 RI 引數。
    • 無法更改區域、服務型別等。
    • 相較 SRI 提供較低的折扣比率。

#### 程式碼範例:檢查 RI 使用狀況

import boto3

# 初始化 AWS Cost Explorer 使用者端
ce = boto3.client('ce')

# 定義查詢引數
query_params = {
    'TimePeriod': {
        'Start': '2023-01-01',
        'End': '2023-01-31'
    },
    'Granularity': 'MONTHLY',
    'Metrics': ['UnblendedCost'],
    'GroupBy': [
        {
            'Type': 'DIMENSION',
            'Key': 'RESERVATION_ID'
        }
    ]
}

# 發起查詢請求
response = ce.get_cost_and_usage(**query_params)

# 輸出結果
for result in response['ResultsByTime']:
    print(result)

內容解密:

此 Python 程式碼範例展示瞭如何使用 AWS Cost Explorer API 查詢特定時間範圍內 RI 的使用狀況與相關成本。首先,我們初始化了一個 ce 使用者端物件以便與 Cost Explorer API 互動。接著,定義了查詢引數,包括時間範圍、粒度、要檢索的指標以及分組依據。在這個範例中,我們按照 RESERVATION_ID 對結果進行分組,以便分析每個 RI 的成本。最後,程式碼發起查詢請求並輸出結果。

AWS 承諾型折扣的深度解析

EC2 RI 的運作機制與容量預留

AWS 的 EC2 Reserved Instances(RI)提供了一種有效的成本文省方案,但需要仔細規劃以達到最佳利用率。RI 不僅提供折扣,還包含容量預留功能,確保在特定可用區內有足夠的伺服器容量。然而,這種容量僅限於相同的 AWS 帳戶和特定的資源組態。

區域性 RI 與可用區 RI 的區別

  • 區域性 RI:適用於區域內任何可用區的資源,但不提供容量預留。
  • 可用區 RI:保證特定可用區內的伺服器容量,但僅適用於該可用區內的資源。

若將區域性 RI 與 On-Demand Capacity Reservations(ODCR)結合使用,可以在享受 RI 折扣的同時獲得容量預留。

例項大小彈性(Instance Size Flexibility, ISF)

EC2 RI 的 ISF 功能允許區域性 Linux/UNIX RI 自動套用折扣至同一系列的不同大小例項。這意味著一個大型的 RI 可以涵蓋多個較小的例項,反之亦然,從而提供更大的靈活性。

ISF 的運作方式

ISF 使用標準化因子來計算 RI 可以套用的折扣單位數量。透過這種方式,可以將 RI 套用到不同大小的例項上,達到最佳的成本效益。

例項大小標準化因子例項大小標準化因子
nano0.256xlarge48
micro0.58xlarge64
small19xlarge72
medium210xlarge80
large412xlarge96
xlarge816xlarge128
2xlarge1618xlarge144
3xlarge2424xlarge192
4xlarge3232xlarge256

ISF 的實際應用

假設擁有一個 2xlarge(16 個單位)的 RI,可以將其套用到兩個 xlarge(8 個單位)或四個 large(4 個單位)例項。這種靈活性使得 RI 的利用率大大提高。

@startuml
skinparam backgroundColor #FEFEFE
skinparam componentStyle rectangle

title 雲端服務承諾式折扣方案解析

package "AWS 雲端架構" {
    package "網路層" {
        component [VPC] as vpc
        component [Subnet] as subnet
        component [Security Group] as sg
        component [Route Table] as rt
    }

    package "運算層" {
        component [EC2] as ec2
        component [Lambda] as lambda
        component [ECS/EKS] as container
    }

    package "儲存層" {
        database [RDS] as rds
        database [DynamoDB] as dynamo
        storage [S3] as s3
    }

    package "服務層" {
        component [API Gateway] as apigw
        component [ALB/NLB] as lb
        queue [SQS] as sqs
    }
}

apigw --> lambda
apigw --> lb
lb --> ec2
lb --> container
lambda --> dynamo
lambda --> s3
ec2 --> rds
container --> rds
vpc --> subnet
subnet --> sg
sg --> rt

@enduml

圖表翻譯: 此圖示展示了 ISF 如何自動套用 RI 折扣至不同大小的例項,從而提高 RI 的利用率。

AWS Savings Plans(SP)

AWS Savings Plans 是 AWS 在 2019 年推出的另一種承諾型折扣方案,提供了比 RI 更大的靈活性。SP 的承諾是根據貨幣金額,而非特定的資源單位。

SP 的型別

  1. Compute SP:適用於 EC2、Lambda 和 Fargate,提供與 CRIs 相當的節省。
  2. EC2 Instance SP:適用於單一區域內同一系列的 EC2 例項,提供更高的折扣。
  3. Machine Learning SP:適用於 SageMaker,提供對 SageMaker 元件成本的折扣。

SP 的優勢

SP 提供了一種更靈活的成本文省方案,允許客戶承諾一定的支出以換取折扣。與 RI 相比,SP 不需要指定特定的例項大小或區域,從而降低了管理的複雜度。

節省成本的最佳實踐
  1. 深入瞭解 RI 和 SP 的差異:根據業務需求選擇合適的承諾型折扣方案。
  2. 利用 ISF 提高 RI 利用率:透過 ISF 自動套用 RI 折扣至不同大小的例項。
  3. 監控和分析雲端支出:定期檢查雲端支出,以最佳化成本文省方案。

透過遵循這些最佳實踐,企業可以更好地利用 AWS 的承諾型折扣方案,降低雲端成本,提高資源利用率。

承諾式折扣的深入分析與應用

在雲端運算領域中,不同的雲端服務提供商(CSP)提供了多種形式的承諾式折扣,以激勵客戶長期使用其服務並最佳化成本結構。本篇文章將探討亞馬遜網路服務(AWS)與微軟Azure所提供的承諾式折扣方案,包括保留例項(Reserved Instances, RIs)、節省計劃(Savings Plans, SPs)以及其他相關的折扣機制。

AWS 的承諾式折扣

AWS 提供了多種承諾式折扣方案,包括保留例項(RIs)和節省計劃(SPs)。

保留例項(RIs)

  • 定義與特點:客戶承諾使用特定型別的資源(如EC2例項)一段固定的時間(通常為1或3年),以換取相對於隨用隨付價格的折扣。
  • 適用範圍:可用於多種AWS服務,如EC2、RDS等。
  • 限制:RIs與特定的例項型別、區域、作業系統等相關,靈活性較低。

節省計劃(SPs)

  • 定義與特點:客戶承諾在一定期間內支付一定的金額用於AWS服務,以獲得折扣。SPs比RIs更具靈活性,不受限於特定的例項型別或區域。
  • 適用範圍:適用於EC2、Fargate、Lambda等多種計算服務。
  • 優點:提供更大的靈活性,能夠跨區域和例項型別套用,且能涵蓋更多服務。

節省組合(Savings Bundles)

  • 定義與特點:AWS推出的另一種形式的承諾式折扣,如CloudFront Security Savings Bundle,結合了CloudFront和WAF的使用,提供整體性的折扣方案。
  • 適用範圍:目前已知的有CloudFront和WAF服務。
  • 優點:為客戶提供更全面的解決方案,促進多種服務的結合使用。

Azure 的承諾式折扣

Azure 提供了保留例項(Azure Reservations)和節省計劃(Azure Savings Plan)。

Azure 保留例項

  • 定義與特點:與AWS的RIs類別似,客戶透過預付一定費用來獲得特定資源(如虛擬機器)的折扣。
  • 適用範圍:涵蓋多達27種不同的服務和資源型別,包括虛擬機器、儲存、資料函式庫等。
  • 特點:提供了一定程度的靈活性,如可以在不同區域和系列之間交換保留例項。

Azure 節省計劃

  • 定義與特點:為客戶提供了一種靈活的承諾式折扣方式,類別似於AWS的SPs。
  • 適用範圍:可用於計算服務等。

重點比較與最佳實踐

  • 靈活性:SPs相比RIs提供了更高的靈活性,能夠更好地適應變化的工作負載需求。
  • 適用範圍:不同雲端服務提供商的承諾式折扣方案在適用服務範圍上有所不同,客戶應根據自身使用的服務選擇合適的方案。
  • 成本最佳化:有效利用承諾式折扣需要準確的預測和規劃,企業應結合自身的業務需求和未來規劃進行合理的成本最佳化。

程式碼範例:預測與規劃工具

import pandas as pd

def predict_usage(historical_data):
    # 歷史資料分析與未來使用量的預測
    df = pd.DataFrame(historical_data)
    # 簡單示例,實際預測可能需要更複雜的模型
    predicted_usage = df['usage'].mean() * 1.1  # 假設10%的增長
    return predicted_usage

# 使用範例
historical_usage_data = [{'usage': 100}, {'usage': 120}, {'usage': 110}]
predicted = predict_usage(historical_usage_data)
print(f"預測的使用量:{predicted}")

內容解密:

此程式碼範例展示了一個簡單的使用量預測函式。透過分析歷史資料,該函式能夠預測未來的使用量。企業可以根據此預測結果來決定是否採用承諾式折扣方案,以及選擇何種方案最為合適。函式使用了Pandas函式庫來處理資料,並簡單地假設了10%的增長率進行預測。

Azure 預留執行個體與節省計劃詳解

Azure 預留執行個體(Reserved Instances, RIs)

Azure 的 RIs 提供了一種成本最佳化方案,適用於多數虛擬機器(VM)系列,但不包括 A 系列、A_v2 系列和 G 系列。購買 RIs 時,需確認所選的 VM 系列在特定區域中是否支援此功能。

付款方式

Azure RIs 提供兩種付款選項:

  1. 一次性預付:類別似於 AWS 的「全部預付」模式,客戶需在期初支付整個合約期間的費用。
  2. 每月付款:類別似於 AWS 的「無預付」模式,每月固定日期扣款。與 AWS 不同的是,Azure 的預付與非預付模式的折扣比例相同。

執行個體大小彈性(Instance Size Flexibility, ISF)

Azure 的 ISF 與 AWS 的規範單位概念相似。同一大小系列群組內的執行個體會共用預留執行個體的折扣,無論預留的大小如何。例如:

  • 較小的預留執行個體可對較大的執行個體套用部分折扣。
  • 較大的預留執行個體可對多個較小的執行個體提供折扣。

每個大小系列群組都有對應的比例單位表,用於計算所需的預留單位數量。以 DSv3 系列為例(見表 17-3):

表 17-3:DSv3 系列比例單位表

| 規格 | 比例單位 | 規格 | 比例單位 | |


|



|


|



| | Standard_D2s_v3 | 1 | Standard_D16s_v3 | 8 | | Standard_D4s_v3 | 2 | Standard_D32s_v3 | 16 | | Standard_D8s_v3 | 4 | Standard_D64s_v3 | 32 |

透過分析一段時間內的 VM 使用情況,可以計算出所需的比例單位數量(見圖 17-5)。假設某段時間內使用了 29 個比例單位,就可以據此購買對應數量的預留執行個體。

Azure 節省計劃(Savings Plans, SPs)

Azure SPs 提供根據時間的承諾使用折扣,客戶可承諾一或三年的固定小時成本,最高可享受到 65% 的折扣。折扣幅度取決於承諾期限,而非承諾的時薪金額。

使用情境範例

  1. 使用量等於承諾金額:所有使用量均享有折扣。
  2. 使用量低於承諾金額:未使用的部分仍需按承諾小時費率收費。
  3. 使用量超出承諾金額:超出部分按隨用隨付價格收費。

Azure SPs 可自動套用到符合條件的資源,並支援一次性付款或月付,無額外費用。

從預留執行個體轉換至節省計劃

客戶可將現有的預留執行個體轉換為節省計劃,剩餘的預留價值將轉換為等值的時薪承諾。

Google Cloud 承諾使用折扣(Committed Use Discounts, CUDs)

Google Cloud 提供 CUDs 和 Flexible CUDs,前者針對特定資源型別提供最高 57% 的折扣(記憶體最佳化機型最高可達 70%)。CUDs 不限定於特定的 VM 例項或形狀,而是適用於整個區域內特定資源型別的總使用量。此外,Flexible CUDs 更進一步允許跨多個 VM 家族和區域進行承諾。

CUDs 的彈性

  • 可跨不同 VM 形狀、作業系統和租戶模式套用。
  • 可適用於一個區域內的所有可用區。
內容解密:

本章節詳細介紹了 Azure 和 Google Cloud 的承諾使用折扣方案,包括 Azure 的 RIs 和 SPs,以及 Google Cloud 的 CUDs。這些方案旨在幫助企業透過承諾一定的使用量來獲得成本上的節省。接下來,我們將探討這些方案的具體運作方式和優勢。

程式碼範例:計算 Azure VM 的比例單位

# 定義 DSv3 系列 VM 的比例單位
ds_v3_ratios = {
    "Standard_D2s_v3": 1,
    "Standard_D4s_v3": 2,
    "Standard_D8s_v3": 4,
    "Standard_D16s_v3": 8,
    "Standard_D32s_v3": 16,
    "Standard_D64s_v3": 32
}

# 計算總比例單位
def calculate_total_ratio_units(vm_usage):
    total_units = 0
    for vm_size, count in vm_usage.items():
        if vm_size in ds_v3_ratios:
            total_units += ds_v3_ratios[vm_size] * count
    return total_units

# 範例使用情況
vm_usage = {
    "Standard_D2s_v3": 5,
    "Standard_D4s_v3": 3,
    "Standard_D8s_v3": 2
}

total_units = calculate_total_ratio_units(vm_usage)
print(f"總比例單位: {total_units}")

內容解密:

此 Python 程式碼範例展示瞭如何計算 Azure DSv3 系列 VM 的總比例單位。首先定義了一個包含各 VM 大小對應比例單位的字典 ds_v3_ratios。接著定義了一個函式 calculate_total_ratio_units,該函式接收一個包含 VM 使用情況的字典 vm_usage,並根據 ds_v3_ratios 計算總比例單位。最後,透過一個範例使用情況展示瞭如何呼叫該函式並輸出結果。這樣的計算有助於確定需要購買多少預留執行個體以獲得最大化的成本文省。