3
發(fā)布日期:2024-09-09 12:59 瀏覽次數(shù):
4166am金沙信心之選自2013年提出以來,Serverless(無服務(wù)器)作為屏蔽服務(wù)器、按調(diào)用計費(fèi)、事件驅(qū)動、彈性自動伸縮的計算服務(wù),深受開發(fā)者喜愛,被稱為云原生未來發(fā)展的方向。
最新的調(diào)查報告顯示:在核心業(yè)務(wù)中使用Serverless的用戶達(dá)到18.11%;已經(jīng)開始和計劃使用Serverless技術(shù)的用戶超過了70%。根據(jù)Datadog數(shù)據(jù),有超過50%的使用云服務(wù)的企業(yè)或組織使用了Serverless技術(shù)。
但是,當(dāng)開發(fā)者從創(chuàng)業(yè)階段過度到大型企業(yè)階段,原來的Serverless模式逐漸給企業(yè)的管理、運(yùn)維以及財務(wù)等帶來一系列的挑戰(zhàn),這也是當(dāng)期Serverless很難在大型企業(yè)全面應(yīng)用的根本原因,為了破解這樣的難題,騰訊云工程師從深度分析癥結(jié),推出了順應(yīng)企業(yè)發(fā)展需求的技術(shù),打造真正服務(wù)于企業(yè)的 serverless 平臺。
Serverless為一個新業(yè)務(wù)提供了理想的從 0 到 1 孵化體驗——開發(fā)者只需要關(guān)注業(yè)務(wù)邏輯開發(fā),業(yè)務(wù)所需的底層資源規(guī)劃運(yùn)維由云平臺處理,輕松應(yīng)對上線后的流量增長,同時,業(yè)務(wù)的成本支出由業(yè)務(wù)的真實請求調(diào)用量決定??梢哉fServerless給開發(fā)者真正帶來了上線足夠快,服務(wù)足夠穩(wěn),花費(fèi)足夠少的完美“創(chuàng)業(yè)”體驗。
然后,當(dāng)這個業(yè)務(wù)在 Serverless 的幫助下成功跨越 0 到 1,開發(fā)者成長為企業(yè),來到從 1 到 100 的精益經(jīng)營階段,Serverless 技術(shù)的應(yīng)用開始出現(xiàn)問題:
? 自成一體的發(fā)布流程、資源 quota、權(quán)限體系,企業(yè)內(nèi)部的研發(fā)中臺團(tuán)隊不好統(tǒng)一管理,出了問題還得背鍋;
這些問題讓企業(yè)對 Serverless 又愛又恨。以金融行業(yè)為例,不少大行等均嘗試在內(nèi)部自建 faas 服務(wù)。k8s 社區(qū)近年來也一直涌現(xiàn)各類 FaaS 框架,例如 Keda、Knative、OpenFaaS 等。當(dāng)然企業(yè)自建目前問題也不少,投入大、維護(hù)難、效果不佳,也導(dǎo)致自建的 faas 在內(nèi)部往往承接業(yè)務(wù)上量不多。
面向開發(fā)者設(shè)計的 Serverless,需要為企業(yè)重新思考。只有服務(wù)好企業(yè),才能真正意義上將 Serverless 發(fā)展為云原生開發(fā)模型,實現(xiàn) Serverless 自己的 1 到 100。
2017 年,騰訊云云函數(shù) SCF (Serverless Cloud Function,下文簡稱 SCF)發(fā)布后不久迎來了第一批種子用戶,每個月 100 萬次調(diào)用量免費(fèi)額度,幫助用戶零成本發(fā)展業(yè)務(wù),其中不少用戶發(fā)展良好,最終拿到更大的投資,業(yè)務(wù)越做越大。
其中,有一家做跨境電商業(yè)務(wù)的 A 公司就是典型代表,2018 年成立到 2021 年拿到上億融資,他們的用云體驗也發(fā)生了顯著變化。
2018年 ~ 2020年,作為創(chuàng)業(yè)公司需要快速響應(yīng)市場需求,18 年 ~ 20 年,A 公司的技術(shù)棧完全基于函數(shù) FaaS 架構(gòu)搭建:
2020 年前后,一直不溫不火的國內(nèi)跨境電商業(yè)務(wù),突然爆發(fā),A公司屬于該賽道的 Top 選手,業(yè)務(wù)也隨之迅速起量,從年初每月幾百上千塊用云成本,到了年底增長到每個月過百萬,研發(fā)團(tuán)隊也從幾個人,快速擴(kuò)張到了幾百人。A公司的全量業(yè)務(wù)一直以騰訊云云函數(shù) SCF 作為業(yè)務(wù)的計算平臺,終于在 2021 年拿到了新一輪融資。
然而接下來, A 公司卻開始考慮把部分業(yè)務(wù)從云函數(shù)往容器遷移了,這讓我們倍受困擾,通過與客戶研發(fā)負(fù)責(zé)人深度溝通,以下幾個非?,F(xiàn)實而又不得不承認(rèn)的核心問題擺在了我們面前:
業(yè)務(wù)復(fù)雜度與管理需求升級,Serverless 對企業(yè)的管理團(tuán)隊造成沖擊
業(yè)務(wù)發(fā)展壯大,不可避免要引入行業(yè)主流人才,對業(yè)務(wù)線進(jìn)行拆分,對研發(fā)工序進(jìn)行分層。這個過程融合了管理流程升級和技術(shù)棧轉(zhuǎn)移。
拆分業(yè)務(wù)線后,各業(yè)務(wù)線開發(fā)自己的模塊,保持業(yè)務(wù)線的快速迭代效率,但完全的業(yè)務(wù)線自治在企業(yè)內(nèi)部自然會導(dǎo)致資源配置冗余和浪費(fèi),于是中臺開始搭建,統(tǒng)一的服務(wù)發(fā)現(xiàn)、治理機(jī)制開始上線。這些都和 Serverless 從開發(fā)到發(fā)布一竿子插到底的全棧自助模式有沖突。
快速擴(kuò)張的團(tuán)隊,引入的行業(yè)人才都是帶著多年工作經(jīng)驗進(jìn)來的,他們或熟悉某些開發(fā)框架,或熟悉某些架構(gòu)模式,為了快速上線業(yè)務(wù),這些框架和架構(gòu)模式也會被開綠燈,在內(nèi)部生長開花。Serverless 需要一些改造或?qū)釉谶@個過程就會被嫌棄,更靈活自由的容器平臺受到青睞。
拔地而起的中臺團(tuán)隊承接了運(yùn)維、研效治理的工作職責(zé),他們有多年的機(jī)器運(yùn)維經(jīng)驗、內(nèi)核指標(biāo)觀測經(jīng)驗。Serverless 完全托管免運(yùn)維的黑盒模式在這時也逐漸帶來一些問題,業(yè)務(wù)團(tuán)隊想用攔不住,出了問題(比如說代碼寫的不好 OOM)還得背鍋。
業(yè)務(wù)線的擴(kuò)充也引入了更多的系統(tǒng),如大數(shù)據(jù)的 Spark、Flink,中間件的 Kafka、Redis,數(shù)據(jù)庫等等,隨著云原生的大發(fā)展,基于 K8s 底座的統(tǒng)一資源管理和運(yùn)維工具鏈也更加成熟。在這個底座上,每個業(yè)務(wù)線都可以用資源 quota 進(jìn)行管理,Serverless 獨(dú)立的并發(fā)配額彈性資源讓平臺運(yùn)維對資源不再可控。
同時,隨著業(yè)務(wù)的擴(kuò)張,企業(yè)也在籌備著進(jìn)軍不同國家地區(qū)的計劃。不同國家地區(qū)有更多的安全合規(guī)要求,這也要求系統(tǒng)服務(wù)能響應(yīng)這些要求上云或下云。Serverless 只能跑在公有云就成為阻礙計劃的絆腳石。
Serverless 的按量計費(fèi)模式替代了傳統(tǒng)的包年包月,讓財務(wù)規(guī)劃異常困難。
按量計費(fèi)是典型的線性計費(fèi)模型,按照業(yè)務(wù)的實際用量,成本線性增長,這對于孵化期的業(yè)務(wù)是減少早期投入降低成本的好機(jī)制,但對于穩(wěn)定增長的業(yè)務(wù)來說,則是越來越重的成本負(fù)擔(dān),業(yè)務(wù)規(guī)模越大,成本越高,完全沒有收斂的意思,成本不再可控。
企業(yè)擁抱云原生,企業(yè)內(nèi)的開發(fā)者擁抱 Serverless,融合帶來完美平衡
Serverless 對一個上規(guī)模的企業(yè),引入的是管理、財務(wù)、基礎(chǔ)設(shè)施掌控等方面的問題。而我們回過頭來看,Serverless 對企業(yè)內(nèi)的開發(fā)者依然是最優(yōu)解。企業(yè)里的業(yè)務(wù)開發(fā)者也是開發(fā)者,他們專注在需求轉(zhuǎn)化為代碼這一過程中,不喜歡和機(jī)器、節(jié)點(diǎn)打交道。一個類似 Serverless 的資助開發(fā)平臺可以最大程度上幫助業(yè)務(wù)開發(fā)實現(xiàn)最高效率。
另一方面,隨著云原生的大發(fā)展,企業(yè)的用云體驗逐漸統(tǒng)一,k8s 成為事實上的標(biāo)準(zhǔn),每一個上規(guī)模的企業(yè)都在基于 k8s 底座實現(xiàn)著自己的管理、財務(wù)預(yù)算、基礎(chǔ)設(shè)施掌控等需求。這是云原生概念之于企業(yè)的最核心價值。
現(xiàn)在,我們思考的是,在當(dāng)下如何找到 Serverless 和企業(yè)的云原生訴求的結(jié)合點(diǎn),讓企業(yè)在基礎(chǔ)設(shè)施掌控度和業(yè)務(wù)高效開發(fā)之間找到一個平衡。因此騰訊云提出“云原生 Serverless ”理念,構(gòu)造了全新的 Serverless 產(chǎn)品形態(tài)騰訊云Serverless云函數(shù) SCF on K8s。
SCF on K8s 將 SCF 的開發(fā)工具棧和公有云資源池進(jìn)行解耦,讓 SCF 的整套能力可運(yùn)行在企業(yè)自己的 K8s 集群中,可完整復(fù)用企業(yè)已有資源。同時,SCF 完整兼容 k8s API 和 RBAC 權(quán)限體系,方便中臺團(tuán)隊快速集成 SCF 能力,無需重復(fù)對接。有了 SCF 能力,中臺團(tuán)隊也無需從頭構(gòu)建開發(fā)工具棧。
SCF on K8s 不僅讓企業(yè)內(nèi)的業(yè)務(wù)開發(fā)者擁有公有云 SCF 一樣的開發(fā)體驗,也讓中臺運(yùn)維團(tuán)隊可以從研發(fā)流程到資源管控到可觀測上管理 SCF,同時,跑在企業(yè)統(tǒng)一的 k8s 資源池中,讓財務(wù)預(yù)算工作也更好展開。
SCF on K8s可以滿足企業(yè)多樣的用云需求:從 0 到1階段的公有云彈性資源模式,讓企業(yè)快速試錯;從 1 到 100 階段的混合資源池模式,讓企業(yè)選擇最經(jīng)濟(jì)的方案,無需被公有云綁定,在自己的基礎(chǔ)設(shè)施上使用 Serverless。
? 統(tǒng)一的研效流程管理:業(yè)務(wù)開發(fā)者遵循研發(fā)審批流開發(fā)、測試、發(fā)布,全程都在中臺團(tuán)隊管控之下;
? 可控的資源 quota:業(yè)務(wù)開發(fā)者根據(jù)需要申請資源 quota,中臺團(tuán)隊通過 k8s 集群資源管控來進(jìn)行資源供給;
? 可觀測的 SCF:SCF 跑在 k8s 集群中,兼容 k8s 本身的PVC、服務(wù)發(fā)現(xiàn)、監(jiān)控日志機(jī)制
SCF on K8s 和公有云 SCF 的能力保持完全一致,業(yè)務(wù)開發(fā)者只需選擇自己熟悉的編程語言、IDE 完成代碼編寫,通過 SCF 命令行工具或中臺團(tuán)隊提供的發(fā)布流程完成代碼的發(fā)布,最后配置觸發(fā)器和 算力(CPU 或 GPU)即可。真正專注于業(yè)務(wù)需求實現(xiàn)。
在大型企業(yè)的研發(fā)模式中,微服務(wù)是占據(jù)主流的存在。不同業(yè)務(wù)開發(fā)各自的服務(wù)模塊,同時又能由服務(wù)發(fā)現(xiàn)、服務(wù)治理等中央服務(wù)實現(xiàn)統(tǒng)一管理。非常符合企業(yè)的統(tǒng)一納管,分而治之的理念。而微服務(wù)也存在過于復(fù)雜的問題,快速迭代的業(yè)務(wù)使用微服務(wù)體系,研發(fā)效率會偏低,一次發(fā)布需要半天對于敏捷研效是個巨大的挑戰(zhàn)。
SCF on K8s 可以和微服務(wù)體系實現(xiàn)補(bǔ)位,對于快速迭代的項目,可先采用 SCF 實現(xiàn)高效開發(fā),快速發(fā)布;待項目成熟后,再轉(zhuǎn)為微服務(wù)體系。微服務(wù)在在線場景上生態(tài)豐富,表現(xiàn)卓越,而對于近離線場景的數(shù)據(jù)處理、視頻轉(zhuǎn)碼等事件觸發(fā)型服務(wù),則可使用 SCF 實現(xiàn),不管是開發(fā)效率還是資源利用率都能更高。
SCF on K8s 支持配置資源配比,將 K8s 集群資源和公有云彈性資源搭配使用。在該模式下,函數(shù)請求優(yōu)先調(diào)度到 K8s 集群,函數(shù)調(diào)度層感知到 K8s 集群資源不足時調(diào)度回函數(shù)公有云資源池。如此以來,企業(yè)可根據(jù)業(yè)務(wù)實際請求量,配置一個打底的 K8s 集群滿足日常資源所需。同時,利用函數(shù)公有云資源池,響應(yīng)高峰期的溢出資源所需。在實現(xiàn)業(yè)務(wù)高可用的同時,實現(xiàn)最經(jīng)濟(jì)的云資源采購。
k8s 集群基于 Virtual Kubelet 抽取閑置資源,成為離線算力,將一部份低優(yōu)的任務(wù)調(diào)度過來,這些任務(wù)會在有資源供給時執(zhí)行。該方案不僅在業(yè)務(wù)調(diào)度層較為復(fù)雜,也存在挑業(yè)務(wù)的情況,需要業(yè)務(wù)能接受較長的等待時間,同時,低優(yōu)任務(wù)如果不及時釋放資源,又會反過來影響在線業(yè)務(wù)的資源供給。
K8s 而將 K8s 離線s 集群綁定到函數(shù)服務(wù),再開啟混合資源池,這些問題將迎刃而解——
? 不挑業(yè)務(wù):函數(shù)的主動調(diào)度機(jī)制在 k8s 離線資源有供給時立即調(diào)度任務(wù)執(zhí)行,沒有時及時調(diào)度回公有云資源池,保障任務(wù)始終可以執(zhí)行;
? 不影響在線業(yè)務(wù):函數(shù)的超時配置限制任務(wù)的最長執(zhí)行時間,執(zhí)行完或到了超時時間會立即釋放資源,最大程度保障在線業(yè)務(wù)的資源供給;
? 業(yè)務(wù)調(diào)度層簡單易用:只需要將任務(wù)發(fā)布為事件函數(shù),配置消息隊列、定時任務(wù)等觸發(fā)器,并打開混合資源池配置即可。
TKE容器服務(wù)在騰訊集團(tuán)內(nèi)部作為統(tǒng)一的應(yīng)用研發(fā)管理平臺,在標(biāo)準(zhǔn)的 k8s 能力之上,提供了跨集群、跨 zone 的容器資源調(diào)度管理能力和應(yīng)用維度的運(yùn)維治理能力,也是技術(shù)中臺的一種實現(xiàn),在過去的三年里很好的支撐了騰訊集團(tuán)業(yè)務(wù)全面上云。
騰訊云云函數(shù) SCF 作為 Serverless 的落地實現(xiàn),函數(shù) SCF 作為 Serverless 的落地實現(xiàn),在集團(tuán)內(nèi)部同樣深受業(yè)務(wù)開發(fā)同學(xué)的喜愛,例如大家熟悉的騰訊文檔、騰訊會議、騰訊地圖、企業(yè)微信等都有大量的服務(wù)是基于函數(shù)開發(fā)上線。
在具體的研發(fā)模式上,核心業(yè)務(wù)邏輯和重點(diǎn)的在線服務(wù)主要是用微服務(wù)架構(gòu)實現(xiàn),服務(wù)管理、流量管理、故障容錯和配置管理用北極星做了統(tǒng)一治理。函數(shù)主要用在以下幾個場景:
? 前端的 SSR 和 BFF 場景,例如騰訊文檔的表格、演示文檔的 SSR 用函數(shù)實現(xiàn);
? 近線數(shù)據(jù)處理場景,例如騰訊地圖的導(dǎo)航數(shù)據(jù)計算、地圖瓦片數(shù)據(jù)的計算等用函數(shù)實現(xiàn);
? 離線任務(wù)場景,例如運(yùn)維團(tuán)隊的定時巡檢任務(wù)和定時撥測任務(wù)、計費(fèi)團(tuán)隊的定時賬單匯算任務(wù)等用函數(shù)實現(xiàn)。
這些場景中,函數(shù)以其靈活高效且免運(yùn)維的開發(fā)體驗很好的支撐了業(yè)務(wù)發(fā)展。但獨(dú)立的按量計費(fèi)模型也給業(yè)務(wù)團(tuán)隊的財務(wù)預(yù)算帶來了挑戰(zhàn):不好預(yù)估項目的成本支出,業(yè)務(wù)增長帶來使用量上漲后,按量計費(fèi)的總費(fèi)用相比采買一批機(jī)器不夠劃算等,在集團(tuán)降本增效的大環(huán)境下,成為業(yè)務(wù)團(tuán)隊的一塊心病。
22 年 11 月,SCF on K8s 通過“任務(wù)中心”的產(chǎn)品形態(tài)集成到 TKE,拉通賬戶權(quán)限體系,兼容統(tǒng)一的發(fā)布審批流程和預(yù)算 quota 申領(lǐng)機(jī)制。
上線后,目前已經(jīng)有大量的 K8s job、cronjob 遷移到云函數(shù) SCF 任務(wù)平臺,不僅開發(fā)簡單,且在任務(wù)的響應(yīng)延遲等技術(shù)指標(biāo)上存在量級上的提升。
不少之前使用公有云函數(shù)實現(xiàn)的業(yè)務(wù)也遷移過來,兼容了 TKE 的 quota 申領(lǐng)機(jī)制,業(yè)務(wù)團(tuán)隊可以在傳統(tǒng)的函數(shù)按量計費(fèi)模式和批量采買容器作為函數(shù)的運(yùn)行資源池之間選擇。對于量級較大的業(yè)務(wù)來說,后者是控制成本的最佳措施,降本增效環(huán)境下的心病解除。
無可否認(rèn),Serverless 仍然是企業(yè)用云的終極理想形態(tài),只需關(guān)注核心業(yè)務(wù)邏輯,其它的一切交給算力供給方搞定,是精益經(jīng)營的經(jīng)濟(jì)體決勝于市場的基本邏輯。然而,這是一個漫長的進(jìn)化過程,參與其中的每一方都要發(fā)展,例如,Serverless 的函數(shù)粒度的開發(fā)模式,需要更優(yōu)秀的人才梯隊能夠?qū)I(yè)務(wù)需求拆解的更細(xì),而更細(xì)更多的模塊則又需要更強(qiáng)大的服務(wù)治理機(jī)制…… 類比到傳統(tǒng)制造業(yè),就是從工廠里的生產(chǎn)工序、流水線到上下游供應(yīng)鏈都要整體升級,最終才能達(dá)成工業(yè)革命。這需要一些時間,也許是 5 年,也許是 10 年或更久。
在我們抬頭仰望星空的同時,也要踏實走好腳下的每一步——如何讓企業(yè)用足夠小的代價換取最大的收益,是每個云廠商都要積極思考并探索解決的課題。從公有云 Serverless 到云原生 Serverless,也許部分廠商會認(rèn)為是一種退步,而也許恰恰相反,只要改變本身能解決多數(shù)企業(yè)的痛點(diǎn),為企業(yè)帶來真正的價值,4166am金沙它就是進(jìn)步的。
可以預(yù)計,隨著Serverless范式的逐漸完善,Serverless 終將跑在每一個基礎(chǔ)設(shè)施之上!