那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于Serverless計算場景下的FinOps問題

馬哥Linux運維 ? 來源:馬哥Linux運維 ? 作者:馬哥Linux運維 ? 2022-10-08 10:24 ? 次閱讀

Key Takeaways:

1. 盡管 Serverless 的迅猛發展吸引了廣泛深入的關注,Serverless 函數總成本的事先估計仍缺乏有效的理論指導。本文基于 FunctionGraph 在 Serverless 領域的 FinOps 探索和實踐,提出業界首個 Serverless 函數總成本估計模型。

2. 根據對成本模型的關鍵因素分析,提出五大類函數運行成本的優化方法;同時,為更好地幫助用戶實現降本增效,華為云首次提出透明、高效、一鍵式的 “用戶函數成本研究中心”。

Serverless 精確到毫秒級的按用付費模式使得用戶不再需要為資源的空閑時間付費。然而,對于給定的某個應用函數,由于影響其計費成本的因素并不唯一,使得用戶對函數運行期間的總計費進行精確的事先估計變成了一項困難的工作。

以傳統云資源的周期性租賃模式為例,通過周期數乘以周期單價,用戶可以很容易地估計出租賃期間的總費用,形成清晰的心理賬戶預期,即使在云平臺采用階梯定價或價格歧視策略的情形下,計算租賃總成本也不是一件難事。

但在Serverless場景中,事先估計函數總成本仍缺乏有效的理論指導。一方面,影響函數計費的關鍵因素不唯一,如包括函數內存規格、單實例并發度、函數執行時長等;另一方面,函數調用流量的波動通常具有隨機性和非平穩性,使得基于流量的“按用計費”具有較大的不確定性。

當然,尋找函數計費的理論指導主要是為用戶評估函數總成本提供一種有效依據,但更加重要地,如何進一步利用估計模型,幫助用戶優化應用函數及其配置選擇,進而顯著降低用戶函數總成本,是Serverless領域中,FinOps亟待回答的問題。

FinOps聚焦云上資源管理和成本優化,通過有機鏈接技術、業務、和財務專業人士,來優化用戶、企業、組織的云資源成本,提高云上業務的投入-產出比 [1]。本文結合華為云FunctionGraph在Serverless領域的FinOps探索和實踐,剖析Serverless場景下的函數計費模式和關鍵影響因素,介紹一種對函數運行期間總計費進行事先估計的模型框架;更重要地,該模型為幫助用戶優化函數運行總成本、提升用戶云上Serverless資源管理效能,實現經濟型 (Economical) Serverless 提供有效依據。名詞解釋與背景知識

首先對表1所列的幾個概念做簡要說明。

表1:Serverless函數常見名詞

內存規格 Memory MB
單實例最大并發度 Maximum Requests per Instance /
函數執行時延 Function Execution Time ms
單函數最大實例數 Maximum Instances per Function /

內存規格 (Memory):內存規格也即函數規格、函數實例規格,表示Serverless平臺為函數的單個實例所分配的資源大小,一般表示為函數可使用的內存大小,由用戶指定;實例可使用的CPU份額與內存大小成正比。Serverless云平臺通常提供多種規格供用戶選擇,以FunctionGraph為例,用戶可選15種函數規格,如圖1所示。

a57a53ec-4575-11ed-96c9-dac502259ad0.png

圖1:FunctionGraph提供多種函數內存規格

函數執行時延 (Function Execution Time):這里指完成一次調用請求響應的過程中,函數本身執行所消耗的時間,主要由函數代碼邏輯決定。一般地,對于CPU密集型的函數,增大函數資源規格(內存-CPU Share),可以顯著降低函數執行時延。但對于消耗大部分時間在網絡IO等操作上的函數,增大資源規格對執行時延的改善則非常有限。

單實例最大并發度 (Maximum Requests per Instance):函數的單個實例可以同時處理的最大請求數,主要適用于函數執行過程中有顯著時間在等待下游服務返回的場景,如訪問數據庫操作或磁盤IO等。對于相同的流量負載,提高函數的單實例并發度可以降低按量實例個數,為用戶節省計費,同時,也可以降低函數調用請求的冷啟動比例。

單函數最大實例數(Maximum Instances per Function):指同一函數同一時刻下同時運行的實例數上限。對用戶來說,最大實例數可以防止異常流量洪峰下或函數發生故障時由于云平臺的過度擴容而導致的費用失控;對云平臺來說,最大實例數可以防止異常情況下平臺資源被部分函數耗光,從而保障不同函數間的性能隔離。

函數計費與成本模型

單實例視角下的函數計費估計模型,可參考 [2]。在真實生產環境中,除異步函數外,Serverless云平臺通常采用FCFS(First Come First Serve)的方式響應調用請求,對于函數流量的潮汐波動,平臺通過自動擴縮容實例進行自適應,系統中運行的并發實例數隨時間的變化,可以由一個分段常線性函數完全刻畫,如圖2所示。

a5c7aff2-4575-11ed-96c9-dac502259ad0.png

圖2:函數并發實例數隨擴縮容過程的變化

盡管不同Serverless云廠商之間的計費方法存在差異,函數計費一般主要包括兩部分:對函數所使用資源的計費以及對請求次數的計費,表示如下:

a5f001aa-4575-11ed-96c9-dac502259ad0.png

其中,a60884b4-4575-11ed-96c9-dac502259ad0.png表示對資源使用的計費,單位為GB-秒(GB-second),?表示對調用次數的計費。

為方便計算,用a6202812-4575-11ed-96c9-dac502259ad0.png表示函數的資源規格,單位為GB。例如,對于128MB規格的函數,其a6413200-4575-11ed-96c9-dac502259ad0.png?;c表示該函數的單實例并發數,μ表示函數的平均執行時延,單位為毫秒;并用α(0<α<1)表示Serverless平臺的調用鏈路性能,在最理想的情況下,該指標為1,表示在當前Serverless平臺上,該函數響應單個請求的端到端時延等于函數執行時延μ本身,不同Serverless平臺的α值可能略有不同,但通常在0.9以上。給定上述指標,可以得到單實例在理想狀況下的請求處理能力, 即理論上每秒可以響應的調用次數為:

a65ca90e-4575-11ed-96c9-dac502259ad0.png

因此,單實例的實際請求處理能力則為:

a68100a6-4575-11ed-96c9-dac502259ad0.png

我們以一個月作為估計周期。假設一個月內,函數共經歷了n次擴、縮容,形成了n個常線性子區間(如圖2所示)。先考察單個子區間a69e2212-4575-11ed-96c9-dac502259ad0.png內的計費成本模型,總成本模型則為各個連續子區間的加和。

在時間窗口a6c1bdf8-4575-11ed-96c9-dac502259ad0.png內,假設函數調用次數為a6db8986-4575-11ed-96c9-dac502259ad0.png,則該時間窗內的并發實例數為:

a6f7f3fa-4575-11ed-96c9-dac502259ad0.png

對應的資源計費部分則可表示為:

a7108b4a-4575-11ed-96c9-dac502259ad0.png

其中,a73d501c-4575-11ed-96c9-dac502259ad0.png表示每GB-秒的資源的計費單價?,F在,記第i個子區間為a75a1a62-4575-11ed-96c9-dac502259ad0.png,則一個月內的總成本模型可以估計為:

a770be02-4575-11ed-96c9-dac502259ad0.png

其中,a7943404-4575-11ed-96c9-dac502259ad0.png表示每次調用的計費單價,?a7b35fc8-4575-11ed-96c9-dac502259ad0.png表示函數該月總流量,a7d17c06-4575-11ed-96c9-dac502259ad0.png為云平臺提供的月度免費計量時間,a7f796c0-4575-11ed-96c9-dac502259ad0.png為月度免費計量調用次數。

在上式中,單實例并發度c和函數規格a81246e6-4575-11ed-96c9-dac502259ad0.png可以認為在用戶配置之后屬于常數;α屬于平臺側參數,也可視作常數;對于函數執行時延μ,實際中通常會由于冷熱啟動差異、網絡抖動、調用請求入參等的不同而波動,且考慮到Serverless計費是精確到毫秒級別的,因此嚴格意義上不能被視作為常數。不過,作為估計模型,這里暫且假定μ也為常數。綜上,總成本模型可以表示為:

a827ce6c-4575-11ed-96c9-dac502259ad0.png

后半部分代表云平臺提供的免計費總量,與函數調用流量以及函數配置無關。

成本優化方法討論

有了函數成本的估計模型,就可以對影響用戶成本的關鍵因素進行討論。在估計式 (1) 中,忽略云平臺提供的免計費總量,函數月度總成本的結構如下:

a864ad14-4575-11ed-96c9-dac502259ad0.png

Point 1:優化函數代碼邏輯本身,降低函數執行時延

對于同樣的函數流量負載,更低的執行時延μ可以為用戶節省更多計費成本。在用戶業務邏輯允許的前提下,不斷優化函數代碼、提高函數執行效率是軟件工程本身天然的訴求,但在Serverless場景下,這一點顯得更為迫切。

具體地,考慮采用Python、Nodejs等輕量化編程語言,減少函數初始化配置中的非必要項,將連接其它服務如數據庫等的操作盡量移到函數執行入口之前的初始化階段完成,簡化代碼邏輯等。

另外,為幫助用戶掌握函數運行情況,FunctionGraph為應用函數提供深度可視化的可觀測能力,支持豐富的觀測指標配置,包括調用次數、錯誤次數、運行時延等,如圖3所示的函數運行時間監控示例。

a880c5d0-4575-11ed-96c9-dac502259ad0.png

圖3: FunctionGraph 函數運行時間監控示例

Point2: 優化函數代碼包、依賴包、鏡像大小

當函數調用觸發冷啟動的時候,從計費角度看,冷啟動時延包含在執行時延μ中一起計費,而冷啟動中有相當比例的時延消耗在云平臺從第三方存儲服務(如華為云對象存儲服務OBS)中下載用戶的代碼包、依賴包,或從鏡像倉庫服務中拉取用戶應用鏡像,如圖4所示。

盡管為了優化冷啟動性能,目前大部分云平臺均會采用各類緩存機制,對用戶代碼和鏡像進行預緩存,但實例啟動中消耗在用戶代碼加載上的時延仍然十分顯著。因此,應盡可能優化函數代碼包大小,包括對依賴包、鏡像等進行瘦身,進而降低計費時長。

a8ebe338-4575-11ed-96c9-dac502259ad0.png

圖4:冷熱啟動下的計費時長及優化點

Point3: 編寫功能聚焦的輕量化函數

在Serverless編程框架下,盡可能將函數編寫為輕量型的、功能聚焦的程序代碼,即“functions should be small and purpose-built”[3];讓“一個函數只做一件事”,一方面,功能單一的函數,運行時延也更容易針對性地進行優化;另一方面,當一個函數內同時實現多個功能的時候,大概率會以所有功能都在性能上同時做出妥協為結果,最終提高了函數運行期間總計費。

a9160c94-4575-11ed-96c9-dac502259ad0.png

圖5:華為云FunctionGraph 函數流示例

若應用函數的確需要提供多個功能,可以考慮將大函數分解為多個小函數,然后通過函數編排的方式實現整體邏輯, 如圖5所示的FunctionGraph函數流功能。大函數分解也是Serverless計算中用戶處理超時(timeout)等異常場景的最佳實踐之一 [4]。

Point4: 業務模型支持的前提下,采用單實例多并發

從公式(2)的函數成本結構中可以看出,在用戶業務模型支持的前提下,配置一定的單實例并發度c,可以有效降低函數月度總成本;若用戶不進行配置,云平臺默認值通常為1,即單個實例同一時刻只能處理一個請求;因此,在函數被并發調用的情形下,平臺會啟動多個實例進行響應,從而增大了計費實例數目,如圖6所示;同時,采用單實例多并發,也能改善調用請求處于等待狀態的尾時延。

a92f350c-4575-11ed-96c9-dac502259ad0.png

圖6:單實例并發度:計費時長視角和實例數視角

當然,單實例并發度并非越高越好,例如,過高的并發度設置會使得函數實例內多線程之間的資源競爭加?。╡.g., CPU contention),導致函數響應性能惡化,影響用戶應用的QoS指標等。同時,如本文在背景知識中所提,并非所有的應用函數都適合設置單實例多并發。單實例多并發主要適用于函數執行過程中有相當比例的時延消耗在等待下游服務返回的場景,這類場景下,實例資源如CPU等有顯著比例處于空閑等待狀態,如訪問數據庫、消息隊列等中間件、或磁盤IO、網絡IO等。單實例多并發也需要用戶在函數代碼中對錯誤捕獲(e.g., 考慮請求級別的錯誤捕獲粒度)和全局共享變量的線程安全(e.g., 加鎖保護)問題進行適配。

Point5: 函數資源規格的選擇需考慮對執行時延的影響

最后討論函數資源規格的選擇問題。從公式(2)明顯可以看出,更大規格的實例內存a959c538-4575-11ed-96c9-dac502259ad0.png對應更高的計費成本。但內存規格的選擇,需要同時考慮對函數執行時延μ的影響。從用戶函數的角度看,函數執行時延除了由代碼本身的業務邏輯決定之外,還受實例運行時可使用資源大小的影響。更大的實例規格,對應更大的可使用內存和更多的CPU份額,從而可能顯著改善高內存占用型或CPU密集型函數的執行性能,降低執行時延;當然,這種改善也存在上限,超過某個資源規格后,資源的增加對降低函數執行時延的效果幾乎可以忽略,如圖7中虛線所表示的過程。上述事實表明,對于給定的用戶函數,為降低總計費成本,需要配置合理的實例規格a9705dca-4575-11ed-96c9-dac502259ad0.png,使得a98c5322-4575-11ed-96c9-dac502259ad0.png盡可能取得最小值,如圖7中實線所表示的過程。

a9a35c2a-4575-11ed-96c9-dac502259ad0.png

圖7:函數規格的選擇需同時考慮對成本和執行時延的影響

例如,考慮實例規格的初始配置為a9cbe9ec-4575-11ed-96c9-dac502259ad0.png(例如從最小規格開始,i.e., 128MB), 經測試該規格下函數執行時延為a9e9a0f4-4575-11ed-96c9-dac502259ad0.png,則可以得到基線aa044e72-4575-11ed-96c9-dac502259ad0.png,然后逐步增大資源規格,測試對應執行時延,直到某一組aa191c44-4575-11ed-96c9-dac502259ad0.png出現,使得:

aa3be76a-4575-11ed-96c9-dac502259ad0.png

此時表明,資源增大對計費成本的邊際提升已經超過了對執行時延的邊際改善,因此,從成本的角度看,此時的aa612804-4575-11ed-96c9-dac502259ad0.png為帕累托最優解,即最佳規格,對應執行時延為aa7dcbee-4575-11ed-96c9-dac502259ad0.png

最后,圖8對上述幾個決定函數成本的關鍵因素做了一個總結,其中,箭頭方向表示元素之間的直接影響,“+”號代表成正比,“-”代表成反比。

aa995468-4575-11ed-96c9-dac502259ad0.png

圖8:函數計費成本的關鍵因素分析

Serverless函數成本研究中心

為用戶降本增效,是FunctionGraph的核心理念。盡管前文分析的五種函數成本優化手段是站在用戶視角下的討論,但我們認為這些問題遠不是只屬于用戶需要考慮的范圍;相反地,FunctionGraph在持續探索如何最大限度地幫助用戶在Serverless領域實現最佳的FinOps效果,讓用戶能夠真正享受到Economical Serverless的福利;例如,在實例級別的深度可視化、可觀測性前提下,幫助用戶實現函數FinOps全流程的自動化,為用戶提供透明、高效、一鍵式的函數資源管理和成本優化服務。

aae36896-4575-11ed-96c9-dac502259ad0.png

ab07c286-4575-11ed-96c9-dac502259ad0.png

圖9. 在線式資源消耗感知與規格動態推薦

為此,基于內部實踐,FunctionGraph 將于近期推出“用戶函數成本研究中心– Cost Analysis and Optimization Center”, 為用戶提供包括離線式函數最佳配置調優(offline power tuning)、在線式資源消耗感知與規格動態推薦(online resource recommendation,如圖9所示)、預測性函數彈性預覽(predictive auto-scaling preview)等在內的多個重量級特性服務,最大限度降低用戶實現函數FinOps的技術門檻,為用戶業務開發、Serverless化改造等提供極致便捷性。

總結與展望

本文主要討論了Serverless計算場景下的FinOps問題,給出了業界首個用戶函數總成本估計模型,并根據該模型,為用戶優化應用函數、提升Serverless資源管理效能、降低總成本提供理論參考和實踐依據。

一項新興技術領域的興起,首先需要回答的問題是“Why & Value”, FunctionGraph作為華為元戎加持的下一代Serverless函數計算與編排服務,結合FinOps等技術理念,持續為用戶提供經濟型Serverless服務。后續我們將分享更多圍繞通用全場景Serverless的前沿理論及其案例實踐,回饋社區,包括FunctionGraph在微服務Serverless化上的實踐經驗等。

審核編輯:彭靜
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 函數
    +關注

    關注

    3

    文章

    4346

    瀏覽量

    62971
  • 模型
    +關注

    關注

    1

    文章

    3305

    瀏覽量

    49221
  • serverless
    +關注

    關注

    0

    文章

    65

    瀏覽量

    4521

原文標題:Serverless 遇到 FinOps,云成本問題有解了!

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    基于阿里云Serverless架構函數計算的最新應用場景詳解(一)

    摘要: Serverless概念是近年來特別火的一個技術概念,基于這種架構能構建出很多應用場景,適合各行各業,只要對輕計算、高彈性、無狀態等場景有訴求的用戶都可以通過本文來普及一些基礎
    發表于 01-25 11:06

    基于阿里云Serverless架構函數計算的最新應用場景詳解(二)

    摘要: Serverless概念是近年來特別火的一個技術概念,基于這種架構能構建出很多應用場景,適合各行各業,只要對輕計算、高彈性、無狀態等場景有訴求的用戶都可以通過本文來普及一些基礎
    發表于 01-25 11:46

    Bazaar:阿里云Serverless計算服務探秘

    摘要: Serverless 指用戶無需管理服務器情況構建和運行應用程序的一種方式??梢?Serverless 并不是真的不需要服務器,畢竟程序代碼不能靠意念來執行,仍然是需要硬件服務器實體來作
    發表于 06-08 15:35

    Serverless適用何種場景?會帶來哪些沖擊?

    Serverless 實戰 —— 與微服務一脈相承,Serverless適用何種場景?會帶來哪些沖擊?Serverless 架構用來描述那些顯著或完全依賴于第三方應用或服務(“在云端”
    發表于 07-12 07:41

    Serverless概念

    Serverless簡介概念Serverless的全稱是Serverless computing無服務器運算,又被稱為函數即服務(Function-as-a-Service,縮寫為 FaaS),是云
    發表于 09-15 07:38

    HarmonyOS/OpenHarmony原生應用開發-華為Serverless云端服務支持說明(一)

    Serverless為您提供了包括計算、彈性收縮、存儲等一系列能力。 彈性伸縮、按量計費,面對波峰波谷的業務場景,Serverless可根據實際請求量彈性伸縮、按量計費,您無需,為空
    發表于 10-08 10:22

    實例詳解對Serverless SQL大數據分析技術的應用

    近年來, Serverless作為一種新型的互聯網架構直接或間接推動了云計算的發展,同時基于Serverless的輕量計算也成為了新的技術熱點,而S
    的頭像 發表于 07-26 10:54 ?4425次閱讀
    實例詳解對<b class='flag-5'>Serverless</b> SQL大數據分析技術的應用

    Serverless Devs Serverless開發者平臺

    ./oschina_soft/Serverless-Devs.zip
    發表于 05-13 10:26 ?0次下載
    <b class='flag-5'>Serverless</b> Devs <b class='flag-5'>Serverless</b>開發者平臺

    阿里云宣布核心產品全面 Serverless

    11月3日,2022·云棲大會上,阿里云智能總裁張建鋒表示,以云為核心的新型計算體系正在形成,軟件研發范式正在發生新的變革,Serverless是其中最重要的趨勢之一,阿里云將堅定推進核心產品全面
    發表于 11-03 11:30 ?509次閱讀
    阿里云宣布核心產品全面 <b class='flag-5'>Serverless</b> 化

    聊一個云計算領域的熱門概念—Serverless

    事實上,Serverless所謂的“無服務器計算”,并不是真的不需要服務器,而是說,對于用戶,服務器變得“不可見”了(或者說“無感知”了)。
    的頭像 發表于 11-29 15:54 ?911次閱讀

    Serverless Streaming:毫秒級流式大文件處理探秘

    ,面向無服務器計算領域的 Serverless 工作流也應運而生。許多 Serverless 應用程序不是由單個事件觸發的簡單函數,而是由一系列函數多個步驟組成的,而函數在不同步驟中由不同事件觸發
    的頭像 發表于 02-24 11:55 ?492次閱讀

    Serverless Streaming:毫秒級流式大文件處理探秘

    背景 企業應用從微服務架構向 Serverless(無服務器)架構演進,開啟了無服務器時代,面向無服務器計算領域的 Serverless 工作流也應運而生。許多 Serverless
    的頭像 發表于 03-21 10:37 ?583次閱讀
    <b class='flag-5'>Serverless</b> Streaming:毫秒級流式大文件處理探秘

    Serverless計算產品為什么采用并發度作為擴縮容?

    2019 年 Berkeley 預測 Serverless 將取代 Serverful 計算 [1 ] ,成為云計算計算新范式。Serverles
    的頭像 發表于 07-30 15:52 ?1178次閱讀
    <b class='flag-5'>Serverless</b><b class='flag-5'>計算</b>產品為什么采用并發度作為擴縮容?

    全域 Serverless 化,華為云引領下一代云計算新范式

    近日,華為開發者大會 2023(Cloud)在東莞成功舉辦,期間“全域 Serverless 化,引領下一代云計算新范式”專題論壇人氣滿滿。華為云首席產品官方國偉攜手業界專家、客戶、伙伴,面向廣大
    的頭像 發表于 09-06 23:05 ?614次閱讀
    全域 <b class='flag-5'>Serverless</b> 化,華為云引領下一代云<b class='flag-5'>計算</b>新范式

    Serverless 冷啟動:如何讓函數計算更快更強?

    問題背景 Serverless 計算也稱服務器無感知計算或函數計算,是近年來一種新興的編程模式。其致力于大幅簡化云業務開發流程,使得應用開發者從繁雜的服務器運維工作中解放出來(例如自動
    的頭像 發表于 09-06 23:08 ?427次閱讀
    <b class='flag-5'>Serverless</b> 冷啟動:如何讓函數<b class='flag-5'>計算</b>更快更強?
    永利高网址| 百家乐官网永利娱乐网| 百家乐棋牌游戏正式版| 悠哉棋牌游戏大厅| 网址百家乐官网的玩法技巧和规则| 黄金百家乐的玩法技巧和规则 | 筹码百家乐官网500| 百家乐和| 百家乐官网流水打法| 波音网百家乐合作| 定结县| 挖掘百家乐赢钱秘籍| 栖霞市| 澳门百家乐技巧经| 景谷| 棋牌百家乐官网有稳赚的方法吗 | 中国足球竞猜| 凯旋门娱乐场| 怎么赢百家乐官网的玩法技巧和规则 | 免费百家乐官网计划软件| 万宝路百家乐的玩法技巧和规则| 板桥市| 百家乐官网看图赢钱| 大发888手机版官网| 百家乐官网赌博机有鬼吗| 最新百家乐出千赌具| 大发888我的爱好| 真人百家乐官网ea平台| 百家乐赌场牌路分析| 鲁甸县| 百家乐官网那个娱乐城信誉好| 百家乐如何捕捉长龙| 百家乐官网真人游戏开户| 真人百家乐免费开户送钱| 皇冠在线娱乐| 百家乐全讯网2| 365体育投注| 百家乐官网官方网站| 博彩旅游业| 民宅24方位| 尊龙娱乐网|