歷時三個多月的HBase成本優化專案按照預期交付了,HBase雲資料庫月度成本下降了32.5%,超出預期達成目標。
我們對本次HBase成本優化專案進行深度覆盤,並進一步嘗試總結雲資料庫的FinOps之道。
希望能夠賦能mysql、redis、mongo等其他雲資料庫產品實現降本增效,進而給網際網路寒冬環境下的企業IT降本增效,提供一個參考思路。
本文將從4個方面進行展開:
在早期,雲端計算被視為企業降低IT管理成本、提高業務敏捷性的重要途徑。尤其是雲資料庫,高效能、高可用、彈性使用等特性,「資料庫上雲」是降本增效的一個重要途徑。
但是,隨著雲資料庫大規模使用,雲產品的成本問題開始顯現。比如我們使用的雙叢集HBase,在投入使用2年後,已經成為所有云資料庫類別中,成本佔比最大的元件。
如何解決雲資料庫成本優化問題?尤其在這樣的網際網路寒冬下,是擺在很多技術團隊面前的首要問題。
常見的成本優化挑戰包括四種情況:
為了系統化解決這些問題,就需要引入FinOps(雲成本優化)的概念了。
FinOps 是「Finance」和「DevOps」的綜合體,也被稱為「雲財務管理」、「雲成本管理」或「雲財務優化」等。
FinOps有一個權威組織——FinOps 基金會,FinOps 基金會是Linux 基金會發起的專案,致力於通過最佳實踐、教育和標準來推動實踐雲財務管理學科。
FinOps基金會對FinOps定義如下:
FinOps is an evolving cloud financial management discipline and cultural practice that enables organizations to get maximum business value by helping engineering, finance, technology and business teams to collaborate on data-driven spending decisions.
(Definition Updated: November 2021 by the FinOps Foundation Technical Advisory Council
這裡有三點非常關鍵:
此外,FinOps還有幾個非常重要的維度,包括六大原則、角色、迴圈方法論、成熟度模型。
參考FinOps六大原則,我們來看看 HBase成本優化專案 中如何落地。
原則1:Teams need to collaborate
原則2:Everyone takes ownership for their cloud usage
這兩條原則非常具有現實意義,成本優化很難由單一團隊負責,必須各個團隊都把 成本 作為一個關鍵指標,持續優化,提高效率和創新能力。
在HBase成本優化專案的 立項之初,我們就提前和各個業務團隊進行深入溝通,對HBase成本優化的 現狀、價值、實施路徑 充分對齊。
業務團隊 |
目前成本 |
優化成本 |
優化方案 |
預計人力投入 |
A團隊 |
xxx |
5k/月 |
降低副本數 |
20人日 |
B團隊 |
xxx |
8k/月 |
業務降級,取消災備 |
30人日 |
C團隊 |
xxx |
4k/月 |
替換雲原生資料庫 |
25人日 |
D團隊 |
xxx |
10k/月 |
冷熱分離 |
40人日 |
因此,在專案開展過程中,各個團隊能結合各自的業務特點,採用 業務架構優化、資料架構優化、雲原生技術 等手段,共同朝著HBase成本優化的大目標前進。
原則3:A centralized team drives FinOps
專門有一個團隊來推動FinOps的開展,包括各項流程的推進、基礎設施的搭建等。
本次HBase成本優化專案中,採用 專案制 的形式,由基礎架構團隊進行推進,提供了諸如 成本優化目標、資源使用狀況、資料增長變化、業務改造方案支援 等指標與工具。
後續,我們會開發一個統一的 FinOps平臺產品,由一個 中心化產品,進行長效持久地推進雲資料庫成本優化。
原則4:Reports should be accessible and timely
HBase目前是叢集模式運作,各個叢集都存在業務團隊共用叢集的情況。另外,業務數量眾多(近百個敏捷組),如何快速識別成本大頭進行優化,也是一個重點問題。
因此,本次HBase成本優化專案中,充分踐行了 資料驅動 的理念。
這些資料驅動的能力,後續會沉澱為FinOps平臺上的通用元件能力。
原則5:Decisions are driven by business value of cloud
獲得成本相關資料後,根據實際業務價值和使用情況進行成本優化決策。
本次HBase成本優化專案中,各個業務團隊充分利用各自業務特點,進行相關業務優化。
以HBase為例,本身儲存在本地盤的HDFS上,通過三副本機制保證資料不丟失。
為了提高應用穩定性,降低單HBase不可用帶來的風險,我們核心服務都配備了雙叢集主備架構的HBase。這樣導致了一份資料會存在六個副本,造成了磁碟空間使用率的極速膨脹。
在多副本災備架構下,可以對主備叢集內資料都調整為兩副本(去掉replica3、replica6),整體變為四副本,可以降低30%的磁碟空間使用。
某業務團隊單副本140T資料,六副本840T,磁碟使用率不斷上漲,造成巨大成本壓力。我們通過調整副本數量為四副本(從原來的六副本),有效降低了280T資料的磁碟使用空間。
如果資料量過大,一般可以考慮根據資料生命週期特點,實施冷熱分離、無效資料清理。
關鍵邏輯
對於單value比較大的資料,可以通過資料壓縮演演算法,如snappy、lz4、gizp等,提高資料壓縮比,降低儲存。
HBase、mongo等資料庫伺服器端可以做自動壓縮的設定,如果伺服器端不支援自動壓縮的,可以採用使用者端壓縮後再寫入。
原則6:Take advantage of the variable cost model of the cloud
充分利用好不同的雲產品計費模型。這個目前其實做的比較多了,比如選擇不同雲廠商的不同產品、根據不同場景選擇不同計費模式( 包年包月、按量付費、serverless等)等。
本次HBase成本優化專案中,典型的就是在某個特定業務場景下,引入了 HBase serverless方案 作為災備叢集,降低了普通叢集作為災備叢集的低效支出。
前面聊了HBase成本優化實踐的若干原則與具體操作,比較偏重「術」的層面。
下面,我們再結合FinOps的迴圈治理方法論,來更全面地思考雲資料庫的FinOps之道。
FinOps 基金會建議採用迭代方法來管理雲服務的可變成本。最佳實踐包括應持續管理的三個環節:通知、優化和運營。
核心在於 資料視覺化 與 可分配。
業務團隊和財務利益相關者能夠確保他們在控制預算和準確預測支出的同時提高ROI,避免意外。
同時,也能作為一個業務團隊的基礎指標,來衡量並提升團隊成本優化效率。
俗話說,It you can’t measure it, you can’t manage it。
資料驅動理念在FinOps中同樣處於核心地位。
包括但不限於:
準確而全面的視覺化,可以較好解決成本優化的挑戰一,精準衡量是否存在資源浪費的情況。
對於所有云上資源,都要儘可能精細化、準確 分配到各個實際使用團隊上。
目前在微服務架構下,單範例型別的元件比較容易跟上游應用繫結,進而分配到具體業務團隊。但是叢集型別的元件(如HBase),仍然需要做進一步細粒度的計算與分配。
一旦資源優化指標準確係結到 實際使用團隊後,就可以開展各項優化工作。
最基礎的方式,是根據資料使用率指標,對空閒資源進行降配、縮容等方式。
更深度的優化,需要結合實際業務場景,參考3.4的內容,實施 減少副本數、冷熱分離、資料壓縮 等手段。(解決挑戰二)
通過FinOps進行成本優化的文化建設是首要條件。必須自上而下推行這種意識和相關的獎懲制度。
讓基礎團隊、業務團隊認識到這項工作不是某個人、某個團隊的事情,而是各個團隊在架構設計、技術優化、績效達成中的關鍵任務。(解決挑戰三)
如果沒有自上而下推行這種文化,FinOps肯定無法落地,更不用談長期機制了。
為了使FinOps成為一種長期機制,除了文化建設外,必須將人工流程自動化。
從 資料化、成本問題識別、任務分配、優化完成、資料追蹤 等環節入手,將一整套流程以平臺產品的形式沉澱下來。
轉變」運動式「優化的困境,形成真正的長期機制。(解決挑戰四)
本文從雲資料庫成本挑戰引入FinOps的概念,結合HBase成本優化專案闡述了FinOps的具體原則與實踐案例。
最後總結了雲資料庫FinOps之道,形成資料庫成本優化真正的閉環解決方案,形成長效機制,徹底解決四種常見成本優化挑戰。
希望能夠拋磚引玉,提供一些啟發和思考。如果你有其他補充和建議,歡迎留言討論。
都看到最後了,原創不易,點個關注,點個贊吧~
文章持續更新,可以微信搜尋「阿丸筆記 」第一時間閱讀,回覆【筆記】獲取Canal、MySQL、HBase、JAVA實戰筆記,回覆【資料】獲取一線大廠面試資料。
知識碎片重新梳理,構建Java知識圖譜:github.com/saigu/JavaK…(歷史文章查閱非常方便)