雲端的成本優化 — 以指標來驅動
指標驅動的成本優化(MDCO — Metric-driven cost optimization)是衡量潛在的成本優化然後使用目的和目標指標來觸發運作流程的驅動程序。 當我們進行預購時,我們處於FinOps的維運階段。 借助 MDCO,我們可以根據指標來驅動我們的成本優化。
MDCO 也可以被稱為“懶人的雲端成本管理方法”。 MDCO 的主要規則是:Don’t do anything。 也就是說,在我們有衡量我們行動影響的指標之前,不要做任何事情。 如果我們進行優化但沒有指標來告訴我們它們對我們的支出是正面的還是負面的,那麼我們就不是在做 MDCO。
在本文結束時,我們就知道如何使用指標來正確地推動我們的成本優化。
核心原則
MDCO的實踐有以下幾個核心原則:
- 自動化量測 — 由機器量來量測,而不是人類。
- 目標(Target) — 量測沒有目標的話只是一張好看的圖。
- 可達成的目的(goal) — 我們需要正確理解數據以確定現實的成果。
- 資料驅動(Data driven) — 行動(Action)不會驅動我們的資料,而是資料會推動我們採取行動。
以下將逐一的介紹這些核心原則。
自動化量測
針對優化所進行的載入費用資料,產生報告與建議的這些作業應該是自動化產生的,或是由一個FinOps平台。當我們的雲端平台業者(以下簡稱CSP) 交付大量計費檔案時(或透過API),所有這些活動都需要自動化。 讓 FinOps 團隊/成員人工處理單次性的資料和產生報告會減慢 MDCO,並將導致對成本異常的反應。
可重複且可靠的資料處理使我們能夠專注於手頭的實際任務:省錢。 然後,我們可以花時間改進所遵循的流程,並更深入地了解成本優化計劃以及它們如何反映在資料/指標中。
目標(Target)
對於 MDCO,目標線(target line)是關鍵。 任何圖表都不應該沒有=目標線。 沒有它,我們只能確定有關圖表本身的基本資訊,而無法確定圖表對公司的意義。 目標線建立了一個閥值(threshold),我們可以從中得到告警和行動的觸發點。
可達成的目的(goal)
有幾個指標可以監控成本優化計劃。 正確追踪每個指標可以為我們的成本優化制定維運策略。 每個單獨的優化行動都會對我們實現的省錢產生不同的影響,因此我們不應該平等地對待所有優化行動。 在組合指標時,我們應該根據優化的省錢的潛力對資料進行正規化。
最常見的錯誤測量指標之一並且也可以幫助我們理解 MDCO 中可實現的目標是預購的覆蓋率。
有多種方法可以衡量成本優化效能,每種方法都代表一種特定的效率觀點。 根據我們使用的方法,可能無法實現 100% 的優化。 對於 MDCO,需要完全可實現的測量來確定進行行動的正確時間。
讓我們用預購的覆蓋率來更詳細地解釋這一點。
預購覆蓋率
預購覆蓋率是顯示用on-demand費率與預購費率各是收取多少使用量的指標。 通常公司會設定一個目標覆蓋率 — — 通常是 80%。 讓我們比較一下各種方法。
在傳統模型中,我們通過計算我們擁有的所有預購小時數,然後將該數字除於我們在該期間運行的總小時數來衡量覆蓋率(如下圖)。
儘管上圖中數學計算公式的覆蓋範圍是正確的,但這可能不是正確的方法。 使用雲端運算的彈性基礎架構,資源頻繁地來來去去,並且有一些時間不應該被預購資源給覆蓋,因為根本沒有足夠的使用時間來保證它。 理想情況下,我們不包括這些不可覆蓋時間的所有資源,我們可以測量可覆蓋時間的覆蓋率(如下圖)。
如果我們刪除上圖中不該計算進去的高峰點( H、F、G 和 E)的不可覆蓋時間,我們可以更清楚地了解真實的覆蓋率。 A 和 B 由預購覆蓋,資源 C、D 和 E 的小時數用on-demand的費率計算。所以若購買額外的兩個預購可提供 100% 的覆蓋率,兩個額外的預定將會節省資金。
到目前為止,我們一直將圖中的每一格視為相同的事物:B 與 A 相同,A 與 C 相同。但實際上,每一格(以小時或以秒計費)可能是一個大小差異很大的insatnce。標記為 A 的insatnce每小時可能花費超過 10 美元,而 B 可能花費 2 美分。我們為每個預購節省的金額將大不相同。首先,我們進行預購是為了節省開支,因此將它們作為一致的區塊來衡量 — — 當它們如此不同時 — — 會產生誤導性的結果。所以目標應該是計算出我們的覆蓋範圍實際上省了多少錢。
通過預購覆蓋的小時單元來實現可能的省錢更能清楚地顯示了預購對我們的雲端帳單的影響。通過每種insatnce type的相對省錢來調整圖表,我們最終得到了非常不同的畫面(如下圖)。
上圖顯示,我們實際上接近 76% 的可實現的省錢。 圖一中的原始評估顯示我們處於覆蓋率非常低的情況。 但是新的加權位置,也刪除了實際上不應該被算進被預購覆蓋的時間,實際表明我們的情況並沒有那麼糟糕。
關鍵的一點是,保留不同的資源可以實現不同數量的節省。 並非所有使用中的雲端資源都是可覆蓋的,因此將其全部包含在預購的覆蓋中會導致指標更難以設定目標。 但是,通過考慮可實現的覆蓋率,我們可以更準確地確定如何以及在何處進行改進。
省錢是對所有人都有意義的指標
將所有預購的省錢加起來,我們得出總體潛在節費的概念。 例如,讓我們假設圖三中的所有單元格在有預購的情況下每年將節省 一千萬美元(總體潛在節費)。 因此,一千萬美元中的 76% 是當前正在實現的節省量(已實現的省錢),剩下的 24% 未覆蓋並按On-Demand費率(未實現的潛在省錢)。
這又回到了 FinOps 的術語。 當我們從談論insatnce的小時數和預購覆蓋率轉移到“我們目前實現了 一千萬美元總體潛在節費的 76%”的地方時,這會向公司中的每個人傳達我們所處的位置以及我們可以在哪裡Walk(FinOps階段)。 此外,它無需深入了解預購的複雜性,並支援公司內的對話。 我們已經為相互理解創建了一個通用詞典。
指標結合
要確定預購的效能指標,我們需要衡量在特定時間區間內使用與未使用的預購量。 這稱為我們的預購利用率。 我們用時間為單位監控單一預購資源等級,測量預購對我們的資源使用量套用折扣的小時數(或秒數)與我們沒有用於預購的小時數(或秒數)的比例折扣。
但是,如果我們將預購利用率向上滾動以顯示一個整體效能指標,則可以隱藏單一個表現不佳的預購。 相反,我們衡量單一個預購並在它們個別表現不佳時發出告警。 讓我們看一下圖 中的一個例子。
我們使用上圖中的資源使用情況來確定我們的預購利用率,基於有七個預購。 我們可以看到前四個預購已被 100% 使用。 第五個預購有 90%,第六個有 80%,最後一個預購只有 50%。
如果我們只是計算平均利用率(100% + 100% + 100% + 100% + 90% + 80% + 50%)/ 7,我們得到 88.5% 的利用率。 從表面上看,88% 的整體利用率看起來相當不錯,不會有甚麼問題。 如果我們將目標利用率設置為 80%,則 MDCO 將反映不需要修改。 但請記住:有一個單獨的預購僅實現了 50% 的利用率,這值得我們關注並進行可能的修正。
資料驅動
多年來,技術團隊一直在使用指標方式來監控服務效能、資源使用和服務請求率等項目作為告警系統來運作他們的服務,當超過threshold或觸發事件並需要進行後續調整時會提醒團隊。
在沒有指標的情況下運行 FinOps 優化無法提供確定優化何時達到目標的真正方法。 事實上,沒有指標,我們甚至無法設定目標。 追踪的指標建立在我們在FinOps的生命週期文章中討論的迴饋循環之上。指標可幫助我們確定未優化或表現不佳的地方,以便我們進行改進。 換句話說,指標可幫助我們衡量成本優化節省了多少。
將 MDCO 應用於 FinOps 可以讓我們衡量成本優化的預期結果。 當指標顯示我們進行的行動未成功時,我們可以將其用作我們改進行動需要進一步調整的早期告警,或者我們可以將其調回上一動。
指標驅動與節奏驅動的流程
在雲端費用的省錢-運用RI與CUD這篇文章中,我們討論了圍繞 RI 的策略。 大多數公司在開始預購時會按計劃(每月、每季度甚至每年)購買他們的 RI。 我們稱之為節奏或進度驅動的成本優化。
如果我們用緩慢的周期來預購,我們最終會得到大量未覆蓋的使用量。 下圖 顯示了一段時間內的一些使用情況,藍色的部分顯示我們擁有的預購覆蓋率。 從圖中可以看出,RI 的購買是在一個相對固定的周期內發生的,並且在這些預購間隔之間,資源使用量持續增長。 通過更頻繁地購買 RI,我們可以獲得更大的節省。
但下圖顯示了一個更頻繁的 RI 購買計劃。 隨著時間的推移,購買頻率不是永遠都相同的,但由此產生的預購覆蓋率緊跟著資源使用增長,我們可以看到預購覆蓋率緊貼著資源增長。
定期性驅動的成本優化很容易開始,但繼續緩慢地執行採購會離省錢越來越遠。 但是,過於頻繁地查看預購則會導致浪費時間,因此我們需要取得一個平衡。
我們可以使用具有設定目標的指標來快速確定何時偏離了目標。
指標將僅在需要時觸發告警以執行優化。 MDCO 用於整個可用優化範圍。 正確衡量指標至關重要,以便在正確的時間觸發優化。 設定能夠實現的目標也很重要。
設定目標
對於某些指標,例如預購覆蓋率,我們可以先設定一個保守的目標,然後再努力提高目標,例如 80%。 然而,低的目標設定對利用率沒有意義。 將“低指標”模型用於預購利用率最終會花費超過我們可以節省的。
讓我們看看將指標應用於減少雲端資源使用量的方法。 刪除未使用的資源並調整未充分利用的資源的大小也會產生節費。 作為成本百分比的總體潛在節省稱為浪費百分比。 一個團隊每月花費 100萬美元,可能可以節省 5萬美元,可以說有 5% 的浪費。 或者,一個團隊每月花費 10萬美元和 2萬美元的可能的省錢將有 20% 的浪費。 以這種方式衡量團隊可以進行比較,並且可以為浪費設定通用目標。 當浪費超過設定的數量時,我們可以專注於減少它。
採取行動
我們提到 MDCO 包含 FinOps 生命週期的所有三個階段。我們已經展示了如何使用這些資料來建立可見性、衡量潛在的優化並根據這些數字設定目標,所有這些都是FinOps的告知和優化階段的任務,但是將這篇文章歸類為營運階段的部分。這是因為 MDCO 的成功取決於我們在設置 MDCO 的報告和告警並且這些告警被觸發之後我們所採取的行動,要求我們對優化效能的所需要變更做出回應。
如上面所提到,如果沒有明確定義的工作流程,我們就不太可能實現組織的 FinOps 目標。指定誰負責(R&R)處理 MDCO 告警、購買新 的預購等事項的正確批准流程以及修改和交換現有預購的正確操作順序是很重要的。在您的組織內有一個預購批准的採購計劃。
讓 FinOps 團隊可以根據需要自由進行預購 — 每月最多購買一定數量 — 減少了 預購覆蓋告警和購買更多的預購量以彌補短缺之間的時間差。改進流程有助於減少採取行動的延遲。
結論
指標驅動的成本優化涵蓋 FinOps 生命週期的所有三個階段,可見性和目標驅動的成本優化過程。 自動化在提供可重複和一致的流程方面發揮著重要作用。 總結一下:
- 所有成本優化都由指標驅動,所有指標都需要能夠實現的目標。
- 當指標偏離目標時,機器應該執行重複的資料分析和告警。
- 正在執行的所有變更都應反映在指標中。 最終的聖前應該是增加的,成本優化效率應該保持著很高的狀態。
- MDCO 是關於準確了解何時是執行優化過程的最佳時間。
MDCO 中有許多需要自動化的流程:產生報告和告警是兩個主要事項。 在 FinOps 中,還有許多其他可以自動化的作業。