返回文章列表

雲端成本管理 FinOps實踐

本文探討 FinOps 雲端財務管理生命週期,涵蓋資訊透明化、成本分配、標籤策略、異常檢測及組織文化建設等關鍵環節。從成本可視性出發,闡述動態成本分配、標籤最佳實踐、FinOps 迴圈迭代、組織文化建設及即時資料監控等核心議題,並佐以實際案例與程式碼範例,提供企業在雲端成本最佳化方面的實用。

雲端運算 成本管理

FinOps 的核心目標是提升雲端成本管理效率,讓企業能更精準地控制和預測雲端支出。實踐 FinOps 不僅需要技術工具的輔助,更需要組織內部的文化轉變和流程最佳化。透過建立成本可視性、制定標籤策略和實施異常檢測機制,企業可以更好地掌握資源使用情況,並將成本分配到相關的業務部門。同時,FinOps 也強調持續改進和迭代,鼓勵團隊根據資料反饋不斷調整策略,最終實作成本最佳化和業務價值最大化。

資訊透明化階段:即時掌握雲端成本現況

在FinOps的資訊透明化階段,企業需要建立即時的雲端成本可視性,以確保能夠有效控制和管理雲端支出。這不僅需要技術層面的支援,更需要組織文化和流程的變革。

動態成本分配與變更管理

隨著企業組織結構的變化,成本中心的管理也需要隨之調整。企業需要考慮以下問題:

  • 如何動態調整成本分配結構,以反映組織變動?
  • 當團隊成員或應用程式在不同團隊之間調動時,如何確保相關成本資訊的正確分配?
  • 如何通知相關人員成本分配架構的變更?

標籤策略的最佳實踐

標籤(Tags)是FinOps中用於成本分配和管理的關鍵元素。企業需要:

  • 確定必要的標籤數量,並隨著業務需求的變化進行調整。
  • 評估標籤策略的有效性,找出需要改進的地方。

FinOps迴圈迭代與持續改進

FinOps實踐是一個持續迭代的過程。隨著企業的不斷成熟,需要提出更深入的問題,例如:

  • 哪些團隊正在推動成本增長?他們是否有效率地使用資源?
  • 是否有預算管理制度來控制團隊支出?
  • 如何最佳化承諾折扣策略(Commitment-based Discount)?

組織與文化建設

除了技術層面的工作外,建立FinOps文化還需要進行組織和文化建設,包括:

  • 與高層管理者協調目標和工作模式。
  • 幫助工程師瞭解成本效率對業務的影響。
  • 在各部門之間建立橋樑,推廣FinOps理念。

即時可視性與反饋迴圈

即時可視性是FinOps的一個關鍵要素。透過實時資料監控,企業可以及時發現異常支出,並採取相應措施。

異常檢測的重要性

異常檢測是FinOps中的一個重要功能。企業需要能夠檢測出與正常模式不符的支出,並及時處理。

案例分析

某跨國製藥公司的一個遠端工程團隊曾經啟動了三個大型例項進行測試,導致每天的成本超過3,000美元。幸虧該公司的FinOps團隊具備根據機器學習的異常檢測能力,才得以在當天發現並處理了這一問題。

資訊階段:雲端財務管理的基礎

在雲端財務管理(FinOps)生命週期中,資訊階段(Inform Phase)是理解當前雲端財務狀況的關鍵步驟。本階段的主要目標是建立對雲端支出、資源使用和成本分配的清晰可見性。

異常管理的最佳實踐

有效的異常管理是避免不必要支出的重要手段。異常管理涉及以下幾個關鍵步驟:

  1. 制定成本分配策略:這是異常管理的基礎,將在下一章中詳細討論。
  2. 定期檢查異常報告:可以透過自動化工具進行異常檢測和報告。
  3. 將異常分配給相關團隊:確保負責相關支出的團隊能夠及時處理異常情況。
  4. 建立異常工單的調查和關閉流程:這有助於快速解決問題,避免持續的財務損失。

許多組織因忽視異常警示或不知道如何處理異常而蒙受巨大的財務損失。異常管理的第一步是在資訊階段啟用異常報告,並定期檢查。

基準團隊績效

使用記分卡(Scorecards)來基準團隊績效是評估團隊表現的最佳方式。記分卡可以幫助識別表現最差和支出最高的團隊,並提供與行業其他公司比較的洞察。

記分卡應該顯示核心效率指標的改進機會,並為高階主管提供整個業務或部分業務的檢視,以便了解各個團隊的表現,並深入瞭解個別團隊的可行資料。

Intuit 的 Dieter Matzion 的記分卡方法

在一次 FinOps Foundation 的會議上,Intuit 的 Dieter Matzion(現任職於 Roku)分享了他的記分卡方法,主要包括:

  • EC2 效率:透過正確調整大小(Rightsizing)來評估效率。
  • 費率承諾計劃(Rate Commitment Program)覆寫率和效率:評估費率承諾計劃的有效性。
  • 彈性測量(Elasticity Measure):衡量團隊根據工作負載變化靈活調整資源的能力。

除了為每個團隊提供個別的記分卡外,Dieter 還建立了一個高階主管級別的檢視,將各個團隊的得分匯總。這種可見性突出了改進的機會,並推動了團隊的改進。

表現卓越的指標

要成為高績效組織,需要在多個關鍵指標上達到卓越的表現水平。下表展示了低、中、高績效者在公共雲中的表現差異:

指標低績效者中績效者高績效者
雲端支出可見性和分配依賴供應商發票和手動對賬,>1 天才能獲得部分可見性,且歷史資料保留有限<1 小時或接近實時可見所有支出,且保留所有當前和歷史資料實時可見性和精細分配
回報或收費(Showback 或 Chargeback)無法向團隊提供準確的雲端支出會計根據估計的使用情況向團隊分配雲端支出根據實際使用情況向團隊分配雲端支出
團隊預算無預算有預算但不追蹤支出有預算並追蹤支出
RI 和 CUD 管理0%-20% 的雲端服務透過預留購買40%-50% 的雲端服務透過預留購買80%-100% 的雲端服務透過預留購買
查詢和移除未充分利用的服務每幾個月一次每週一次自動化和策略驅動
單位經濟(Unit Economics)不使用或技術性指標(如每小時計算成本)更具商業導向的指標(如每個客戶的成本)

高績效者能夠快速詢問和回答有關其支出和預測的複雜問題,並進行情景分析以瞭解佈署變更對其單位經濟的影響。由於具有精細的可見性和雲端支出的分配,他們知道在哪裡尋找最佳化營運指標的機會。

資源分配:不遺漏任何一分錢

本章主要探討在分配雲端支出之前的關鍵決策。在組織內部,將雲端成本正確分配至相關業務部門的同時,將這些分配資訊回報給整個企業也能帶來諸多好處。

為何資源分配如此重要

將所有支出完全分配、標記的優點非常多。首先,你可以清楚知道誰花了什麼錢,避免了常見的雲端成本討論中出現的「那個資源不屬於我」的情況。更重要的是,你可以開始個別追蹤每個團隊的預測成長(相對於整個公司的支出),並為團隊設定預算,讓他們瞭解自己的預算執行情況,第13章將對此進行更詳細的介紹。

一旦建立了上述機制,你就能開始辨識異常支出的來源,以及哪些業務領域和工作負載導致了這些異常。瞭解資源的作用有助於我們開始進行智慧最佳化,考慮到環境特性和團隊的排程計劃。例如,是生產環境還是開發環境?你希望對各自的CPU進行多大程度的最佳化?與此同時,團隊每天都能獲得實際的支出狀況,這與財務團隊月底要向他們收取的費用相符。

“你應該朝向單位經濟學的方向,將預算責任交給團隊。中央團隊仍負責分配,但你希望透過收費和展示的方式,將責任推給邊緣的團隊,讓這成為他們的責任。中央團隊定義如何高效使用雲端。”
— Michele Alessandrini,YNAP雲端採用與治理負責人

資源分配使你能夠回答第10章中提出的關於雲端支出的業務問題。事實上,成本分配是業務價值與雲端支出之間的關鍵環節。當人們意識到自己的行為及其影響時,這種意識推動了精益文化。而正是收費和展示創造了問責制。

我們希望現在已經很明顯,「資訊收集」階段是「最佳化」階段的必要前提。然而,我們經常看到雲端新手不顧成本分配驅動因素的重要性和複雜性,就貿然投入到嘗試最佳化雲端環境成本的工作中。一個健全的層級帳戶策略和一個良好的標籤策略是任何成本分配策略的關鍵要素。但僅僅建立這些還不足以解決分配問題,因為分配可能是一個移動靶心。要考慮到未標記或無法標記的資源不斷出現,分享成本必須被計算在內,而且總是有可能在某個角落出現重組或報告方式的變化,這可能會打破精心構建的分配策略。

不同的人會有不同的需求。財務人員想知道支出去哪裡了,以及如何將其與SKU和產品有意義地聯絡起來。工程師關心的是可變消耗、個別服務成本,以及他們日常行為對賬單的影響。工程總監會關心多個檢視彙總成的一個全域性檢視。專家可能需要報告顯示不同資源型別或使用特定型別許可證的資源的使用細節。上下文至關重要。因此,在構建策略時,你需要考慮所有這些不同的需求和視角,建立適合所有這些不同角色的分配結構。

當然,我們也不能忘記業務指標。你的策略必須讓團隊能夠將業務指標與其支出聯絡起來,從而實作單位經濟學,並開展關於支出對業務價值的討論。

攤銷:應計世界

回想第4章中介紹的匹配原則:它指出費用應在收到價值的期間記錄,而不一定是在雲端供應商開具發票的期間。

這裡要考慮的會計原則是採用現金基礎還是應計基礎報告。前者意味著你在費用發生的期間報告支出,而後者則表示你在實作利益的期間報告支出。這適用於某些根據承諾的折扣等計費結構,這些折扣有預付款,其中一部分初始費用需要轉移到承諾使用的時候。

這種「攤銷」類別似於許多本地佈署世界中熟悉的硬體折舊概念,但這裡它特別適用於無形資產。如果不將前期成本攤銷到使用時(在哪裡),就會對即時支出資料產生混淆和懷疑。營運人員會誤以為他們的花費少於實際數額,而會計部門在收費之前應用攤銷後,往往會帶來令人不愉快的驚喜。

在圖11-1中,底部的現金基礎報告圖表顯示了未攤銷時的支出波動情況。圖表頂部的應計基礎圖表顯示了攤銷後的支出趨勢變得更加清晰。

圖11-1:攤銷前後的月度成本變化

此圖示展示了攤銷對於理解實際支出趨勢的重要性。透過將成本攤銷到正確的時間段,可以更準確地掌握支出的實際情況,避免因未攤銷而導致的誤解。

圖表翻譯: 圖11-1中的兩個圖表分別展示了未攤銷和攤銷後的月度成本變化。上方的圖表顯示了在應用攤銷後,成本趨勢變得更加平滑和可預測,而下方的圖表則顯示了未攤銷時的成本波動情況。這種對比突出了攤銷在準確反映成本方面的關鍵作用。

雲端成本分攤:確保每一塊錢都算清楚

在雲端運算的世界裡,成本管理是一項複雜的任務。企業需要了解如何有效地分攤成本,以確保資源被合理利用。在本章中,我們將探討雲端成本分攤的重要性,以及如何建立一個有效的成本分攤策略。

承諾型折扣的攤銷計算

承諾型折扣是一種常見的雲端成本文省方式。企業透過預先承諾使用一定量的資源,可以獲得折扣。以下是如何計算攤銷和節省的簡化例子:

  • 隨需資源的時薪為 $0.10。
  • 預留資源需要預先支付 $200,然後在使用時每小時支付 $0.05。
  • 攤銷費率的計算方式是將預先支付的 $200 除以一年(365 天 × 24 小時),再加上每小時 $0.05 的費率。

$200 ÷ (365 × 24) + $0.05 = $0.073

  • 節省金額是隨需費率與攤銷費率之間的差額。

$0.10 - $0.073 = $0.027 每小時,節省約 27%

內容解密:

  1. 承諾型折扣的核心概念:企業透過預先承諾使用量來獲得折扣。
  2. 攤銷費率的計算:將預付成本平均分攤到每小時的成本中,並加上使用時的費率。
  3. 節省金額的計算:比較隨需費率與攤銷費率,計算出每小時的節省金額。

建立良好的會計和稽核能力

良好的帳戶架構和標籤策略不僅能實作完整的成本分攤,還能提高稽核能力。標籤策略可以幫助企業建立更準確的預測模型,因為資料更加豐富、準確和細化。

“資源標籤正確,能夠提高雲端支出的稽核能力。” - Darek Gajewski,Ancestry 的首席基礎設施分析師

為什麼標籤策略如此重要?

  1. 提高稽核能力:正確的標籤有助於會計部門稽核每一筆支出。
  2. 建立信任和善意:標籤策略有助於營運和財務部門之間的合作。
  3. 減少反彈:當資料更加透明和準確時,團隊能夠更好地達成公司的目標。

“費用驚慌”的臨界點

許多企業在雲端使用初期缺乏成本監控,直到支出達到一定規模才引起高層的注意。這種情況可能導致“費用驚慌”,使得技術團隊措手不及。

如何避免“費用驚慌”?

  1. 自動化成本監控系統:建立自動化的成本監控系統,能夠預測支出趨勢。
  2. 可擴充套件的成本分攤策略:建立可擴充套件且易於更新的成本分攤策略,避免與業務長官者的衝突。

分攤分享成本

企業通常有多個業務部門分享 IT 成本。隨著公有雲資源的使用增加,如何公平地分攤分享成本成為一項挑戰。

如何處理分享成本?

  1. 中央 IT/雲端團隊預算承擔:一些企業選擇由中央 IT/雲端團隊承擔支援費用。
  2. 分配給業務單位:更常見的做法是將成本分配給業務單位或應用程式擁有者。

現代架構帶來的挑戰

現代架構引入了更多分享成本,例如分享平台。這些平台涉及多個團隊使用相同的核心資源,如 S3 儲存桶或 Kubernetes 叢集。

如何應對這些挑戰?

  1. 建立清晰的成本分攤規則:確保每個團隊瞭解如何分攤分享成本。
  2. 使用標籤和帳戶架構:利用標籤和帳戶架構來區分不同業務單位的成本。

分攤分享成本:企業財務管理的關鍵

在分享叢集上執行的系統中,如何進行成本分攤是一個重要的課題。乍看之下,對於這些平台的收費回饋(chargeback)和成本展示(showback)似乎是不可能的任務,但關鍵在於正確的標籤和分享成本的分攤。

分享成本分攤的三種方式

  1. 比例分攤:根據直接成本的相對百分比進行分攤。
  2. 平均分攤:將總金額平均分配給各目標。
  3. 固定分攤:使用使用者定義的係數(係數總和需為100%)進行分攤。

成熟的組織通常會根據業務部門的直接費用比例來分配分享成本。讓我們考慮一個例子。表11-1顯示了一個組織在某個月份中各業務部門的消費金額,以及該組織被收取的1萬美元企業支援費用。

表11-1:集中式支援費用的成本分配示例

業務部門成本佔總成本百分比(不包括企業支援費用)
銷售營運5萬美元50%
工程—QA3萬美元30%
工程2萬美元20%
企業支援費用1萬美元
總計11萬美元100%

在不分攤企業支援費用的情況下,可以看到:

  • 銷售營運將負責總計5萬美元。
  • 工程—QA將負責總計3萬美元。
  • 工程將負責總計2萬美元。
  • 1萬美元的企業支援費用不會被分配給各團隊,需要被分配到中央預算。

表11-2:攤銷支援費用的成本分配示例

業務部門分配金額分配百分比
銷售營運5.5萬美元50%
工程—QA3.3萬美元30%
工程2.2萬美元20%
總計11萬美元100%

在比例分攤模式下,企業支援費用(1萬美元)將根據業務部門的原始支出百分比進行分配。可以看到:

  • 銷售營運將負責總計5.5萬美元(5萬美元直接成本 + 5千美元支援費用分攤)。
  • 工程—QA將負責總計3.3萬美元(3萬美元直接成本 + 3千美元支援費用分攤)。
  • 工程將負責總計2.2萬美元(2萬美元直接成本 + 2千美元支援費用分攤)。
  • 企業支援費用已被分配,不會影響中央預算。

收費回饋與成本展示

在FinOps社群中,關於何時進行收費回饋或成本展示一直存在討論。兩種方法都能提高責任感,但需要了解它們之間的根本區別。收費回饋是指實際發生的成本被分配給個別團隊的預算或損益賬戶(P&L)。成本展示則是指向團隊展示他們的支出,但資金是從中央預算內部分配的。

Barry Whittle的一篇文章很好地總結了兩者的區別:

「成本展示會在分析桌上留下一張賬單;而收費回饋則會留下相同的賬單,但要求付款。」

在實踐中,兩者之間的選擇往往取決於組織的會計要求,而不是其成熟度。企業通常會根據部門損益表的組織傾向選擇其中之一。

結合多種模式以滿足需求

Ally Anderson分享了她的公司如何結合收費回饋和成本展示。當面對客戶的SaaS工作負載時,公司會進行成本展示,同時集中管理預算。然後,對於某些研發工作負載,他們會對特定團隊的P&L進行收費回饋。

程式碼示例:計算成本分攤

def calculate_cost_allocation(total_cost, department_costs):
    # 計算各部門的成本佔比
    total_department_cost = sum(department_costs.values())
    department_percentages = {department: cost / total_department_cost for department, cost in department_costs.items()}
    
    # 按比例分攤分享成本
    allocated_costs = {department: total_cost * percentage for department, percentage in department_percentages.items()}
    
    return allocated_costs

# 示例資料
total_enterprise_support_charge = 10000
department_costs = {
    'Sales operations': 50000,
    'Engineering—QA': 30000,
    'Engineering': 20000
}

allocated_costs = calculate_cost_allocation(total_enterprise_support_charge, department_costs)
print(allocated_costs)

內容解密:

此程式碼示範瞭如何根據各部門的直接成本比例來計算分享成本的分攤金額。首先,計算各部門的成本佔比,然後按比例分攤分享成本。最後,傳回各部門的分攤金額。

圖表示例:成本分攤流程

@startuml
skinparam backgroundColor #FEFEFE
skinparam componentStyle rectangle

title 雲端成本管理 FinOps實踐

package "系統架構" {
    package "前端層" {
        component [使用者介面] as ui
        component [API 客戶端] as client
    }

    package "後端層" {
        component [API 服務] as api
        component [業務邏輯] as logic
        component [資料存取] as dao
    }

    package "資料層" {
        database [主資料庫] as db
        database [快取] as cache
    }
}

ui --> client : 使用者操作
client --> api : HTTP 請求
api --> logic : 處理邏輯
logic --> dao : 資料操作
dao --> db : 持久化
dao --> cache : 快取

note right of api
  RESTful API
  或 GraphQL
end note

@enduml

圖表翻譯: 此圖示展示了成本分攤的流程。首先,收集各部門的成本資料;然後,計算各部門的成本佔比;接著,按比例分攤分享成本;最後,傳回各部門的分攤結果。

雲端成本分配的挑戰與 FinOps 實踐

在雲端運算的環境中,成本分配是一個複雜且持續的挑戰。Ally 的經驗表明,將支出分配給不同的團隊需要將數十個分散的帳戶對映到相關的產品和成本中心。然而,在進行大規模重組後,團隊很少會拆除雲端資源並在不同的帳戶中重建,以匹配新的組織結構。這是 FinOps 實踐中的一個重要步驟。

帳戶、標籤和帳戶組織層級

每個主要的雲端服務提供商都有一系列的元素,當這些元素一起使用時,可以建立一個成功的雲端成本分配策略:

帳戶層級

工程師如何將基礎設施放置在 AWS 帳戶、Google Cloud 專案和 Azure 訂閱中,形成了成本分配策略的第一層。個別帳戶可用於隔離不同環境或應用程式的成本。

帳戶命名

在組織的雲端旅程早期,經常被忽視的是建立一個帳戶命名標準,以記錄有關帳戶用途的詳細資訊。目標是包含諸如產品和環境等詳細資訊,例如「productA-production-01」。FinOps 從業者應鼓勵組織建立一個中央檢查點,以確保遵循此命名過程。所有帳戶請求都應透過中央流程進行。

標籤

大量使用標籤和標記,尤其是在具有多個應用程式或業務部門的帳戶中。跟蹤雲端資源的部門或成本中心的標籤鍵對於 FinOps 尤其有幫助。標籤有助於將帳戶內的支出劃分為不同的群組。要求將標籤應用於所有資源,並使用各種級別的主動執行。


#### 範例:AWS 帳戶標籤使用
- **Key:** Department
- **Value:** Marketing

內容解密:

此標籤用於區分不同部門的雲端資源,有助於成本分配和報告。透過這種方式,可以輕鬆地識別哪些資源屬於哪個部門,從而更好地管理雲端支出。

跨帳戶的分享成本

FinOps 從業者面臨的一個常見問題是如何在雲端世界中分配中央成本。需要拆分和分攤諸如批次折扣、企業支援和 RI 預付款等成本。在帳戶內部,Kubernetes 基礎設施、網路成本、監控和日誌系統等分享成本也需要由 FinOps 處理。

Showback 模型實踐

Showback 的關鍵是將成本清楚地回饋給團隊,讓他們知道自己花了多少錢,並向每個團隊展示他們的實際支出與預測支出之間的差異,以及與預算的比較。每週、每月和每季度提供 Showback 報告,以及更細粒度的成本驅動因素和異常報告。

範例:Showback 報告格式

團隊名稱實際支出預測支出差異預算
Team A$1000$800$200$900

內容解密:

此表格用於展示每個團隊的實際支出與預測支出之間的差異,以及與預算的比較。這有助於團隊瞭解自己的支出情況,並及時調整預算。