天天看點

Serverless 如何落地?揭秘阿裡核心業務大規模落地實作Serverless 落地之痛Serverless 的 雙11 “大考”阿裡雲如何擊破 Serverless 痛點?Serverless 引領下一個十年

Serverless 如何落地?揭秘阿裡核心業務大規模落地實作Serverless 落地之痛Serverless 的 雙11 “大考”阿裡雲如何擊破 Serverless 痛點?Serverless 引領下一個十年

來源|阿裡巴巴雲原生公衆号

2020 年,新冠肺炎疫情催化數字化生活方式漸成常态。在企業積極進行數字化轉型、全面提升效率的今天,幾乎無人否認背負“降本增效”使命誕生的 Serverless 即将成為雲時代新的計算範式。

Serverless 将開發者從繁重的手動資源管理和性能優化中解放出來,正在引發雲計算生産力的新變革。

然而,Serverless 的落地問題卻往往很棘手,例如傳統項目如何遷移到 Serverless,同時保障遷移過程業務連續性,在 Serverless 架構下如何提供完善的開發工具、有效的調試診斷工具,如何利用 Serverless 做更好的節約成本等,每一個都是難題。

尤其涉及到在主流場景大規模的落地 Serverless ,更是并非易事。正因為這樣,業界對于 Serverless 核心場景規模化落地最佳實踐的呼喚更加迫切。

總交易額 4982 億元,訂單建立峰值 58.3 萬筆/秒,2020 年天貓 雙11 又一次創造記錄。對于阿裡雲來說,今年的 雙11 還有另一個意義:阿裡雲實作了國内首例 Serverless 在核心業務場景下的大規模落地,扛住了全球最大規模的流量洪峰,創造了 Serverless 落地應用的裡程碑。

Serverless 落地之痛

挑戰一:冷啟動耗時長

快彈是 Serverless 天然自帶的屬性,但是快彈的條件是要有極緻的冷啟動速度去支撐。在非核心的業務上,毫秒級别的延時,對業務來說幾乎不受影響。但是,對于核心業務場景,延時超過 500 毫秒已經會影響到使用者體驗。

雖然 Serverless 利用輕量化的虛拟技術,不斷的降低冷啟動,甚至某些場景能降低到 200 毫秒以下。但這也隻是理想的獨立運作場景,在核心業務鍊路上,使用者不僅是運作自己的業務邏輯,還要依賴中間件、資料庫、存儲等後端服務,這些服務的連接配接都要在執行個體啟動的時候進行建連,這無形中加大了冷啟動的時間,進而把冷啟動的時間加長到秒級别。

對于核心線上業務場景來說,秒級别的冷啟動是不可接受的。

挑戰二:與研發流程割裂

Serverless 主打的場景是像寫業務函數一樣去寫業務代碼,簡單快速即可上線,讓開發者在雲上寫代碼,輕松完成上線。

然而在現實中,核心業務的要求把開發者從雲上拉回到現實,面對幾個靈魂拷問:如何做測試?如何灰階上線?如何做業務的容災?如何控制權限?

當開發者回答完了這些問題,就會變的心灰意冷,原來在核心業務上線中,“函數正常運作”隻占了小小的一環,離上線的距離還有長江那麼長。

挑戰三:中間件的連通問題

核心線上業務不是獨立函數孤立運作的,需要連接配接存儲、中間件、資料中背景服務,擷取資料後再計算,進而輸出傳回給使用者。

傳統中間件用戶端需要打通和客戶的網絡、初始化建連等一系列操作,往往會使函數啟動速度下降很多。

Serverless 場景下執行個體生命周期短、數量多,會導緻頻繁建連、連接配接數多的問題,是以針對線上核心應用常用的中間件的用戶端進行網絡連通優化,同時對調用鍊路進行監控資料打通,幫助 SRE (Site Reliability Engineer )從業者更好的評估函數的下遊中間件依賴情況,對于核心應用遷移上 Serverless 非常重要。

挑戰四:可觀測性差

使用者大多數的核心業務應用多采用微服務架構,看核心業務應用的問題也就會帶有微服務的特性,比如使用者需要對業務系統的各種名額進行非常詳盡的檢查,不僅需要檢查業務名額,還需要檢查業務所在系統的資源名額,但是在 Serverless 場景中沒有機器資源的概念,那這些名額如何透出?是否隻透出請求的錯誤率和并發度,就可以滿足業務方的需求?

實際上,業務方的需求遠不止這些。可觀測性做的好壞還是源于業務方是否信任你的技術平台。做好可觀測性是赢得使用者信任的重要前提。

挑戰五:遠端調試難度高

當核心業務出現線上問題時,需要立即進入調查,而調查的第一要素就是:現場的保留,然後登陸進行調試。而在 Serverless 場景中沒有機器層面的概念,是以如果使用者想登陸機器,在現有的 Serverless 基礎技術之上是很難做到的。當然原因不僅限于此,比如 Vendor-lockin 的擔心等。

上面幾大類痛點的概括,主要是針對開發者的開發體驗,對于實際的開發場景中,是否真的是"提效", 而不是新瓶裝舊酒。目前仍有大部分核心應用開發者對 Serverless 還是持有觀望狀态,當然也不乏一些質疑觀點,“FaaS 隻适合小業務場景以及非核心業務場景”。

Serverless 的 雙11 “大考”

2019 年 12 月咨詢公司 O'Reill 釋出 Serverless 使用調研中,已有 40% 的受訪者所在的組織采用了 Serverless。2020 年 10 月,中國資訊通信研究院釋出的《中國雲原生使用者調研報告》指出:“Serverless 技術顯著升溫,近 30% 的使用者已在生産環境中應用。”2020 年,越來越多企業選擇加入 Serverless 陣營,翹首以待更多 Serverless 規模化落地核心場景的案例。

面對 Serverless 開發者數量的穩步增長的現狀,阿裡巴巴年初就制定了“打造 Serverless 雙11”的政策,目的不隻是單純的去抗流量、打峰值,而是切實的降成本,提高資源使用率,通過 “雙11 技術煉金爐”把阿裡雲 Serverless 打造成更安全、更穩定、更友好的雲産品,幫助使用者實作更大的業務價值。

與過去 11 年的 雙11 都不同的是,繼去年天貓 雙11 核心系統上雲後,阿裡巴巴基于數字原生商業作業系統,實作了全面雲原生化,底層硬核技術更新帶來了澎湃動力和極緻效能。以支撐訂單建立峰值為例,每萬筆峰值交易的 IT 成本較四年前下降了 80%。Serverless 也迎來了首次在 雙11 核心場景下的規模化落地。

場景一:前端多場景

2020 年 雙11,阿裡巴巴集團前端全面擁抱雲原生 Serverless,淘系、飛豬、高德、CBU、ICBU、優酷、考拉等十數 BU ,共同落地了以 Node.js FaaS 線上服務架構為核心的雲端一體研發模式。

今年 雙11 在保障穩定性、高資源使用率的前提下,多 BU 的重點營銷導購場景實作了研發模式更新。前端 FaaS 支撐的雲端一體研發模式傳遞平均提效 38.89%。依托 Serverless 的便利性和可靠性,淘寶、天貓、飛豬等 雙11 會場頁面快捷落地 SSR 技術,提高了使用者頁面體驗,除了保障大促以外,日常彈性下也較以往減少 30% 計算成本。

場景二:個性化推薦場景

Serverless 天然的彈性伸縮能力,是“個性化推薦業務場景”選擇由 Serverless 實作的最重要原因,數以千計的異構應用運維成本一直是這個場景下的痛點。通過 Serverless 化進一步釋放運維,讓開發者專注于業務的算法創新。

目前這個場景的應用範圍越來越廣,已經覆寫了幾乎整個阿裡系 APP:淘寶,天貓,支付寶,優酷,飛豬等等,是以我們可以對機器資源使用率方面做更多的優化,通過智能化的排程,在峰值時的機器資源使用率達到了 60%。

Serverless 如何落地?揭秘阿裡核心業務大規模落地實作Serverless 落地之痛Serverless 的 雙11 “大考”阿裡雲如何擊破 Serverless 痛點?Serverless 引領下一個十年

場景三:中、背景場景

2020 年,世紀聯華 雙11 基于阿裡雲函數計算(FC)彈性擴容,在大促會場 SSR、線上商品秒殺、優惠券定點發放、行業導購、資料中台計算等多個場景進行應用,業務峰值 QPS 超過 2019 年 雙11 的 230%,研發效率傳遞提效超過 30%,彈性資源成本減少 40% 以上。

Serverless 如何落地?揭秘阿裡核心業務大規模落地實作Serverless 落地之痛Serverless 的 雙11 “大考”阿裡雲如何擊破 Serverless 痛點?Serverless 引領下一個十年

當然,适用于 Serverless 的場景還有很多,需要更多行業的開發者們共同豐富。總的來說,今年 FaaS 的成績單非常耀眼,在 雙11 大促中,不僅承接了部分核心業務,流量也突破新高,幫助業務扛住了百萬 QPS 的流量洪峰。

阿裡雲如何擊破 Serverless 痛點?

那麼,面對行業共有的 Serverless 落地之痛,阿裡雲是如何克服的呢?

1. 預留模式 + 按量模式消除冷啟動

在 2019 年的 Serverless 2.0 重大更新中,阿裡雲函數計算率先支援了預留模式,接着 AWS Lambda 幾個月後,也上線了類似的功能。

為什麼阿裡雲會率先提出這個問題?阿裡雲 Serverless 團隊不斷探索真實業務的需求,按量模式的按需付費模式,雖然非常的誘人,但是冷啟動時間過長,是以把核心線上業務拒之門外。接下來阿裡雲着重分析了核心線上業務的訴求:延時小,保證資源彈性。那如何解決呢?

請看下圖,一個非常典型的業務曲線圖,用預留模式方式滿足底部固定的量,用彈性能力去滿足 burst 的需求。

Serverless 如何落地?揭秘阿裡核心業務大規模落地實作Serverless 落地之痛Serverless 的 雙11 “大考”阿裡雲如何擊破 Serverless 痛點?Serverless 引領下一個十年

針對 burst 擴容,我們利用兩種擴容方式結合進行滿足:按資源擴容與按請求擴容,比如使用者可以隻設定 CPU 資源的擴容門檻值為 60%,當執行個體的 CPU 達到門檻值後,就會觸發擴容。此時的新請求并沒有立即到擴容執行個體,而是等待執行個體準備好後再導流,進而避免了冷啟動。

同理,如果隻設定了并發度名額的擴容門檻值為 30(每一個執行個體承載的并發度),同樣滿足這個條件後,也會觸發同樣流程的擴容。如果兩個名額都進行了設定,那麼先滿足的條件會先觸發擴容。

通過豐富的伸縮方式,阿裡雲函數計算解決了 Serverless 冷啟動的問題,很好的支撐了延時敏感業務。

2. 核心業務研發提效 38.89%

“提升效率”本應該是 Serverless 的優勢,但對于核心應用來說,"快" = "風險大",使用者需要經過 CI 測試,日常測試,預發測試,灰階部署等幾個流程驗證,才能確定函數的品質。這些流程是阻礙核心應用使用 FaaS 的絆腳石。

針對于這個問題,阿裡雲函數計算的政策是" 被內建“,把研發平台的優勢與阿裡雲函數計算進行結合,既能滿足使用者的 CI/CD 流程,又能享受到 Serverless 的紅利,幫使用者跨過使用 FaaS 的鴻溝。

阿裡集團内部通過暴露标準的 OpenAPI 與各個核心應用的研發平台進行內建,經過雙十一業務研發的驗證,研發效率大大提高了 38.89%。在公有雲上我們與雲效平台內建,把研發流程與 FaaS 結合的更緊密、更順暢,幫助集團外的業務提高人效。

Serverless 如何落地?揭秘阿裡核心業務大規模落地實作Serverless 落地之痛Serverless 的 雙11 “大考”阿裡雲如何擊破 Serverless 痛點?Serverless 引領下一個十年

3. 中間件連通

核心應用離不開上下遊的配合,一旦核心應用使用了函數計算,又該如何與中間件相配合?傳統應用開發需要內建各類中間件的 SDK,進行打包上線,但對于 Serverless 的函數來說,代碼包的大小就是一個硬傷,這個問題将将直接影響冷啟動的時間。

阿裡雲函數計算經過兩個階段的發展,第一個階段我們通過搭建中間件 Proxy,通過 Proxy 去打通中間件,函數隻用單一的協定與 Proxy 進行互動,進而 offload 掉中間件的 SDK 的包袱。

第二個階段:随着中間件能力的下沉,一些控制類型的需求也被提上了議程,比如:指令下發,流量管理,配置拉取等等,期間阿裡雲擁抱了開源元件 Dapr,利用 Sidecar 的方式 Offload 中間的互動成本。

上述的方案,是基于阿裡雲函數計算的 Custom Runtime,以及 Custom Container 功能完成的。

Serverless 如何落地?揭秘阿裡核心業務大規模落地實作Serverless 落地之痛Serverless 的 雙11 “大考”阿裡雲如何擊破 Serverless 痛點?Serverless 引領下一個十年

4. 極緻的開發體驗

遠端調試、日志檢視、鍊路追蹤、資源使用率,以及完善周邊工具鍊是開發者的必備能力。阿裡雲函數計算同時啟動了不同的攻關小組,首先與 Tracing/ARMS 結合,打造清晰的鍊路追能力,與 SLS 內建打造了全面的業務資料監控。

是以,業務可以根據需求進行自定義,并且擁抱開源産品 Prometheus 暴露出資源使用率,支援遠端調試能力的 WebIDE。

再加上阿裡雲近期剛開源的重磅武器:Serverless-devs ,一個無廠商綁定的、幫助開發者在 Serverless 架構下實作開發/運維效率翻倍的開發者工具。開發者可以簡單、快速的建立應用、項目開發、項目測試、釋出部署等,實作項目的全生命周期管理。

Serverless 如何落地?揭秘阿裡核心業務大規模落地實作Serverless 落地之痛Serverless 的 雙11 “大考”阿裡雲如何擊破 Serverless 痛點?Serverless 引領下一個十年

Serverless 初始的痛點有很多,為什麼阿裡雲卻能把 Serverless 落地到各行各業?

首先,阿裡雲提供了所有雲廠商中最完整的 Serverless 産品矩陣,包括函數計算 FC、Serverless 應用引擎 SAE、面向容器編排的 ASK、以及面向容器執行個體的 ECI。

豐富的産品矩陣能夠覆寫不同的場景,比如針對事件觸發場景,函數計算提供了豐富的事件源內建能力和百毫秒伸縮的極緻彈性;而針對微服務應用,Serverless 應用引擎能做到零代碼改造,讓微服務也能享受 Serverless 紅利。

其次, Serverless 是一個快速發展的領域,阿裡雲在不斷拓展 Serverless 的産品邊界。例如函數計算支援容器鏡像、預付費模式、執行個體内并發執行多請求等多個業界首創的功能,徹底解決了冷啟動帶來的性能毛刺等 Serverless 難題,大大拓展了函數計算的應用場景。

最後,阿裡經濟體擁有非常豐富的業務場景,可以進一步打磨 Serverless 的落地實踐。今年阿裡經濟體的淘系、考拉、飛豬、高德等多個 BU 的 雙11 核心業務場景均使用了阿裡雲函數計算,并順利扛住了 雙11 的高峰。 

Serverless 引領下一個十年

“勞動生産力的最大激進,以及運用勞動時所表現的更大熟練、技巧和判斷力,似乎都是勞動分工的結果” ,這是摘自《國富論》的一段話,強調的是“勞動分工”的利害關系,任何一個行業,市場規模越大,分工将會越細,這也是著名的“斯密定理”。

繼續閱讀