成本優化=>運營優化的完整閉環。通過效能數據、成本賬單、持續優化和運營等關鍵行動,達成了業務增長而IT成本金額不增長,為公司節省了數億成本。">

當前,降本增效是各大互聯網公司的重要方向,IT成本則占據了互聯網公司成本的大頭。如何有效的降本?如何推動各業務線配合?如何平衡成本、質量和效率?本文將介紹B站的IT成本管理和優化的思路,介紹B站通過落地FinOps,推進成本洞察、技術優化和運營優化,提升資源效率的經驗。2022年,在B站DAU穩步增長的情況下,IT成本花費金額低于21年同期,為公司節省了數億成本。項目團隊也獲得了公司2022年度技術突出貢獻獎。
IT的成本管理主要是針對預算的管理,每財年開始的時候完成整個財年的預算編制。在預算編制的過程中,將業務目標轉化為成本,結合技術優化方案,定下來降本目標。業務增長目標加上降本目標得出成本目標。

預算定好了,降本目標也定好了,那是不是按部就班的執行就好了?這中間暴露出來幾個問題:
其中最重要的是最后一個問題,業務對資源效率和成本無感知,那么降本的收益也就難以評估,業務的降本動力就會不足。
既然降本目標已經下達,行動就迫在眉睫。
一開始我們延續傳統思路,提到降本增效,第一反應就是各類資源利用率。與所有互聯網公司的敏捷性相同,我們基于內部的平臺和資源,整合監控系統、資產管理系統、混合云HCRM系統等基礎數據,使用數據平臺的數倉能力,快速搭建了資源數倉、數據看板與告警機制。基于歷史數據,希望支持業務資源預估和制定降本目標等活動。
根據B站的成本占比數據,我們重點設立了核心關注的是帶寬資源和計算資源的利用率相關指標。
當前我們已經實現,針對對不同供應商,將同類資源的不同指標進行歸一化,例如多云場景下不同云廠商的指標對齊。對于GPU這類資源,還會考量訓練、推理等不同場景下的利用率等。
為了更好的聯動其他團隊,我們還給公司內各類技術中臺建立效能模型,注重計算、存儲等各類平臺模型都有不同,以容器平臺為例:

關注以上指標,可有效評估容器平臺的資源效能,支持平臺做資源水位線管理,度量使用效率和技術優化空間。
經過一段時間的實踐,盡管拉著資源使用者聊利用率、巡檢各部門空閑機器、甚至定期制作各類排名榜單,我們還是發現降本工作推進緩慢。技術中臺與業務部門間難以聯動、研發人員缺乏成本意識、無法量化降本產出等核心問題依舊難以解決。
那段時間,碰上行業內越來越多公司開始重視降本增效,在與其他公司的相關從業者多次交流討論后,一個概念逐漸出現到我們眼前——FinOps(Financial Operations)。
按照FinOps Foundation給出的定義,FinOps是一種不斷發展的云財務管理規范和文化實踐,通過幫助工程、財務、技術和業務團隊,基于數據驅動,在支出決策上展開合作,使得組織能夠獲取最大的業務價值。
當前云原生成為技術選型的共識,B站內部平臺和系統也大多選擇了云原生的道路。B站的云原生是搭建在私有云、公有云的多云環境上的,其中私有云底層資源為租賃IDC和自有服務器資產。FinOps的整個框架不僅適用于公有云上的資源和成本管理,也同樣適用于私有云,整體的工作思路和邏輯是一致的。

從上面FinOps Framework可以看到,參與Finops的角色很多:
做為FinOps實踐者,需要聯合業務、平臺、運維、基礎工程、財務和采購團隊一起,對IT成本進行有效管理和優化。
FinOps的生命周期分為三個階段:
在反復研究相關理論后,我們定下了B站基于FinOps視角下降本的實驗路徑:

所有技術需求的開展都離不開其底層資源,而各類IT資源的成本,需要納入財務對各業務線的ROI考核中。但在之前很長一段時間內,業務線可能只有一個預算的大概數字,并不了解細節,自然也不能引起重視。也就沒有量化分析的基礎,很難明確優化的目標和方向。
為了更好的衡量技術成本,將每一筆IT資源的采購成本,折算到每個業務甚至每次活動中,為了讓每個業務線都能清楚錢花到哪里去了,了解其IT成本及具體構,我們首先引入財務中的兩個概念。
想要將CAPEX轉化為OPEX,就需要計算TCO(Total Cost of Ownership),將采購硬件資產的一次性成本分攤到該資產的生命周期里。以一臺服務器為例,直接采購成本即為CAPEX,將采購成本分攤到今后使用的每個月,再增加服務器每月配套使用的其他資源成本,即可得到TCO模型:

B站的業務搭建在公有云和私有云上,想要各個業務了解成本,需要公有云和私有云都能計費和拆帳。將IT資源和對應的成本掛鉤。技術中臺想要和公有云一樣具備計費、出賬和對賬的能力,則需要統一設計和升級。各技術中臺需設計計費的SKU(即平臺售賣的產品),定好價格策略,然后統計各業務的資源用量,最終實現向內部業務計費出賬。
SKU設計時即考慮和公有云平臺對齊,以便和公有云成本對比。又需要兼顧公司的實際業務場景需求。例如,容器平臺的一種CPU產品定價模型如下:

對于其他技術中臺的SKU,基本適用以上“單價=SKU對應TCO/理論總服務量“的模式。由于技術中臺沒有盈利壓力,賬單只是為了合理的反應業務成本,推動業務提升使用資源的效率,所以平臺資源利用率的提升讓可售賣的資源更多了,降低了單個資源的單價,業務從成本上也能受益。
成本=單價*用量。單價有了,接下來需要確定業務各SKU的計費用量了。我們大致將用量的統計方式分成了兩類,共享與獨占。還是以容器平臺的上述SKU為例:

在實際計算中,即使A(獨占類)、B(共享類)兩個服務實際消耗的CPU相同,A的計費用量也會高于B的。因為A所在資源池就算無服務運行,其獨占的特性也使其他服務無法調度進來,造成浪費。因此在成本量化上,按其資源池理論最大使用量進行收費。相對的,共享資源池內的空閑節點可調度其他服務,按服務實際申請容器的limit進行收費。
通過區分獨占、共享用量統計邏輯,更多的業務方選擇收費更低的共享類資源,服務器資源的歸屬逐漸從業務方,轉向技術中臺,這使得中臺承擔更多的容量管理工作。原本在公司采購服務器流程中:預估業務目標->轉化機器數量->提出采購需求->中臺交付資源,技術中臺不會過多參與整機數量評估,業務需求采買多少服務器,中臺最終就交付、托管多少臺的服務。
而現在,整個流程改進為:預估業務目標->中臺轉化算力需求->評估全局算力缺口->提出采購需求。中臺會收集各業務需求,再結合自身存量資源,提出缺口算力對應的采購需求,從而減少資源采買。
“成本=單價*用量”,可以從折舊(Opex)的角度,客觀反映出平臺空閑與超賣情況,推動技術中臺和業務協同優化,并量化成本收益。
雙方齊頭并進,合作共贏,優化IT成本。

賬單生成好了,下個主要問題是讓業務負責人了解賬單并Review成本,從而確定后續優化方向。賬單的確認流程由統一的出賬系統實現,具體成本分攤的規則、資源定價和出賬的流程都在系統里定義。系統里還有各類資源IT成本模型,能夠量化資源與成本關系,最終將每一種IT成本以統一的形式發送給業務方。
依托于出賬系統,公有云和私有云成本都能在統一的賬單里展示,業務查看賬單就能知道完整的IT成本構成。每月各業務技術負責人在收到系統推送的賬單后,需完成對賬Review,并在系統中確認賬單。如對賬單細節有疑問可在系統中標注反饋,出賬平臺將修正賬單。
這里其實包含了很多的溝通成本,業務剛開始收到一份賬單,是很難看懂賬單的,需要有人"翻譯"一下。業務是業務視角,賬單是資源視角,一個業務或者一個功能對應到哪些資源上,各類資源的含義都需要解釋和說明。
對賬中最困難的其實是“資源歸屬業務”的準確性問題。挑戰來自公司組織架構的各種調整,業務和資源的不斷變化,還有歷史包袱,有些歷史資源歸屬不清等等。
為確保歸屬的準確性,歸屬映射關系從服務樹(CMDB)同步。每一個微服務應用都有自身的APPID(Application Identification)。出賬系統通過APPID來進行應用的唯一定位與關聯相關資源的項目、部門和負責人等信息。基于CMDB的APPID(服務/應用粒度)=>項目=>組織架構=>業務的關系,實現多維度的成本視角,應用視角,部門視角或者業務視角。
非服務樹(CMDB)支持的資源,則通過各平臺自身維護的歸屬映射,以實現多種方式的成本歸屬。例如大數據平臺基于工作空間的歸屬關系。
與此同時,成本數據的實時性也影響到成本監測和優化分析的有效性。日級別或者更加實時的賬單,能協助業務快速發現和定位成本問題,及時調整項目投入。提升實時性也是后續賬單系統的迭代方向。

總結一下,整個流程就是:**平臺出賬=>業務對賬=>賬單分析=>針對性優化=>優化效果反映到下一出賬周期的資源對賬,這樣一套閉環流程。**通過對賬,將IT成本及時同步給Finops中各類干系人,強化成本責任制,為IT成本優化決策提供數據支撐。同時反映IT成本優化效果、預算執行情況等指標。
成本賬單有了,效能大盤也有了,接下來該在哪些方向上推進成本優化呢?如何有效推進成本優化落地呢?
首先讓我們來分析一下成本數據。B站的主要業務是點播、直播、電商、游戲等,做為一個以視頻為主的網站,B站的每年IT成本花費中,帶寬占比最大,其次是硬件,最后是公有云&其他IT服務類成本。想要做到成本優化的收益最大化,那么在各類成本資源項上都需要投入優化。
從業務角度看,不同的資源需求有著不同的成本模型。
從資源角度看,不同的計費方式有著不同的優化思路。
帶寬成本是成本的最大頭,從使用角度可以分為點播帶寬、直播帶寬、Web帶寬。其中Web帶寬又細分為動態帶寬和靜態帶寬。
(1)點播帶寬成本模型
下面以點播帶寬舉例,點播帶寬的成本模型如下:
點播帶寬成本 = 平均單次播放帶寬 點播播放次數 帶寬單價。
(2)點播帶寬優化思路
從上述簡化的模型分析可以分析出點播帶寬的優化主要是思路是降低碼率和降低單價,實際推進的優化項目主要如下:
除了點播帶寬,上述的直播、Web動態、Web靜態都同步推進優化,思路也是從成本模型數據分析出發,優化前核算成本,優化后驗證收益。
服務器硬件優化不同于帶寬,主要使用利用率來衡量優化效果,同時采用TCO或者Opex來核算和評估技改優化方案。
(1)服務器硬件迭代
硬件的迭代速度是飛速的,每一次的硬件迭代,也刷新了單位算力的成本的下限。既然新的硬件更有成本優勢,那么應該盡量引導業務配合硬件升級,每個硬件代次的迭代成本優化效果都是非常顯著的。
同時,硬件功耗的增長也是飛速的,機柜從3KW、4KW、8KW到10KW,機柜和電力成本優化的收益也會非常可觀。在IDC的布局和選擇上,可以選擇更加廉價的資源,將接入的POP點和IDC解耦,以達到性能和成本的最優。
(2)服務器虛擬化和混部
基于K8S構建的私有云容器平臺,是服務器成本優化的主力。平臺也發表過多篇文章分享混部和VPA技術。讓我們來整體看下優化思路,還記得前面講的效能模型嗎?容器平臺的優化就是基于資源的效能模型。

提升容器總資源量:將服務器資源盡量都容器化,讓更多的業務都搭建在容器之上,不止業務應用,其他的技術中臺的應用也要盡量接入到容器平臺中。
提升池化率(可售賣的資源量/總資源量):提高池化率主要是在有限的資源上,盡量增加可售賣的資源量,讓更多的資源都是通過統一的容器調度。
提升分配率(已售賣的資源量/可售賣的資源量):不同分配率的資源池可以考慮合并,減少資源碎片和冗余。
提升利用率(使用資源量/已售賣的資源量):利用率不足將造成資源的極度浪費,通過建立應用畫像,利用超賣、VPA、HPA等有效手段,資源利用率得到大幅提升。
除了以上的手段,混部也是提升利用率的一大利器。利用不同業務的潮汐效應,分時復用資源。轉碼做為算力密集型業務,最早嘗試混部。目前B站已經對離線-離線,在線-離線間進行了混部,也有相關的技術分享文章。
當前在推進的主要是AI場景下的混部,也就是推廣搜業務的混部。AI業務不僅是計算密集型,訪存帶寬也非常高,會觸達硬件瓶頸,造成雪崩效應,因此混部策略需要更加謹慎。
不同于服務器資源,公有云承擔彈性保障、降低延遲、海外部署等用途。而公有云的成本優化,是為在支持業務正常發展的前提下,最大程度使用公有云資源即買即用的特性。
根據資源類型與其對應的計費方式,公有云上資源大致可分為網絡流量、云服務器等IaaS資源、云上SaaS服務等資源。不同資源,需對癥下藥。
(1)根據業務特性適配資源
云上項目根據業務特性,會產生波形截然不同的網絡流量,而云廠商提供的網絡流量產品也根據特點還有不同的計費方式。需同時考慮此二者關系,才能做到網絡成本最優。
常見的網絡類產品計費模式有按帶寬計費和按流量計費:
除計費模式外,網絡線路類型也有不同選擇,例如動態BGP、靜態BGP、三大運營商單線、公網或混合云專線等,會讓成本有較大差異,同樣需要根據業務的架構方案及成本模型進行選擇。
在此基礎上還可考慮其他策略,例如將多個項目的網絡流量放進一個共享帶寬包,可實現帶寬的共峰收益。
(2)預先規劃與定期釋放
IaaS類資源多以實例*使用時長的形式計費,因此可在申請階段就控制新增資源量。大型項目的容量、實例組合和付費策略在申請時就要求有明確規劃。
申請方提交資源需求后,FinOps各方會基于業務特點、成本等考慮,確定供應商、地域、資源型號等事宜。
(3)自研or公有云
通常情況下,公有云的SaaS類服務擁有快速部署、簡易維護等優勢,但相較自建乃至云上IaaS產品會有更高的定價。
同類自研產品在公司內私有云已投入大量前期成本,擁有較為成熟的技術積累和專業運維團隊,在經過一定的標準化改造,可滿足云上同類產品的功能需求。而對于自研暫無法替代或改造收益不高的產品,會通過調整使用場景、計費方式或尋找價格更優的同類產品替代。
隨著B站自建機房節點與傳輸網絡建設程度提升,后續更多云上項目可復用基礎服務和基礎設施,做到常量私有云+公有云混合部署,突發公有云彈性兜底,實現此類服務的混合云方案。基于上述執行辦法的實踐,B站的自研HTTPDNS域名解析、DSA動態加速等服務,已節省超過一半的成本。
如下圖,IT成本除了帶寬、服務器、公有云,還有很多其他資源成本,各項成本FinOps都需要分析并推動優化。在分析和推進的過程中,形成了一套完整的成本模型。隨著業務不斷的發展,成本模型和優化方案也在不斷進步。

運營優化是圍繞兩個方面開展的:
成本運營,依托于預算、成本賬單和成本模型,及時和各方同步成本情況和問題。
資源運營,依托于資源效能大盤數據,及時發現并制止資源浪費現象。
1、成本運營
預算控制:為了降本做到極致,達到成本最優,預算控制需要更加嚴格。預算實際執行采購的時間可能和預算規劃時間已經間隔比較長了,內部和外部都發生了變化,需要及時根據變化進行調整,盡量減少金額。
決算分析:每月基于賬單數據進行成本分析,將超預算或者其他有改進空間的成本項進行重點溝通,溝通范圍為業務研發負責人、基礎平臺負責人、財務、采購等FinOps各角色。對超預算的風險進行預警,共同商議改進措施和策略。
賬單分析:協助業務理解賬單,從業務角度觸發,分析單DAU成本,為業務降本提供指標和決策依據。
成本核算:對于技術改造的新方案或項目,構建成本模型,決策出成本改進的最優解。
成本決策:成本的模型搭建不難,難的是如何在追求成本更優的情況下,兼顧穩定性和效率。成本優化通常伴隨著技術升級和技術改造,大量的人力投入會影響原來計劃的迭代效率,系統升級也常常會帶來不穩定因素。追求廉價資源的使用,也會影響系統的質量,需要系統設計上能考慮到容錯和兜底策略。總的來說,如果沒有強有力的管理層做成本決策,降本增效的效果將會大打折扣。

2、資源運營
公有云主機:結合利用率監控、混合云平臺及供應商賬單數據,需要監控資源效能情況,發現不合理的冗余容量、不再使用的資源,及時推進縮容、降配等操作。
公有云服務:資源巡檢過程中,若發現無人認領、未清退完全的資源,例如閑置未掛載的卻仍在計費的云硬盤,歷史悠久的快照等,會定期公示并清退。
IDC服務器:對于利用率極低的服務器,推進納入容器的資源池中,盡量容器化。
其他資源:各服務使用的合理性也需要運營同學關注,例如超長短信會拆成多條計費,合理設計短信模板,能節省大量成本。
B站通過對FinOps的實踐,實現了成本洞察=>成本優化=>運營優化的完整閉環。通過效能數據、成本賬單、持續優化和運營等關鍵行動,達成了業務增長而IT成本金額不增長,為公司節省了數億成本。后續FinOps將繼續在實時數據驅動決策、成本預測等方向繼續探索,追求更加極致的IT成本,提升毛利率。
參考資料
作者丨葉翠、馬永智 來源丨公眾號:嗶哩嗶哩技術(ID:bilibili-TC)