本文作者:吳榮軍
雲音樂設計研發了 FinOps 一站式平台,滿足對成本洞察、優化和運營的需求,協同業務獲得最大的投入產出比。
背景
當前互聯網增長紅利消失,要實現 "正循環中,做大用户規模",就需要關注企業經營毛利和利潤,除去內容成本,技術側 IT 成本是非常大的一塊,過去一年(2022 年),雲音樂開始了技術側降本增效,其中雲原生、容器化主要做的事情包含:
- Horizon 一站式平台(雲音樂自研且已開源的容器部署平台),全面推進業務雲原生、容器化,實現資源精細化管理
- Serverless 技術支持在離線混合調度大幅提升了資源的利用
經歷了一年技術降本的實踐,總結髮現仍然有很多挑戰:
- 安迪 - 比爾定律:DevOps 提效,會出現典型的安迪 - 比爾定律,資源越容易獲取,用得也越多
- 成本關注較少:由於缺乏成本跟蹤運營管理平台,所以業務線、平台方也主要關注研發、質量、業務增長,沒有花太多的精力關注成本,而且對於沒有貨幣化的資源用量,對業務和開發來説,其實相對模糊和沒有 “概念” 的
- 一本大賬:底層基礎服務現在都是一本大賬算,權責不清,相關干係人很難盤活推進治理
- 增長控制難:底層技術側項目制的成本優化效果好,但是也很容易反彈,很難持續跟蹤和控制成本增長
- 缺乏平台支撐:缺乏統一的成本運營管理平台,數據散落,跟蹤大多依賴 excel 傳遞,效果和效率都不好
為了解決這些問題,結合音樂的現狀,我們學習和借鑑了當前比較流行的 FinOps 雲財務管理的理念:
FinOps 是一種不斷髮展的雲財務管理科學和實踐,通過數據驅動支出決策幫助財務、技術和業務團隊進行協作,使得組織能夠獲得最大的業務價值
本文將介紹雲音樂內部自研的 FinOps 平台,將從 成本洞察、成本優化、成本運營 三個角度説明 FinOps 提供的平台能力支撐,希望能給
一些希望開發類似平台的人一些經驗參考和啓發。
介紹
名詞解釋
- ROI:投資回報率(Return on Investment),是衡量投資項目盈利能力的指標。它通過計算投資項目的淨利潤與投資成本之間的比率來衡量投資的效益。公式為:ROI = (淨利潤 / 投資成本)* 100%。一般來説,ROI越高,説明投資項目的盈利能力越好
成本洞察
成本洞察主要包含資源跟蹤、成本可視化、成本分配和賬單管理,也就是發現成本問題。
下圖展示 FinOps 的基礎架構圖:
成本採集需要做到:
- 統一成本接入:集團內部服務、賬單系統是多樣紛雜,導致對應賬單和用量數據格式也不統一,Finops 首先需要解決統一數據接入的問題,對接外部系統,然後歸一化匯聚到 FinOps 系統。
- 資源貨幣化:對業務和開發來説,資源用量的多少和對應的成本其實相對模糊和沒有概念的,所以需要對內部服務產品進行定價、計費及統計,這樣讓業務和開發實際感知對應資源對應的成本,從而更好的驅動大家對項目 ROI 的評估。更多信息可查閲雲音樂技術團隊之前分享的這篇文章:雲音樂 KubeCost 助力 FinOps 降本增效
- 大賬拆小賬:有很大一塊成本都是沒有拆分的大帳,例如計算資源(如一台物理機上部署了多個業務的雲主機),內部的服務平台如發佈平台和大數據處理平台等,相關成本都是直接歸屬相關負責平台的技術團隊,上面業務並不感知這塊計算資源的成本,所以也沒有優化的動力
成本優化
可以通過 FinOps 查看到資源的利用率等指標,評估資源是否存在浪費,最後執行相關優化動作。
以雲原生為例,目前會給出 CPU 和 Memory 利用率的評級打分,如下表格,當前對於 CPU、內存利用率為P 不合格、B 糟糕、M 合格的,都建議進行優化到至少A 良好的標準
實際操作層面,基於負責人機制,我們設計了治理頁面,針對雲原生容器、大數據、PaaS服務等進行針對性的展示,如下為容器內存治理的界面:
每個進入頁面的人會看到自己名下有哪些待治理的集羣,昨日的峯值內存利用率如何,當前內存規格和推薦規格是多少,如果採用新的規格,每個月能節省的成本有多少,方便應用負責人針對性地進行優化,也展示了近14d待治理集羣數的變化趨勢,方便負責人驗收治理效果。部門負責人可以看到本部門下所有待治理的集羣,各個組員待治理集羣數的排名,方便跟蹤優化
成本運營
成本優化推進之後,如何長期控制增長,就依賴持續的成本運營,這裏驅動的基本邏輯就是:
-
首先 - 平台服務方:這裏主要包括容器、大數據、中間件等內部私有平台服務提供方
- 定價計費:貨幣化所有資源成本和收入,讓所有人切實感知成本,目前包括大數據、雲原生、中間件日誌服務等
- 模式轉變:服務平台從成本部門轉變為經營收益部門,驅動內部平台提供更有競爭力的服務,避免內部腐化
-
然後 - 業務線:
- 通過內部和外部平台服務統一分賬到業務線,業務線感知資源使用成本
- 再通過分析成本組成,進而可以計算業務 ROI
- 根據實際業務 ROI 情況,決策控制和優化資源用量
-
最後 - 開發:
- 收到來自業務線和平台服務方治理優化的需求,然後根據 FinOps 提供的利用率等手段進行評估和優化
這其中的核心就是通過 治理分權 + 數據驅動 去盤活所有干係人蔘與進來,進而全面建立成本和用量意識,持續改進運營流程。
(1)治理分權:FinOps 首先通過 類別(Category) 的功能,可以實現任意數據範圍的圈選,使得管理者、財務、業務負責人、一、二、三、四級部門負責人以及每一個開發都能看到自己相關成本和用量等數據,進而將治理分權下放給所有干係人
其中 Category 的核心邏輯是設計瞭如下 json 表達式來圈選數據範圍:
{
"and": [
{
"tags": {
"key": "department",
"values": [
"技術中心"
]
}
}
]
}
如上就表示圈選名為 “技術中心” 的部門下的所有成本、用量數據到一個類別下
(2)數據驅動:成本用量等數據貫穿整個運營的生命週期,所有干係人都根據數據指標來跟蹤和指導下一步動作。例如業務負責人根據成本評估 ROI;或者開發,可以根據其提供服務使用資源的利用率數據,識別出哪些資源浪費,進而可以推動優化,簡單的可以通過降配、閒置資源回收,複雜的可以升級架構來提升資源利用率,例如從固定副本數升級為 Serverless 彈性伸縮。
未來規劃
-
成本洞察:
- 成本分配:目前音樂內部僅有部分服務,例如容器,大數據、物理機、RDS 等已經將成本拆分到部門和業務線,未來還會和更多的服務提供方合作(例如 CDN、中間服務日誌、消息隊列等),通過標籤等方式,將資源用量和成本拆分業務線和部門,避免 “糊塗賬”
- 資源生命週期管理:資源掛到人頭上,確保業務線等必要的標籤打上且正確,實現資源從生產、轉移(業務變動、人員離職、轉崗)到結束的整個生命週期跟蹤
-
成本優化:
- 成本治理層面,目前探索了雲原生容器領域的治理實踐和閉環,後續將把經驗拓展到PaaS服務、大數據任務等更多的場景
- 架構治理:架構師團隊聯合推動一些技術架構治理和升級:例如切換至 JDK 17 部署等
-
成本運營:
- 通過責任人機制的建立高效推進各項資源治理 (所有Poor評價以及以下治理到Accept評價以及以上)
- 運營機制:設計獎懲,激發自主降本,保持良性循序
- 和內部其他核心平台聯動,如和CICD平台聯動展示成本信息和優化建議,將成本治理變成大家日常都可以輕鬆完成的事情
參考
- OpenCost: https://github.com/opencost/opencost/blob/develop/spec/opencost-specv01.md
- FinOps: https://www.finops.org/introduction/what-is-finops/
- Clickhouse: https://clickhouse.com/docs/en/intro
- 毛老師傾情分享B站FinOps實踐思路: https://www.bilibili.com/video/BV1ca4y1T7q8/?vd_source=b9faf4...
最後
更多崗位,可進入網易招聘官網查看 https://hr.163.com/