Serverless 如何落地?揭秘阿里核心业务大规模落地实现
來源|阿里巴巴云原生公眾號
2020 年,新冠肺炎疫情催化數(shù)字化生活方式漸成常態(tài)。在企業(yè)積極進(jìn)行數(shù)字化轉(zhuǎn)型、全面提升效率的今天,幾乎無人否認(rèn)背負(fù)“降本增效”使命誕生的 Serverless 即將成為云時代新的計(jì)算范式。
Serverless 將開發(fā)者從繁重的手動資源管理和性能優(yōu)化中解放出來,正在引發(fā)云計(jì)算生產(chǎn)力的新變革。
然而,Serverless 的落地問題卻往往很棘手,例如傳統(tǒng)項(xiàng)目如何遷移到 Serverless,同時保障遷移過程業(yè)務(wù)連續(xù)性,在 Serverless 架構(gòu)下如何提供完善的開發(fā)工具、有效的調(diào)試診斷工具,如何利用 Serverless 做更好的節(jié)約成本等,每一個都是難題。
尤其涉及到在主流場景大規(guī)模的落地 Serverless ,更是并非易事。正因?yàn)檫@樣,業(yè)界對于 Serverless 核心場景規(guī)模化落地最佳實(shí)踐的呼喚更加迫切。
總交易額 4982 億元,訂單創(chuàng)建峰值 58.3 萬筆/秒,2020 年天貓 雙11 又一次創(chuàng)造記錄。對于阿里云來說,今年的 雙11 還有另一個意義:阿里云實(shí)現(xiàn)了國內(nèi)首例 Serverless 在核心業(yè)務(wù)場景下的大規(guī)模落地,扛住了全球最大規(guī)模的流量洪峰,創(chuàng)造了 Serverless 落地應(yīng)用的里程碑。
Serverless 落地之痛
挑戰(zhàn)一:冷啟動耗時長
快彈是 Serverless 天然自帶的屬性,但是快彈的條件是要有極致的冷啟動速度去支撐。在非核心的業(yè)務(wù)上,毫秒級別的延時,對業(yè)務(wù)來說幾乎不受影響。但是,對于核心業(yè)務(wù)場景,延時超過 500 毫秒已經(jīng)會影響到用戶體驗(yàn)。
雖然 Serverless 利用輕量化的虛擬技術(shù),不斷的降低冷啟動,甚至某些場景能降低到 200 毫秒以下。但這也只是理想的獨(dú)立運(yùn)行場景,在核心業(yè)務(wù)鏈路上,用戶不僅是運(yùn)行自己的業(yè)務(wù)邏輯,還要依賴中間件、數(shù)據(jù)庫、存儲等后端服務(wù),這些服務(wù)的連接都要在實(shí)例啟動的時候進(jìn)行建連,這無形中加大了冷啟動的時間,進(jìn)而把冷啟動的時間加長到秒級別。
對于核心在線業(yè)務(wù)場景來說,秒級別的冷啟動是不可接受的。
挑戰(zhàn)二:與研發(fā)流程割裂
Serverless 主打的場景是像寫業(yè)務(wù)函數(shù)一樣去寫業(yè)務(wù)代碼,簡單快速即可上線,讓開發(fā)者在云上寫代碼,輕松完成上線。
然而在現(xiàn)實(shí)中,核心業(yè)務(wù)的要求把開發(fā)者從云上拉回到現(xiàn)實(shí),面對幾個靈魂拷問:如何做測試?如何灰度上線?如何做業(yè)務(wù)的容災(zāi)?如何控制權(quán)限?
當(dāng)開發(fā)者回答完了這些問題,就會變的心灰意冷,原來在核心業(yè)務(wù)上線中,“函數(shù)正常運(yùn)行”只占了小小的一環(huán),離上線的距離還有長江那么長。
挑戰(zhàn)三:中間件的連通問題
核心在線業(yè)務(wù)不是獨(dú)立函數(shù)孤立運(yùn)行的,需要連接存儲、中間件、數(shù)據(jù)中后臺服務(wù),獲取數(shù)據(jù)后再計(jì)算,進(jìn)而輸出返回給用戶。
傳統(tǒng)中間件客戶端需要打通和客戶的網(wǎng)絡(luò)、初始化建連等一系列操作,往往會使函數(shù)啟動速度下降很多。
Serverless 場景下實(shí)例生命周期短、數(shù)量多,會導(dǎo)致頻繁建連、連接數(shù)多的問題,因此針對在線核心應(yīng)用常用的中間件的客戶端進(jìn)行網(wǎng)絡(luò)連通優(yōu)化,同時對調(diào)用鏈路進(jìn)行監(jiān)控?cái)?shù)據(jù)打通,幫助 SRE (Site Reliability Engineer )從業(yè)者更好的評估函數(shù)的下游中間件依賴情況,對于核心應(yīng)用遷移上 Serverless 非常重要。
挑戰(zhàn)四:可觀測性差
用戶大多數(shù)的核心業(yè)務(wù)應(yīng)用多采用微服務(wù)架構(gòu),看核心業(yè)務(wù)應(yīng)用的問題也就會帶有微服務(wù)的特性,比如用戶需要對業(yè)務(wù)系統(tǒng)的各種指標(biāo)進(jìn)行非常詳盡的檢查,不僅需要檢查業(yè)務(wù)指標(biāo),還需要檢查業(yè)務(wù)所在系統(tǒng)的資源指標(biāo),但是在 Serverless 場景中沒有機(jī)器資源的概念,那這些指標(biāo)如何透出?是否只透出請求的錯誤率和并發(fā)度,就可以滿足業(yè)務(wù)方的需求?
實(shí)際上,業(yè)務(wù)方的需求遠(yuǎn)不止這些。可觀測性做的好壞還是源于業(yè)務(wù)方是否信任你的技術(shù)平臺。做好可觀測性是贏得用戶信任的重要前提。
挑戰(zhàn)五:遠(yuǎn)程調(diào)試難度高
當(dāng)核心業(yè)務(wù)出現(xiàn)線上問題時,需要立即進(jìn)入調(diào)查,而調(diào)查的第一要素就是:現(xiàn)場的保留,然后登陸進(jìn)行調(diào)試。而在 Serverless 場景中沒有機(jī)器層面的概念,所以如果用戶想登陸機(jī)器,在現(xiàn)有的 Serverless 基礎(chǔ)技術(shù)之上是很難做到的。當(dāng)然原因不僅限于此,比如 Vendor-lockin 的擔(dān)心等。
上面幾大類痛點(diǎn)的概括,主要是針對開發(fā)者的開發(fā)體驗(yàn),對于實(shí)際的開發(fā)場景中,是否真的是"提效", 而不是新瓶裝舊酒。目前仍有大部分核心應(yīng)用開發(fā)者對 Serverless 還是持有觀望狀態(tài),當(dāng)然也不乏一些質(zhì)疑觀點(diǎn),“FaaS 只適合小業(yè)務(wù)場景以及非核心業(yè)務(wù)場景”。
Serverless 的 雙11 “大考”
2019 年 12 月咨詢公司 O’Reill 發(fā)布 Serverless 使用調(diào)研中,已有 40% 的受訪者所在的組織采用了 Serverless。2020 年 10 月,中國信息通信研究院發(fā)布的《中國云原生用戶調(diào)研報(bào)告》指出:“Serverless 技術(shù)顯著升溫,近 30% 的用戶已在生產(chǎn)環(huán)境中應(yīng)用。”2020 年,越來越多企業(yè)選擇加入 Serverless 陣營,翹首以待更多 Serverless 規(guī)模化落地核心場景的案例。
面對 Serverless 開發(fā)者數(shù)量的穩(wěn)步增長的現(xiàn)狀,阿里巴巴年初就制定了“打造 Serverless 雙11”的策略,目的不只是單純的去抗流量、打峰值,而是切實(shí)的降成本,提高資源利用率,通過 “雙11 技術(shù)煉金爐”把阿里云 Serverless 打造成更安全、更穩(wěn)定、更友好的云產(chǎn)品,幫助用戶實(shí)現(xiàn)更大的業(yè)務(wù)價值。
與過去 11 年的 雙11 都不同的是,繼去年天貓 雙11 核心系統(tǒng)上云后,阿里巴巴基于數(shù)字原生商業(yè)操作系統(tǒng),實(shí)現(xiàn)了全面云原生化,底層硬核技術(shù)升級帶來了澎湃動力和極致效能。以支撐訂單創(chuàng)建峰值為例,每萬筆峰值交易的 IT 成本較四年前下降了 80%。Serverless 也迎來了首次在 雙11 核心場景下的規(guī)模化落地。
場景一:前端多場景
2020 年 雙11,阿里巴巴集團(tuán)前端全面擁抱云原生 Serverless,淘系、飛豬、高德、CBU、ICBU、優(yōu)酷、考拉等十?dāng)?shù) BU ,共同落地了以 Node.js FaaS 在線服務(wù)架構(gòu)為核心的云端一體研發(fā)模式。
今年 雙11 在保障穩(wěn)定性、高資源利用率的前提下,多 BU 的重點(diǎn)營銷導(dǎo)購場景實(shí)現(xiàn)了研發(fā)模式升級。前端 FaaS 支撐的云端一體研發(fā)模式交付平均提效 38.89%。依托 Serverless 的便利性和可靠性,淘寶、天貓、飛豬等 雙11 會場頁面快捷落地 SSR 技術(shù),提高了用戶頁面體驗(yàn),除了保障大促以外,日常彈性下也較以往減少 30% 計(jì)算成本。
場景二:個性化推薦場景
Serverless 天然的彈性伸縮能力,是“個性化推薦業(yè)務(wù)場景”選擇由 Serverless 實(shí)現(xiàn)的最重要原因,數(shù)以千計(jì)的異構(gòu)應(yīng)用運(yùn)維成本一直是這個場景下的痛點(diǎn)。通過 Serverless 化進(jìn)一步釋放運(yùn)維,讓開發(fā)者專注于業(yè)務(wù)的算法創(chuàng)新。
目前這個場景的應(yīng)用范圍越來越廣,已經(jīng)覆蓋了幾乎整個阿里系 APP:淘寶,天貓,支付寶,優(yōu)酷,飛豬等等,因此我們可以對機(jī)器資源利用率方面做更多的優(yōu)化,通過智能化的調(diào)度,在峰值時的機(jī)器資源利用率達(dá)到了 60%。
場景三:中、后臺場景
2020 年,世紀(jì)聯(lián)華 雙11 基于阿里云函數(shù)計(jì)算(FC)彈性擴(kuò)容,在大促會場 SSR、線上商品秒殺、優(yōu)惠券定點(diǎn)發(fā)放、行業(yè)導(dǎo)購、數(shù)據(jù)中臺計(jì)算等多個場景進(jìn)行應(yīng)用,業(yè)務(wù)峰值 QPS 超過 2019 年 雙11 的 230%,研發(fā)效率交付提效超過 30%,彈性資源成本減少 40% 以上。
當(dāng)然,適用于 Serverless 的場景還有很多,需要更多行業(yè)的開發(fā)者們共同豐富。總的來說,今年 FaaS 的成績單非常耀眼,在 雙11 大促中,不僅承接了部分核心業(yè)務(wù),流量也突破新高,幫助業(yè)務(wù)扛住了百萬 QPS 的流量洪峰。
阿里云如何擊破 Serverless 痛點(diǎn)?
那么,面對行業(yè)共有的 Serverless 落地之痛,阿里云是如何克服的呢?
1. 預(yù)留模式 + 按量模式消除冷啟動
在 2019 年的 Serverless 2.0 重大升級中,阿里云函數(shù)計(jì)算率先支持了預(yù)留模式,接著 AWS Lambda 幾個月后,也上線了類似的功能。
為什么阿里云會率先提出這個問題?阿里云 Serverless 團(tuán)隊(duì)不斷探索真實(shí)業(yè)務(wù)的需求,按量模式的按需付費(fèi)模式,雖然非常的誘人,但是冷啟動時間過長,因此把核心在線業(yè)務(wù)拒之門外。接下來阿里云著重分析了核心在線業(yè)務(wù)的訴求:延時小,保證資源彈性。那如何解決呢?
請看下圖,一個非常典型的業(yè)務(wù)曲線圖,用預(yù)留模式方式滿足底部固定的量,用彈性能力去滿足 burst 的需求。
針對 burst 擴(kuò)容,我們利用兩種擴(kuò)容方式結(jié)合進(jìn)行滿足:按資源擴(kuò)容與按請求擴(kuò)容,比如用戶可以只設(shè)置 CPU 資源的擴(kuò)容閾值為 60%,當(dāng)實(shí)例的 CPU 達(dá)到閾值后,就會觸發(fā)擴(kuò)容。此時的新請求并沒有立即到擴(kuò)容實(shí)例,而是等待實(shí)例準(zhǔn)備好后再導(dǎo)流,從而避免了冷啟動。
同理,如果只設(shè)置了并發(fā)度指標(biāo)的擴(kuò)容閾值為 30(每一個實(shí)例承載的并發(fā)度),同樣滿足這個條件后,也會觸發(fā)同樣流程的擴(kuò)容。如果兩個指標(biāo)都進(jìn)行了設(shè)置,那么先滿足的條件會先觸發(fā)擴(kuò)容。
通過豐富的伸縮方式,阿里云函數(shù)計(jì)算解決了 Serverless 冷啟動的問題,很好的支撐了延時敏感業(yè)務(wù)。
2. 核心業(yè)務(wù)研發(fā)提效 38.89%
“提升效率”本應(yīng)該是 Serverless 的優(yōu)勢,但對于核心應(yīng)用來說,“快” = “風(fēng)險大”,用戶需要經(jīng)過 CI 測試,日常測試,預(yù)發(fā)測試,灰度部署等幾個流程驗(yàn)證,才能確保函數(shù)的質(zhì)量。這些流程是阻礙核心應(yīng)用使用 FaaS 的絆腳石。
針對于這個問題,阿里云函數(shù)計(jì)算的策略是" 被集成“,把研發(fā)平臺的優(yōu)勢與阿里云函數(shù)計(jì)算進(jìn)行結(jié)合,既能滿足用戶的 CI/CD 流程,又能享受到 Serverless 的紅利,幫用戶跨過使用 FaaS 的鴻溝。
阿里集團(tuán)內(nèi)部通過暴露標(biāo)準(zhǔn)的 OpenAPI 與各個核心應(yīng)用的研發(fā)平臺進(jìn)行集成,經(jīng)過雙十一業(yè)務(wù)研發(fā)的驗(yàn)證,研發(fā)效率大大提高了 38.89%。在公有云上我們與云效平臺集成,把研發(fā)流程與 FaaS 結(jié)合的更緊密、更順暢,幫助集團(tuán)外的業(yè)務(wù)提高人效。
3. 中間件連通
核心應(yīng)用離不開上下游的配合,一旦核心應(yīng)用使用了函數(shù)計(jì)算,又該如何與中間件相配合?傳統(tǒng)應(yīng)用開發(fā)需要集成各類中間件的 SDK,進(jìn)行打包上線,但對于 Serverless 的函數(shù)來說,代碼包的大小就是一個硬傷,這個問題將將直接影響冷啟動的時間。
阿里云函數(shù)計(jì)算經(jīng)過兩個階段的發(fā)展,第一個階段我們通過搭建中間件 Proxy,通過 Proxy 去打通中間件,函數(shù)只用單一的協(xié)議與 Proxy 進(jìn)行交互,從而 offload 掉中間件的 SDK 的包袱。
第二個階段:隨著中間件能力的下沉,一些控制類型的需求也被提上了議程,比如:命令下發(fā),流量管理,配置拉取等等,期間阿里云擁抱了開源組件 Dapr,利用 Sidecar 的方式 Offload 中間的交互成本。
上述的方案,是基于阿里云函數(shù)計(jì)算的 Custom Runtime,以及 Custom Container 功能完成的。
4. 極致的開發(fā)體驗(yàn)
遠(yuǎn)程調(diào)試、日志查看、鏈路追蹤、資源利用率,以及完善周邊工具鏈?zhǔn)情_發(fā)者的必備能力。阿里云函數(shù)計(jì)算同時啟動了不同的攻關(guān)小組,首先與 Tracing/ARMS 結(jié)合,打造清晰的鏈路追能力,與 SLS 集成打造了全面的業(yè)務(wù)數(shù)據(jù)監(jiān)控。
因此,業(yè)務(wù)可以根據(jù)需求進(jìn)行自定義,并且擁抱開源產(chǎn)品 Prometheus 暴露出資源利用率,支持遠(yuǎn)程調(diào)試能力的 WebIDE。
再加上阿里云近期剛開源的重磅武器:Serverless-devs ,一個無廠商綁定的、幫助開發(fā)者在 Serverless 架構(gòu)下實(shí)現(xiàn)開發(fā)/運(yùn)維效率翻倍的開發(fā)者工具。開發(fā)者可以簡單、快速的創(chuàng)建應(yīng)用、項(xiàng)目開發(fā)、項(xiàng)目測試、發(fā)布部署等,實(shí)現(xiàn)項(xiàng)目的全生命周期管理。
Serverless 初始的痛點(diǎn)有很多,為什么阿里云卻能把 Serverless 落地到各行各業(yè)?
首先,阿里云提供了所有云廠商中最完整的 Serverless 產(chǎn)品矩陣,包括函數(shù)計(jì)算 FC、Serverless 應(yīng)用引擎 SAE、面向容器編排的 ASK、以及面向容器實(shí)例的 ECI。
豐富的產(chǎn)品矩陣能夠覆蓋不同的場景,比如針對事件觸發(fā)場景,函數(shù)計(jì)算提供了豐富的事件源集成能力和百毫秒伸縮的極致彈性;而針對微服務(wù)應(yīng)用,Serverless 應(yīng)用引擎能做到零代碼改造,讓微服務(wù)也能享受 Serverless 紅利。
其次, Serverless 是一個快速發(fā)展的領(lǐng)域,阿里云在不斷拓展 Serverless 的產(chǎn)品邊界。例如函數(shù)計(jì)算支持容器鏡像、預(yù)付費(fèi)模式、實(shí)例內(nèi)并發(fā)執(zhí)行多請求等多個業(yè)界首創(chuàng)的功能,徹底解決了冷啟動帶來的性能毛刺等 Serverless 難題,大大拓展了函數(shù)計(jì)算的應(yīng)用場景。
最后,阿里經(jīng)濟(jì)體擁有非常豐富的業(yè)務(wù)場景,可以進(jìn)一步打磨 Serverless 的落地實(shí)踐。今年阿里經(jīng)濟(jì)體的淘系、考拉、飛豬、高德等多個 BU 的 雙11 核心業(yè)務(wù)場景均使用了阿里云函數(shù)計(jì)算,并順利扛住了 雙11 的高峰。
Serverless 引領(lǐng)下一個十年
“勞動生產(chǎn)力的最大激進(jìn),以及運(yùn)用勞動時所表現(xiàn)的更大熟練、技巧和判斷力,似乎都是勞動分工的結(jié)果” ,這是摘自《國富論》的一段話,強(qiáng)調(diào)的是“勞動分工”的利害關(guān)系,任何一個行業(yè),市場規(guī)模越大,分工將會越細(xì),這也是著名的“斯密定理”。
同樣,這一定理也適用于軟件應(yīng)用市場行業(yè),隨著傳統(tǒng)行業(yè)進(jìn)入了互聯(lián)網(wǎng)化階段,市場規(guī)模越來越大,勞動分工越來越細(xì),物理機(jī)托管時代已經(jīng)成為了歷史,被成熟的 IaaS 層取代,隨之而來的是容器服務(wù),目前也已經(jīng)是行業(yè)的標(biāo)配。
那么,接下來的技術(shù)十年是什么呢?答案是:Serverless,抹平了研發(fā)人員在預(yù)算、運(yùn)維經(jīng)驗(yàn)上的不足,在對抗業(yè)務(wù)洪峰的情況下,絕大多數(shù)研發(fā)也能輕易掌控處理,不僅極大地降低了研發(fā)技術(shù)門檻,同時大規(guī)模提升了研發(fā)效率,線上預(yù)警、流量觀測等工具一應(yīng)俱全,輕松做到了技術(shù)研發(fā)的免運(yùn)維,可以說 Serverless 是更細(xì)粒度的分工,讓業(yè)務(wù)開發(fā)者不再關(guān)注底層運(yùn)維,只關(guān)注于業(yè)務(wù)創(chuàng)新,以此大大提高了勞動生產(chǎn)力,這就是“斯密定理”效應(yīng),也是 Serverless 成為未來必然趨勢的內(nèi)在原因。
當(dāng)下,整個云的產(chǎn)品體系已經(jīng) Serverless 化,70% 以上的產(chǎn)品都是 Serverless 形態(tài)。對象存儲、消息中間件、API 網(wǎng)關(guān)、表格存儲等 Serverless 產(chǎn)品已經(jīng)被廣大開發(fā)者熟知。下一個十年, Serverless 將重新定義云的編程模型,重塑企業(yè)創(chuàng)新的方式。
課程推薦
為了更多開發(fā)者能夠享受到 Serverless 帶來的紅利,這一次,我們集結(jié)了 10+ 位阿里巴巴 Serverless 領(lǐng)域技術(shù)專家,打造出最適合開發(fā)者入門的 Serverless 公開課,讓你即學(xué)即用,輕松擁抱云計(jì)算的新范式——Serverless。
點(diǎn)擊即可免費(fèi)觀看課程:https://developer.aliyun.com/learning/roadmap/serverless
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的Serverless 如何落地?揭秘阿里核心业务大规模落地实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Github 2020 年度报告:你以为
- 下一篇: 分布式事务框架 seata-golang